Performing DFU with nRF Connect v1.8 Fails to Switch from App to Bootloader - Worked on 1.7.5

aa-syd gravatar image

asked 2017-10-16 09:50:19 +0100

updated 2017-10-17 00:31:05 +0100

Since upgrading to nRF Connect on my IOS device the DFU won't reconnect to the BLE in the boot-loader after initiation from the application.

The device will migrate to the boot-loader and begin advertising but nRF connect doesn't seem to find it when attempting to reconnect. In the scanner both the application and boot-loader show. DFU can then be performed by connecting to the boot-loader.

Using nRF Connect 1.7.5 I was able to switch between application and boot-loader seamlessly (and autonomously) when performing DFU. I'm running S110 and SDK10.

Any help would be great.

The application section of the dfu came from the ble_hrs example and the bootloader is from the ble_dfu example. The other services are similar to the gls example. (gls, bas, dis).

nRF Connect log file:

09:01:24.340 Connecting Ble_gls
09:01:24.340 [MethodCall]connectPeripheral
09:01:27.165 [Callback]Successful connect to peripheral Ble_gls
09:01:27.165 Status changed: Connected to Ble_gls
09:01:27.624 [Callback]Successful discover service 1808
09:01:27.624 [Callback]Successful discover service 180F
09:01:27.625 [Callback]Successful discover service 180A
09:01:27.626 [Callback]Successful discover service 00001530-1212-EFDE-1523-785FEABCD123
09:01:27.742 [Callback]Successful discover charact. for service 1808
09:01:27.743 [MethodCall]readCharacteristicValue 2A18
09:01:27.743 [MethodCall]discoverDescriptorsForCharact. 2A18
09:01:27.743 [Callback]Successful discover charact. for service 1808
09:01:27.743 [MethodCall]readCharacteristicValue 2A51
09:01:27.743 [MethodCall]discoverDescriptorsForCharact. 2A51
09:01:27.744 [Callback]Successful discover charact. for service 1808
09:01:27.744 [MethodCall]readCharacteristicValue 2A34
09:01:27.744 [MethodCall]discoverDescriptorsForCharact. 2A34
09:01:27.744 [Callback]Successful discover charact. for service 1808
09:01:27.744 [MethodCall]readCharacteristicValue 2A52
09:01:27.744 [MethodCall]discoverDescriptorsForCharact. 2A52
09:01:27.809 [Callback]Successful discover charact. for service 180F
09:01:27.809 [MethodCall]readCharacteristicValue 2A19
09:01:27.809 [MethodCall]discoverDescriptorsForCharact. 2A19
09:01:27.922 [Callback]Successful discover charact. for service 180A
09:01:27.923 [MethodCall]readCharacteristicValue 2A29
09:01:27.923 [MethodCall]discoverDescriptorsForCharact. 2A29
09:01:27.923 [Callback]Successful discover charact. for service 180A
09:01:27.923 [MethodCall]readCharacteristicValue 2A24
09:01:27.923 [MethodCall]discoverDescriptorsForCharact. 2A24
09:01:27.924 [Callback]Successful discover charact. for service 180A
09:01:27.924 [MethodCall]readCharacteristicValue 2A27
09:01:27.924 [MethodCall]discoverDescriptorsForCharact. 2A27
09:01:27.924 [Callback]Successful discover charact. for service 180A
09:01:27.924 [MethodCall]readCharacteristicValue 2A26
09:01:27.925 [MethodCall]discoverDescriptorsForCharact. 2A26
09:01:28.163 [Callback]Successful discover charact. for service 00001530-1212-EFDE-1523-785FEABCD123
09:01:28.164 [MethodCall]readCharacteristicValue 00001532-1212-EFDE-1523-785FEABCD123
09:01:28.164 [MethodCall]discoverDescriptorsForCharact. 00001532-1212-EFDE-1523-785FEABCD123
09:01:28.165 [Callback]Successful discover charact. for service 00001530-1212-EFDE-1523-785FEABCD123
09:01:28.165 [MethodCall]readCharacteristicValue 00001531-1212-EFDE-1523-785FEABCD123
09:01:28.165 [MethodCall]discoverDescriptorsForCharact. 00001531-1212-EFDE-1523-785FEABCD123
09:01:28.165 [Callback]Successful discover charact. for service 00001530-1212-EFDE-1523-785FEABCD123
09:01:28.166 [MethodCall]readCharacteristicValue 00001534-1212-EFDE-1523-785FEABCD123
09:01:28.166 [MethodCall]discoverDescriptorsForCharact. 00001534-1212-EFDE-1523-785FEABCD123
09:01:28.222 [System]Error update value for charact. 2A18 Reading is not permitted.
09:01:29.693 [Callback]Successful update value for charact. 2A51
09:01:29.843 [System]Error update value for charact. 2A34 Reading is not permitted.
09:01:29.963 [System]Error update value for charact. 2A52 Reading is not permitted.
09:01:30.083 [Callback]Successful update value for charact. 2A19
09:01:30.143 [Callback]Successful discover descriptors for charact. 2A19
09:01:30.203 [Callback]Successful update value for charact. 2A29
09:01:30.263 [Callback]Successful update value for charact. 2A24
09:01:30.324 [Callback]Successful update value for charact. 2A27
09:01:30.383 [Callback]Successful update value for charact. 2A26
09:01:30.443 [System]Error update value for charact. 00001532-1212-EFDE-1523-785FEABCD123 Reading is not permitted.
09:01:30.533 [System]Error update value for charact. 00001531-1212-EFDE-1523-785FEABCD123 Reading is not permitted.
09:01:30.653 [Callback]Successful update value for charact. 00001534-1212-EFDE-1523-785FEABCD123
09:01:30.833 [Callback]Successful update value for descriptor 2902
09:02:04.404 [MethodCall]cancelPeripheralConnection
09:02:04.564 [Callback]Successful disconnect from peripheral Ble_gls
09:02:04.565 Status changed: Disconnected from Ble_gls
09:02:15.706 [MethodCall]connectPeripheral
09:02:15.707 Connecting to Ble_gls...
09:02:15.707 centralManager.connect(peripheral, options: nil)
09:02:15.712 [Callback]State changed to Connecting
09:02:24.862 [Callback] Central Manager did connect peripheral
09:02:24.862 Connected to Ble_gls
09:02:24.863 Discovering services...
09:02:24.863 peripheral.discoverServices(nil)
09:02:25.379 Services discovered
09:02:25.380 Starting Legacy DFU...
09:02:25.382 Connected to Ble_gls
09:02:25.383 Services discovered
09:02:25.383 Legacy DFU Service found
09:02:25.384 Discovering characteristics in DFU Service...
09:02:25.385 peripheral.discoverCharacteristics(nil, for: 00001530-1212-EFDE-1523-785FEABCD123)
09:02:25.650 DFU characteristics discovered
09:02:25.651 Reading DFU Version number...
09:02:25.651 peripheral.readValue(00001534-1212-EFDE-1523-785FEABCD123)
09:02:25.709 Read Response received from 00001534-1212-EFDE-1523-785FEABCD123, value (0x): 0100
09:02:25.710 Version number read: 0.1
09:02:25.710 Enabling notifications for 00001531-1212-EFDE-1523-785FEABCD123...
09:02:25.711 peripheral.setNotifyValue(true, for: 00001531-1212-EFDE-1523-785FEABCD123)
09:02:25.718 [Callback]State changed to Starting
09:02:25.859 Notifications enabled for 00001531-1212-EFDE-1523-785FEABCD123
09:02:25.860 DFU Control Point notifications enabled
09:02:25.860 Application with buttonless update found
09:02:25.861 Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
09:02:25.862 peripheral.writeValue(0x0104, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
09:02:25.880 [Callback]State changed to Enabling DFU Mode
09:02:25.918 Data written to 00001531-1212-EFDE-1523-785FEABCD123
09:02:25.919 Jump to bootloader (Op Code = 1, Upload Mode = 4) request sent
09:02:26.148 [Callback] Central Manager did disconnect peripheral
09:02:26.148 Disconnected by the remote device
09:02:26.148 Connecting to Ble_gls...
09:02:26.149 centralManager.connect(peripheral, options: nil)
edit retag flag offensive close delete report spam


Could you post a log from the DFU here? You may get it by clicking the Share icon on the DFU screen. What you describe should work on 1.8 as well.

Aleksander Nowakowski ( 2017-10-16 10:47:18 +0100 )editconvert to answer

Please specify which type of firmware you are trying to upload. And attach your log file to us.

Jiajun ( 2017-10-16 11:38:11 +0100 )editconvert to answer

I am only trying to upload application firmware in single bank mode. Should this be a problem though if nRF Connect isn't managing to connect with the bootloader?

Alex ( 2017-10-17 00:33:42 +0100 )editconvert to answer

I just discovered that the bootloader is actually based on SDK8.1. After switching to the SDK10 bootloader example the update now works correctly with nRF Connect 1.8

Alex ( 2017-10-17 03:44:50 +0100 )editconvert to answer

Hmm.. this shouldn't matter. Dfu library should be compatible with all DFU versions.

Aleksander Nowakowski ( 2017-10-17 09:08:10 +0100 )editconvert to answer

1 answer

Sort by » oldest newest most voted
aa-syd gravatar image

answered 2017-10-17 03:47:55 +0100

Bootloader was based on SDK8.1 example. By changing to SDK10, nRF Connect was able to perform DFU as expected.

Doesn't really explain why, but a solution none the less.

edit flag offensive delete publish link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer. Do not ask a new question or reply to an answer here.

[hide preview]

User menu

    or sign up

Recent questions

Question Tools

1 follower


Asked: 2017-10-16 09:50:19 +0100

Seen: 69 times

Last updated: okt. 17 '17