This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF51822 not resetting after DFU bootloader+softdevice

Hello,

This is related to a previous post, but now with new information and a more specific issue to resolve.

We have product in the field based on RF Digital's Simblee BLE module, which uses nRF51822 revision 3. All modules have Simblee's custom DFU bootloader, SoftDevice S110 v8.0.0 and our application flashed and working. Our application was developed using the Simblee library which hides much of the complexity of BLE, including legacy buttonless DFU.

We need to transition from the proprietary Simblee Library and bootloader to our own bootloader and an application developed with Nordic SDK 12.3, still using SoftDevice S110 v8.0.0. Our own bootloader is essentially the dual_bank_ble_s110 dfu bootloader example of SDK 10.0. Using an nRF51 dev kit, I can program our bootloader and S110, then I can DFU images of bootloader+S110 and our new application using nRF Connect (iOS). I use nrfutil v0.5.2 to generate the zip files for legacy DFU. All works well.

Ultimately we will be using DFU over BLE to update to our bootloader, S110 and our new application. I understand that this is done in two steps: 1) bootloader+S110, 2) application. If I program the DK with Simblee's proprietary bootloader and S110, when I then DFU an image that contains our bootloader+S110, following the transfer of the image, the DK does not reset. I have to manually reset the DK so that our bootloader runs and can then proceed with DFU of our application. This complicates the update process for our customers because they will be required to turn off and back on the device following transfer of the bootloader+S110 so that transfer of our application can proceed.

I'm noticing the same behaviour when using a Simblee module programmed via the nRF51 DK.

Any ideas why the module does not reset and run the bootloader following DFU of bootloader+S110? I've attached the custom Simblee bootloader (ota_bootloader_dual_bank.hex).

Many thanks,

Tim

