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

DFU Bouttonless iOS 12

Hi

I have an issue with updating DFU by nRF Connect on iOS 12. I receive the error:

Created by: nRF Connect
OS version: 12.3.1
Hardware: iPhone 7 Plus
Client version: 1.8.8 (Build 12)
Generated at: 2019-08-13 02:21:16+02:00
--------------------------------------------------------------------
02:20:42.435 Connecting U
02:20:42.435 [MethodCall]connectPeripheral
02:20:42.769 [Callback]Successful connect to peripheral Uub
02:20:42.770 Status changed: Connected to U
02:20:43.208 [Callback]Successfully exchanged MTU 182 bytes if send without response
02:20:43.209 [Callback]Successfully exchanged MTU 512 bytes
02:20:44.418 [Callback]Successfully updated value for descriptor 2902
02:20:44.479 [Callback]Successfully updated value for descriptor 2902
02:20:44.538 [Callback]Successfully updated value for descriptor 2902
02:21:10.522 Connected to U
02:21:10.523 Services discovered
02:21:10.524 Starting Secure DFU...
02:21:10.525 Connected to U
02:21:10.525 Services discovered
02:21:10.525 Secure DFU Service found
02:21:10.526 Discovering characteristics in DFU Service...
02:21:10.526 peripheral.discoverCharacteristics(nil, for: FE59)
02:21:10.527 [Callback]State changed to Connecting
02:21:10.579 DFU characteristics discovered
02:21:10.580 Enabling indications for 8EC90003-F315-4F60-9FB8-838830DAEA50...
02:21:10.580 peripheral.setNotifyValue(true, for: 8EC90003-F315-4F60-9FB8-838830DAEA50)
02:21:10.594 [Callback]State changed to Starting
02:21:10.638 Indications enabled for 8EC90003-F315-4F60-9FB8-838830DAEA50
02:21:10.638 Buttonless DFU indications enabled
02:21:10.638 Application with buttonless update found
02:21:10.639 Trying setting bootloader name to Dfu35931
02:21:10.639 Writing to characteristic 8EC90003-F315-4F60-9FB8-838830DAEA50...
02:21:10.639 peripheral.writeValue(0x02084466753335393331, for: 8EC90003-F315-4F60-9FB8-838830DAEA50, type: .withResponse)
02:21:10.653 [Callback]State changed to Enabling DFU Mode
02:21:11.401 [Callback] Central Manager did disconnect peripheral
02:21:11.401 Disconnected by the remote device
02:21:11.405 Scanning for the DFU Bootloader...

Although it is working on Android without any problem.

I am using softdevice 6.1.1 and SDK 15.2.0

Parents Reply Children
  • I can connect and program with iOS for the first time.

    If I update the frimware it is what I recieve :

    <debug> nrf_dfu_ble: Freeing buffer 0x20005D54
    <debug> nrf_dfu_ble: Buffer 0x20005D54 acquired, len 192 (244)
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
    <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x0002AF40, src=0x20005D54, len=192 bytes), queue usage: 0
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_CRC_GET (data)
    <debug> nrf_dfu_req_handler: Offset:20480, CRC:0xDED02FA2
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> nrf_dfu_flash: Flash write success: addr=0x0002AF40, pending 0
    <debug> nrf_dfu_ble: Freeing buffer 0x20005D54
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_EXECUTE (data)
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> app: timer_stop (0x200057D0)
    <debug> app: timer_activate (0x200057D0)
    <debug> app: Shutting down transports (found: 1)
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_CREATE (data)
    <debug> nrf_dfu_flash: nrf_fstorage_erase(addr=0x0x0002B000, len=1 pages), queue usage: 0
    <debug> nrf_dfu_req_handler: Creating object with size: 4096. Offset: 0x00005000, CRC: 0xDED02FA2
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> nrf_dfu_ble: Buffer 0x20005D54 acquired, len 244 (244)
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
    <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x0002B000, src=0x20005D54, len=244 bytes), queue usage: 1
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> nrf_dfu_ble: Buffer 0x20005E48 acquired, len 244 (244)
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
    <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x0002B0F4, src=0x20005E48, len=244 bytes), queue usage: 2
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> nrf_dfu_flash: Flash erase success: addr=0x0002B000, pending 2
    <debug> nrf_dfu_flash: Flash write success: addr=0x0002B000, pending 1
    <debug> nrf_dfu_ble: Freeing buffer 0x20005D54
    <debug> nrf_dfu_flash: Flash write success: addr=0x0002B0F4, pending 0
    <debug> nrf_dfu_ble: Freeing buffer 0x20005E48
    <debug> nrf_dfu_ble: Buffer 0x20005E48 acquired, len 244 (244)
    <debug> nrf_dfu_req_handler: Handle NRF_DFU_OP_OBJECT_WRITE (data)
    <debug> nrf_dfu_flash: nrf_fstorage_write(addr=0x0002B1E8, src=0x20005E48, len=244 bytes), queue usage: 0
    <debug> nrf_dfu_req_handler: Request handling complete. Result: 0x1
    <debug> nrf_dfu_flash: Flash write success: addr=0x0002B1E8, pending 0

  • Is this all the log output you get from the bootloader? I cant see the initialization not the handling of the init packet etc. 

  • 00> <debug> nrf_ble_lesc: Initialized nrf_crypto.
    00> <debug> nrf_ble_lesc: Initialized nrf_ble_lesc.
    00> <debug> nrf_ble_lesc: Generating ECC key pair
    00> <info> app: U started.
    00> <info> app: Erase bonds!
    00> <info> peer_manager_handler: All peers deleted.
    00> <info> app: Fast advertising.
    00> <debug> nrf_ble_gatt: Requesting to update ATT MTU to 247 bytes on connection 0x0.
    00> <debug> nrf_ble_gatt: Updating data length to 251 on connection 0x0.
    00> <info> app: Connected.
    00> <debug> nrf_ble_gatt: ATT MTU updated to 185 bytes on connection 0x0 (response).
    00> <info> app: GATT ATT MTU on connection 0x0 changed to 185.
    00> <debug> nrf_ble_gatt: Data length updated to 251 on connection 0x0.
    00> <debug> nrf_ble_gatt: max_rx_octets: 251
    00> <debug> nrf_ble_gatt: max_tx_octets: 251
    00> <debug> nrf_ble_gatt: max_rx_time: 2120
    00> <debug> nrf_ble_gatt: max_tx_time: 2120
    00> <debug> nrf_ble_gatt: Peer on connection 0x0 requested a data length of 251 bytes.
    00> <debug> nrf_ble_gatt: Updating data length to 251 on connection 0x0.
    00> <debug> nrf_ble_gatt: Data length updated to 251 on connection 0x0.
    00> <debug> nrf_ble_gatt: max_rx_octets: 251
    00> <debug> nrf_ble_gatt: max_tx_octets: 251
    00> <debug> nrf_ble_gatt: max_rx_time: 2120
    00> <debug> nrf_ble_gatt: max_tx_time: 2120
    00> <info> app: Received indication state 1
    00> 

    It is what I recieve at the second time

  • I tried to upgrade sdk version to 15.3.0. I had some issues to flash the bootloader and I used nrfConnect and it is ok now.

    The issue is that after disconnecting, I find again the bootlaoder mode.

  • Ok, so after the update you are able to connect to the application, but as soon as you disconnect from the app, then the nRF device is resetting to bootloader mode?

Related