ota_bootloader_dual_bank.hex

  • Hi,

    I find it difficult to make specific advice, as I do not know in what way the Simblee bootloader differs from the SDK bootloader. Do you have the source code of the bootloader?

    Based on what you write I understand the only thing that is missing is a reset, and that a manual reset causes the activation to complete. So it seems the only thing that is missing is the reset. Is there a problem with the DFU master not issuing the command to activate and reset? Do you have a log from the bootloader that shows more about what is (not) happening?

  • Thank you Einar.

    Unfortunately I do not have source for the Simblee bootloader. I cannot say for sure, but I think it was developed with Nordic SDK 10.

    A couple things I've noticed that are different from the SDK 10 bootloader:

    1 - It advertises only for a short time, around 20 seconds

    2 - It assumes the application flash address is 0x1F000 rather than the standard location 0x18000.

    Yes, DFU of our new bootloader+S110 to a device containing the Simblee bootloader+S110 works, but the device does not reset when complete. Here's the log from nRF Connect (iOS) of the DFU process:

    File Name: bl2+sd.zip
    Parts: 1
    Size: Zero KB
    Soft Device Size: 88 KB
    Bootloader Size: 14 KB
    Connecting to DfuTarg...
    centralManager.connect(peripheral, options: nil)
    [Callback] Central Manager did connect peripheral
    Connected to DfuTarg
    Discovering services...
    peripheral.discoverServices(nil)
    Services discovered
    Starting Legacy DFU...
    Connected to DfuTarg
    Services discovered
    Legacy DFU Service found
    Discovering characteristics in DFU Service...
    peripheral.discoverCharacteristics(nil, for: 00001530-1212-EFDE-1523-785FEABCD123)
    DFU characteristics discovered
    Reading DFU Version number...
    peripheral.readValue(00001534-1212-EFDE-1523-785FEABCD123)
    Read Response received from 00001534-1212-EFDE-1523-785FEABCD123, value (0x): 0600
    Version number read: 0.6
    Enabling notifications for 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.setNotifyValue(true, for: 00001531-1212-EFDE-1523-785FEABCD123)
    Notifications enabled for 00001531-1212-EFDE-1523-785FEABCD123
    DFU Control Point notifications enabled
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x0103, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    Writing image sizes (88344b, 14352b, 0b) to characteristic 00001532-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x185901001038000000000000, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse)
    Data written to 00001531-1212-EFDE-1523-785FEABCD123
    Start DFU (Op Code = 1, Upload Mode = 3) request sent
    Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100101
    Response (Op Code = 1, Status = 1) received
    Writing Initialize DFU Parameters...
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x0200, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    Writing to characteristic 00001532-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0xffffffffffff0000010064007dc7, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse)
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x0201, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    Data written to 00001531-1212-EFDE-1523-785FEABCD123
    Data written to 00001531-1212-EFDE-1523-785FEABCD123
    Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100201
    Response (Op Code = 2, Status = 1) received
    Initialize DFU Parameters completed
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x080c00, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    Data written to 00001531-1212-EFDE-1523-785FEABCD123
    Packet Receipt Notif Req (Op Code = 8, Value = 12) request sent
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x03, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    Data written to 00001531-1212-EFDE-1523-785FEABCD123
    Uploading firmware...
    Sending firmware to DFU Packet characteristic...
    Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100301
    Response (Op Code = 3, Status = 1) received
    Upload completed in 41.16 seconds
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x04, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    Data written to 00001531-1212-EFDE-1523-785FEABCD123
    Validate Firmware (Op Code = 4) request sent
    Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100401
    Response (Op Code = 4, Status = 1) received
    Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    peripheral.writeValue(0x05, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    [Callback] Central Manager did disconnect peripheral
    Disconnected by the remote device

    I am quite certain that our bootloader is not started following DFU because DfuTarg is not advertised. Also, I modified our bootloader to turn on all 4 LEDs of the nRF51 dev kit on startup and they do not light following DFU of bootloader+S110.

    Our iOS app will act as the DFU controller and uses Nordic's iOS-Pods-DFU-Library. Is there something that can be changed there that will force reset after successful DFU?

    Many thanks,

    Tim

  • Hi Tim,

    I see.

    Tim said:
    Our iOS app will act as the DFU controller and uses Nordic's iOS-Pods-DFU-Library. Is there something that can be changed there that will force reset after successful DFU?

    I don't think you can force it, but you could try to call activateAndReset() in the iPhone app using iOS-Pods-DFU-Library. That should be done already though, so I would not expect too much.

  • Thanks again Einar.

    Using iOS-Pods-DFU-Library logging, I found that when updating the bootloader and softdevice using the SDK 10 bootloader, following writing 0x05 (Response.activateAndReset) to characteristic 00001531-1212-EFDE-1523-785FEABCD123, peripheral.didWriteFor characteristic: is called, whereas when using the Simblee bootloader, it is not called. I suppose this is because the Simblee module resets before it's able to send the acknowledgement, and according to the source comments, this is okay. Still, though, a hard reset (power off/on or press reset button on the DK) is required for the module to start and run the new bootloader.

    Here's the log from iOS-Pods-DFU-Library for updating the bootloader, softdevice and application, which happens in two steps (bootloader+softdevice, then application). I've noted where manual reset is necessary for the application update to proceed.

    2020-09-01 23:17:27.137902-0600 myapp[1976:1843897] logging: [Callback] Central Manager did update state to: Powered ON
    2020-09-01 23:17:27.137939-0600 myapp[1976:1843897] logging: Connecting to mydevice...
    2020-09-01 23:17:27.137970-0600 myapp[1976:1843897] logging: centralManager.connect(peripheral, options: nil)
    2020-09-01 23:17:27.138206-0600 myapp[1976:1843897] logging: [Callback] Central Manager did connect peripheral
    2020-09-01 23:17:27.138218-0600 myapp[1976:1843897] logging: Connected to mydevice
    2020-09-01 23:17:27.138228-0600 myapp[1976:1843897] logging: Discovering services...
    2020-09-01 23:17:27.138236-0600 myapp[1976:1843897] logging: peripheral.discoverServices(nil)
    2020-09-01 23:17:27.139324-0600 myapp[1976:1843897] logging: Services discovered
    2020-09-01 23:17:27.139350-0600 myapp[1976:1843897] logging: Starting Legacy DFU...
    2020-09-01 23:17:27.139360-0600 myapp[1976:1843897] logging: Connected to mydevice
    2020-09-01 23:17:27.139369-0600 myapp[1976:1843897] logging: Services discovered
    2020-09-01 23:17:27.139377-0600 myapp[1976:1843897] logging: Legacy DFU Service found
    2020-09-01 23:17:27.139385-0600 myapp[1976:1843897] logging: Discovering characteristics in DFU Service...
    2020-09-01 23:17:27.139393-0600 myapp[1976:1843897] logging: peripheral.discoverCharacteristics(nil, for: 00001530-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:17:27.414661-0600 myapp[1976:1843897] logging: DFU characteristics discovered
    2020-09-01 23:17:27.414864-0600 myapp[1976:1843897] logging: Reading DFU Version number...
    2020-09-01 23:17:27.415173-0600 myapp[1976:1843897] logging: peripheral.readValue(00001534-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:17:27.465804-0600 myapp[1976:1843897] logging: Read Response received from 00001534-1212-EFDE-1523-785FEABCD123, value (0x): 0100
    2020-09-01 23:17:27.465973-0600 myapp[1976:1843897] logging: Version number read: 0.1
    2020-09-01 23:17:27.466301-0600 myapp[1976:1843897] logging: Enabling notifications for 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:27.466437-0600 myapp[1976:1843897] logging: peripheral.setNotifyValue(true, for: 00001531-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:17:27.584907-0600 myapp[1976:1843897] logging: Notifications enabled for 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:27.585265-0600 myapp[1976:1843897] logging: DFU Control Point notifications enabled
    2020-09-01 23:17:27.585446-0600 myapp[1976:1843897] logging: Application with buttonless update found
    2020-09-01 23:17:27.585587-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:27.585728-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0104, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:17:27.642666-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:27.642848-0600 myapp[1976:1843897] logging: Jump to bootloader (Op Code = 1, Upload Mode = 4) request sent
    2020-09-01 23:17:27.829784-0600 myapp[1976:1843897] logging: [Callback] Central Manager did disconnect peripheral
    2020-09-01 23:17:27.829927-0600 myapp[1976:1843897] logging: Disconnected by the remote device
    2020-09-01 23:17:27.830052-0600 myapp[1976:1843897] logging: Connecting to mydevice...
    2020-09-01 23:17:27.830176-0600 myapp[1976:1843897] logging: centralManager.connect(peripheral, options: nil)
    2020-09-01 23:17:28.271927-0600 myapp[1976:1843897] logging: [Callback] Central Manager did connect peripheral
    2020-09-01 23:17:28.272119-0600 myapp[1976:1843897] logging: Connected to mydevice
    2020-09-01 23:17:28.272251-0600 myapp[1976:1843897] logging: Discovering services...
    2020-09-01 23:17:28.272372-0600 myapp[1976:1843897] logging: peripheral.discoverServices([00001530-1212-EFDE-1523-785FEABCD123])
    2020-09-01 23:17:28.629846-0600 myapp[1976:1843897] logging: Services discovered
    2020-09-01 23:17:28.629964-0600 myapp[1976:1843897] logging: Legacy DFU Service found
    2020-09-01 23:17:28.630111-0600 myapp[1976:1843897] logging: Discovering characteristics in DFU Service...
    2020-09-01 23:17:28.630202-0600 myapp[1976:1843897] logging: peripheral.discoverCharacteristics(nil, for: 00001530-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:17:28.903771-0600 myapp[1976:1843897] logging: DFU characteristics discovered
    2020-09-01 23:17:28.903973-0600 myapp[1976:1843897] logging: Reading DFU Version number...
    2020-09-01 23:17:28.904390-0600 myapp[1976:1843897] logging: peripheral.readValue(00001534-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:17:28.960086-0600 myapp[1976:1843897] logging: Read Response received from 00001534-1212-EFDE-1523-785FEABCD123, value (0x): 0600
    2020-09-01 23:17:28.960308-0600 myapp[1976:1843897] logging: Version number read: 0.6
    2020-09-01 23:17:28.960452-0600 myapp[1976:1843897] logging: Enabling notifications for 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:28.960579-0600 myapp[1976:1843897] logging: peripheral.setNotifyValue(true, for: 00001531-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:17:29.082525-0600 myapp[1976:1843897] logging: Notifications enabled for 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:29.082775-0600 myapp[1976:1843897] logging: DFU Control Point notifications enabled
    2020-09-01 23:17:29.082908-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:29.083046-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0103, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:17:29.083170-0600 myapp[1976:1843897] logging: Writing image sizes (88344b, 14324b, 0b) to characteristic 00001532-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:29.083295-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x18590100f437000000000000, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse)
    2020-09-01 23:17:29.139042-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:29.139221-0600 myapp[1976:1843897] logging: Start DFU (Op Code = 1, Upload Mode = 3) request sent
    2020-09-01 23:17:32.233505-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100101
    2020-09-01 23:17:32.233748-0600 myapp[1976:1843897] logging: Response (Op Code = 1, Status = 1) received
    2020-09-01 23:17:32.233896-0600 myapp[1976:1843897] logging: Writing Initialize DFU Parameters...
    2020-09-01 23:17:32.234023-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:32.234166-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0200, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:17:32.234350-0600 myapp[1976:1843897] logging: Writing to characteristic 00001532-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:32.234477-0600 myapp[1976:1843897] logging: peripheral.writeValue(0xffffffffffff0000010064009c78, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse)
    2020-09-01 23:17:32.234601-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:32.234727-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0201, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:17:32.289118-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:32.349009-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:32.351180-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100201
    2020-09-01 23:17:32.351345-0600 myapp[1976:1843897] logging: Response (Op Code = 2, Status = 1) received
    2020-09-01 23:17:32.351544-0600 myapp[1976:1843897] logging: Initialize DFU Parameters completed
    2020-09-01 23:17:32.352644-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:32.352814-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x080200, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:17:32.410273-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:32.410485-0600 myapp[1976:1843897] logging: Packet Receipt Notif Req (Op Code = 8, Value = 2) request sent
    2020-09-01 23:17:32.410624-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:17:32.410770-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x03, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:17:32.470953-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:17:32.471134-0600 myapp[1976:1843897] logging: Uploading firmware...
    2020-09-01 23:17:32.471266-0600 myapp[1976:1843897] logging: Sending firmware to DFU Packet characteristic...
    2020-09-01 23:20:13.896620-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100301
    2020-09-01 23:20:13.896857-0600 myapp[1976:1843897] logging: Response (Op Code = 3, Status = 1) received
    2020-09-01 23:20:13.896998-0600 myapp[1976:1843897] logging: Upload completed in 161.43 seconds
    2020-09-01 23:20:13.897229-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:13.897446-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x04, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:13.954772-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:13.954944-0600 myapp[1976:1843897] logging: Validate Firmware (Op Code = 4) request sent
    2020-09-01 23:20:14.106887-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100401
    2020-09-01 23:20:14.107117-0600 myapp[1976:1843897] logging: Response (Op Code = 4, Status = 1) received
    2020-09-01 23:20:14.107299-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:14.107445-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x05, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:14.860410-0600 myapp[1976:1843897] logging: [Callback] Central Manager did disconnect peripheral
    2020-09-01 23:20:14.860514-0600 myapp[1976:1843897] logging: Disconnected by the remote device
    2020-09-01 23:20:14.860587-0600 myapp[1976:1843897] logging: Scanning for the DFU Bootloader...
    
    *** need to manually reset device at this point ***
    
    2020-09-01 23:20:33.995711-0600 myapp[1976:1843897] logging: DFU Bootloader found with name DfuTarg
    2020-09-01 23:20:33.995931-0600 myapp[1976:1843897] logging: Connecting to DfuTarg...
    2020-09-01 23:20:33.996074-0600 myapp[1976:1843897] logging: centralManager.connect(peripheral, options: nil)
    2020-09-01 23:20:34.258682-0600 myapp[1976:1843897] logging: [Callback] Central Manager did connect peripheral
    2020-09-01 23:20:34.258870-0600 myapp[1976:1843897] logging: Connected to DfuTarg
    2020-09-01 23:20:34.259003-0600 myapp[1976:1843897] logging: Discovering services...
    2020-09-01 23:20:34.259124-0600 myapp[1976:1843897] logging: peripheral.discoverServices([00001530-1212-EFDE-1523-785FEABCD123])
    2020-09-01 23:20:34.648986-0600 myapp[1976:1843897] logging: Services discovered
    2020-09-01 23:20:34.649168-0600 myapp[1976:1843897] logging: Legacy DFU Service found
    2020-09-01 23:20:34.649507-0600 myapp[1976:1843897] logging: Discovering characteristics in DFU Service...
    2020-09-01 23:20:34.649660-0600 myapp[1976:1843897] logging: peripheral.discoverCharacteristics(nil, for: 00001530-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:20:34.890468-0600 myapp[1976:1843897] logging: DFU characteristics discovered
    2020-09-01 23:20:34.890633-0600 myapp[1976:1843897] logging: Reading DFU Version number...
    2020-09-01 23:20:34.890972-0600 myapp[1976:1843897] logging: peripheral.readValue(00001534-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:20:34.948009-0600 myapp[1976:1843897] logging: Read Response received from 00001534-1212-EFDE-1523-785FEABCD123, value (0x): 0800
    2020-09-01 23:20:34.948184-0600 myapp[1976:1843897] logging: Version number read: 0.8
    2020-09-01 23:20:34.948329-0600 myapp[1976:1843897] logging: Enabling notifications for 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:34.948541-0600 myapp[1976:1843897] logging: peripheral.setNotifyValue(true, for: 00001531-1212-EFDE-1523-785FEABCD123)
    2020-09-01 23:20:35.070214-0600 myapp[1976:1843897] logging: Notifications enabled for 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:35.070452-0600 myapp[1976:1843897] logging: DFU Control Point notifications enabled
    2020-09-01 23:20:35.070601-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:35.070728-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0104, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:35.070852-0600 myapp[1976:1843897] logging: Writing image sizes (0b, 0b, 34832b) to characteristic 00001532-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:35.070979-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x000000000000000010880000, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse)
    2020-09-01 23:20:35.127029-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:35.127206-0600 myapp[1976:1843897] logging: Start DFU (Op Code = 1, Upload Mode = 4) request sent
    2020-09-01 23:20:37.321846-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100101
    2020-09-01 23:20:37.322083-0600 myapp[1976:1843897] logging: Response (Op Code = 1, Status = 1) received
    2020-09-01 23:20:37.322218-0600 myapp[1976:1843897] logging: Writing Initialize DFU Parameters...
    2020-09-01 23:20:37.322353-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:37.322478-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0200, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:37.322639-0600 myapp[1976:1843897] logging: Writing to characteristic 00001532-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:37.322777-0600 myapp[1976:1843897] logging: peripheral.writeValue(0xffffffffffff0000010064004f76, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse)
    2020-09-01 23:20:37.322925-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:37.323047-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x0201, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:37.376927-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:37.466841-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:37.469107-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100201
    2020-09-01 23:20:37.469279-0600 myapp[1976:1843897] logging: Response (Op Code = 2, Status = 1) received
    2020-09-01 23:20:37.469422-0600 myapp[1976:1843897] logging: Initialize DFU Parameters completed
    2020-09-01 23:20:37.469904-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:37.470071-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x080200, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:37.528298-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:37.528498-0600 myapp[1976:1843897] logging: Packet Receipt Notif Req (Op Code = 8, Value = 2) request sent
    2020-09-01 23:20:37.528633-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:20:37.529014-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x03, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:20:37.588529-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:20:37.588706-0600 myapp[1976:1843897] logging: Uploading firmware...
    2020-09-01 23:20:37.588837-0600 myapp[1976:1843897] logging: Sending firmware to DFU Packet characteristic...
    2020-09-01 23:21:32.005590-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100301
    2020-09-01 23:21:32.005704-0600 myapp[1976:1843897] logging: Response (Op Code = 3, Status = 1) received
    2020-09-01 23:21:32.005773-0600 myapp[1976:1843897] logging: Upload completed in 54.42 seconds
    2020-09-01 23:21:32.005945-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:21:32.006019-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x04, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:21:32.065398-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:21:32.065572-0600 myapp[1976:1843897] logging: Validate Firmware (Op Code = 4) request sent
    2020-09-01 23:21:32.096702-0600 myapp[1976:1843897] logging: Notification received from 00001531-1212-EFDE-1523-785FEABCD123, value (0x): 100401
    2020-09-01 23:21:32.096877-0600 myapp[1976:1843897] logging: Response (Op Code = 4, Status = 1) received
    2020-09-01 23:21:32.097027-0600 myapp[1976:1843897] logging: Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123...
    2020-09-01 23:21:32.097172-0600 myapp[1976:1843897] logging: peripheral.writeValue(0x05, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse)
    2020-09-01 23:21:32.155312-0600 myapp[1976:1843897] logging: Data written to 00001531-1212-EFDE-1523-785FEABCD123
    2020-09-01 23:21:32.155508-0600 myapp[1976:1843897] logging: Activate and Reset (Op Code = 5) request sent
    2020-09-01 23:21:32.341104-0600 myapp[1976:1843897] logging: [Callback] Central Manager did disconnect peripheral
    2020-09-01 23:21:32.341279-0600 myapp[1976:1843897] logging: Disconnected by the remote device
    2020-09-01 23:21:32.341538-0600 myapp[1976:1845196] [CoreBluetooth] XPC connection invalid

    Can we be certain that the issue lies in the Simblee bootloader not properly reseting following activation of the newly written image? Is it possible that the issue is with the SDK 10 bootloader not starting for some reason?

    If this cannot be solved, we'll accept that the update process to flash our SDK 10-based bootloader, along with softdevice 110 and a compatible application will require the user to turn the device off and on at the appropriate point in the process. We'll be sure our iOS app's UI instructs the user accordingly.

    Thanks for any thoughts, Einar.

    Tim

  • Hi Tim,

    I cannot say that it is impossible to solve this, but without having the exact bootloader code it is difficult to make more precise suggestions. Your workaround by making the user reset the device seems sensibel, though I understand it is not the first choice.

    Einar

Related