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

DFU FW-Update with Intel Wireless Bluetooth

Hi there,
I have a problem with the bootloader from the RF5_SDK_11.0.0_89a8197 together with Intel Wireless Bluetooth chipset.
I use the softdevice s132_nrf52_2.0..1. I have to stay on this release.
The bootloader DFU update works well with Realtek or Logilink.
The FW update with these chips is in about 90 seconds done.
The Intel Wireless Bluetooth chip takes 216 seconds to do this. Anyway.
I increased the timeout to 300000 seconds (DFU_TIMEOUT_INTERVAL) .
In addition, the timeout is reset until the end using dfu_timer_restart().
The WDT is also reset. But none of this seems to be the problem.

With Intel, the DFU update is rarely carried out completely
, but most of the time it is canceled at an unpleasant place.

What I found with
Realtek or Logilink:


Do STORE 0000000000 <---- Sore Value in Bank 1
Do STORE 0000000000
BLE_DFU_VALIDATE <----- Validate Comand
dfu_timer_restart done
<----- Restart Timout

BLE_DFU_ACTIVATE_N_RESET <---- Activate and reset
dfu_timer_restart done    <----- Restart Timout

Erase BANK 0
0000000000
Swap BANK 1 to BANK 0
update_process ready
DFU_UPDATE_APP_COMPLETE <----- End off Comand
Activate and reset
Done <----- Last DFU Comunication to here app. in 90 sec
Now the bootloader starts the internal update from bank 1 to bank 0.

0000000000 <---- return value, clean up Bank0 / Pages
0000000000
*
*
*
0000000000
0000000000
Start Swap BANK 1 to BANK 0
Do STORE 0000000000 <---- return value, Swap BANK 1 to BANK0 / Pages
Do STORE 0000000000
*
*
*
Do STORE 0000000000
Do STORE 0000000000
Do STORE 0000000000
 BOOTLOADER_COMPLETE  <----- done, restart App  
App Start..
Everything went well, as expected.

And if not, it looks like this (Intel):
Do STORE 0000000000   <---- Sore Value in Bank 1
Do STORE 0000000000
BLE_DFU_VALIDATE <----- Validate Comand
dfu_timer_restart done
<----- Restart Timout

BLE_DFU_ACTIVATE_N_RESET <---- Activate and reset
dfu_timer_restart done    <----- Restart Timout

Erase BANK 0
0000000000
Swap BANK 1 to BANK 0
update_process ready
DFU_UPDATE_APP_COMPLETE <----- End off Comand
Activate and reset
Done <----- Last DFU Comunication in 216 sec.
Now the bootloader starts the internal update from bank 1 to bank 0.
0000000000 <---- return value clean up Bank0 / Pages 
0000000000
*
*
*
0000000000
0000000000
Start Swap BANK 1 to BANK 0
0000000000  <----- return value first Page

Now the bootloader is reset! I have no idea why this happens!

--> Dev Name xxx 7000 <---- Bootloader start, after Timeout, the bootloader tries to start the app, but it doesn't exist.

BLE_DFU_START_APP

App Start...


Does anyone have an idea what triggers the termination?

Regard and thanx for Your help.


Parents
  • Hi Hung
    you are right, I should have mentioned it. 
    Intel-BLE is built into my PC. The others are BLE-USB dongle. The OS is the last Win10. But that doesn't seem to be the problem.
    I think it's a timeout of 240 seconds somewhere. The nR52832 is restarted.
    The Intel BLE chip is only slower, so we're here at some timeout limit of 240 Sec.
    In my opinion, the data transmission and data check are finished and found to be good (always).
    The image is now in Bank1. The BLE connection is cleared down after "DFU_UPDATE_APP_COMPLETE"
    has been reported (after app. 216 seconds).Bank0 is now cleared. Then the image of Bank1 should be copied
    to Bank 0 and this rarely works with Intel.
    It always works with the other faster BLE dongles (app. 90sec).
    If it failed, I checked the banks with my Jlink. 
    Bank1 contains the complete new errorfree image,
    Bank0 is overwritten with 0xffff.


  • Could you please reply in normal text ? I'm not sure why it always has to be with some kind of formatting. 

    Which application do you run on your PC to use the Intel chip ? I assume you wrote your own DFU master ? 

    We need to debug the bootloader to see why it didn't copy the image from bank 1 to bank 0, if there was any reset occurred before the bank swap happened. 

    The code where the swapping happen is inside dfu_activate_app() ( I assume you are testing with DFU application only).
    The execution of the flash copy is occurred inside cmd_process() in pstorage_raw.c 

    Please try to test with very small image, just in case there is any timeout. 

    Have you modified anything with the bootloader? 

  • Hello Hang,
    Unfortunately, I've been busy with other things until now.
    I summarize my problem:
    For historical reasons, we use the nrF5 SDK 11. and the Softdevice132 2.0.1. The DFU boot loader (DualBank) used is from the SDK, which we have, of course, slightly modified (UUIDs and so on.).
    On the other hand there is a Win10 and our program that does the FW upload. I have now tested various Bluetooth dongels and PC. They all work, except for Intel (of course it works too). All other dongle need up to max. 90 seconds for the 77kB image upload. It is copied temp into bank 1. Then Bank0 is deleted and Bank1 is copied to Bank 0. Then the new start addresses are flashed. That works fine. The image copy from Bank1 to Bank0 is only carried out after the device has logged off with "everything OK". So there is no BT connection to the PC. CRC is no used ? It is always 0. Correct me if that's not true.
    But it's different with InteChip. It takes between 215 and 240 seconds to transfer the 77KB. Here the device also logs off with "all ok", then Bank0 is delete (it is empty! -> FFFFFF), then the device restarts.

    Strange! To me it feels like a hidden timout.

    I tried it with a smaller image, it behaved in the same way, so it does not depend on the size.
    I also made a diff between the two images of Bank1, which are the same between Intel u. CSR.
    It is just transmitted more slowly.
    Should I do other tests?


    FYI: The Intel driver in Windows is called
    "Intel (R) Wireless Bluetooth (R)",
    USB \ VID_8087 & PID_0025 & REV_0002

    I checked the timing with Nordic BLE-Sniffer and Wireshark

    If you look into the Intel part, there is always the Control Opcode: "LL_CHANNEL_MAP_REQ".
    Can that be the trigger of the fail?
    The CSR-Protocol does not have this. Everything else is the same apart from timing.


    ---------------------------------------------------------------------------------------------------------------------
    CSR8510 dongle
    ---------------------------------------------------------------------------------------------------------------------

    1807 68.492 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    1808 68.494 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    1809 68.742 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    1810 68.744 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    1811 68.747 cyber-bl_da:71:0c ce:0f:0c:93:a9:a5 LE LL 60 CONNECT_REQ
    1812 68.757 Master_0x090ac13f Slave_0x090ac13f LE LL 32 Control Opcode: LL_VERSION_IND
    1813 68.759 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1814 68.816 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1815 68.818 Slave_0x090ac13f Master_0x090ac13f LE LL 32 Control Opcode: LL_VERSION_IND
    1816 68.876 Master_0x090ac13f Slave_0x090ac13f LE LL 35 Control Opcode: LL_FEATURE_REQ
    1817 68.878 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1818 68.937 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1819 68.940 Slave_0x090ac13f Master_0x090ac13f LE LL 35 Control Opcode: LL_FEATURE_RSP
    1820 68.996 Master_0x090ac13f Slave_0x090ac13f ATT 33 Sent Exchange MTU Request, Client Rx MTU: 527
    1821 68.999 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1822 69.057 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1823 69.059 Slave_0x090ac13f Master_0x090ac13f ATT 33 Rcvd Exchange MTU Response, Server Rx MTU: 23
    1824 69.117 Master_0x090ac13f Slave_0x090ac13f ATT 33 Sent Read Request, Handle: 0x0013 (Unknown)
    1825 69.119 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1826 69.177 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1827 69.179 Slave_0x090ac13f Master_0x090ac13f ATT 33 Rcvd Read Response, Handle: 0x0013 (Unknown)
    1828 69.236 Master_0x090ac13f Slave_0x090ac13f ATT 33 Sent Read Request, Handle: 0x0013 (Unknown)
    1829 69.238 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1830 69.297 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1831 69.299 Slave_0x090ac13f Master_0x090ac13f ATT 33 Rcvd Read Response, Handle: 0x0013 (Unknown)
    1832 69.357 Master_0x090ac13f Slave_0x090ac13f ATT 35 Sent Write Request, Handle: 0x0011 (Unknown)
    1833 69.359 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1834 69.417 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1835 69.420 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0011 (Unknown)
    1836 69.477 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1837 69.479 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    1838 69.537 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    1839 69.539 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    .
    2612 92.756 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2613 92.757 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2614 92.817 Master_0x090ac13f Slave_0x090ac13f ATT 36 Sent Write Request, Handle: 0x0010 (Unknown)
    2615 92.821 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2616 92.877 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2617 92.881 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2618 92.937 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2619 92.938 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2620 92.998 Master_0x090ac13f Slave_0x090ac13f ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    2621 93.003 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2622 93.058 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2623 93.063 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2624 93.118 Master_0x090ac13f Slave_0x090ac13f ATT 45 Sent Write Command, Handle: 0x000e (Unknown)
    2625 93.120 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2626 93.177 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2627 93.183 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    .
    2612 92.756 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2613 92.757 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2614 92.817 Master_0x090ac13f Slave_0x090ac13f ATT 36 Sent Write Request, Handle: 0x0010 (Unknown)
    2615 92.821 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2616 92.877 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2617 92.881 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2618 92.937 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2619 92.938 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2620 92.998 Master_0x090ac13f Slave_0x090ac13f ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    2621 93.003 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2622 93.058 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2623 93.063 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2624 93.118 Master_0x090ac13f Slave_0x090ac13f ATT 45 Sent Write Command, Handle: 0x000e (Unknown)
    2625 93.120 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2626 93.177 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2627 93.183 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    .
    2652 94.084 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2653 94.138 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2654 94.144 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2655 94.197 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2656 94.256 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2657 94.258 Slave_0x090ac13f Master_0x090ac13f ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    2658 94.317 Master_0x090ac13f Slave_0x090ac13f ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    2659 94.321 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2660 94.377 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2661 94.381 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2662 94.439 Master_0x090ac13f Slave_0x090ac13f ATT 47 Sent Write Command, Handle: 0x000e (Unknown)
    2663 94.445 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2664 94.451 Master_0x090ac13f Slave_0x090ac13f ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    2665 94.457 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2666 94.497 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2667 94.501 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2668 94.504 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2669 94.508 Slave_0x090ac13f Master_0x090ac13f ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    2670 94.557 Master_0x090ac13f Slave_0x090ac13f ATT 34 Sent Write Request, Handle: 0x0010 (Unknown)
    2671 94.559 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2672 94.617 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    2673 94.618 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    2674 94.677 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    2675 94.679 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2676 94.680 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    2677 94.682 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2678 94.683 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    2679 94.684 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2680 94.685 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    2681 94.687 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    2682 94.688 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    2683 94.689 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    .
    .
    .
    5231 105.597 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5232 105.598 Slave_0x090ac13f Master_0x090ac13f ATT 38 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    5233 105.657 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5234 105.659 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5235 105.660 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5236 105.662 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5237 105.663 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5238 105.664 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5239 105.666 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5240 105.667 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5241 105.669 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5242 105.670 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5243 105.671 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5244 105.672 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5245 105.673 Master_0x090ac13f Slave_0x090ac13f ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    5246 105.674 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5247 105.675 Master_0x090ac13f Slave_0x090ac13f ATT 37 Sent Write Command, Handle: 0x000e (Unknown)
    5248 105.677 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5249 105.717 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5250 105.720 Slave_0x090ac13f Master_0x090ac13f ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    5251 105.777 Master_0x090ac13f Slave_0x090ac13f ATT 34 Sent Write Request, Handle: 0x0010 (Unknown)
    5252 105.779 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5253 105.837 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5254 105.839 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    5255 105.840 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5256 105.841 Slave_0x090ac13f Master_0x090ac13f ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    5257 105.897 Master_0x090ac13f Slave_0x090ac13f ATT 34 Sent Write Request, Handle: 0x0010 (Unknown)
    5258 105.900 Slave_0x090ac13f Master_0x090ac13f LE LL 26 Empty PDU
    5259 105.957 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5260 105.960 Slave_0x090ac13f Master_0x090ac13f ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    5261 106.017 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5262 106.020 Slave_0x090ac13f Master_0x090ac13f LE LL 28 Control Opcode: LL_TERMINATE_IND
    5263 106.077 Master_0x090ac13f Slave_0x090ac13f LE LL 26 Empty PDU
    5264 106.525 ce:0f:0c:93:a9:a5 Broadcast LE LL 48 ADV_IND
    5265 106.530 ce:0f:0c:93:a9:a5 Broadcast LE LL 48 ADV_IND
    5266 106.537 ce:0f:0c:93:a9:a5 Broadcast LE LL 48 ADV_IND

    --------------------------------------------------------------------------------------------------------------
    Intel Bluetooth
    --------------------------------------------------------------------------------------------------------------

    77 5.375 ce:0f:0c:93:a9:a5 Broadcast LE LL 32 SCAN_RSP
    78 5.378 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    79 5.381 IntelCor_ff:c3:b3 ce:0f:0c:93:a9:a5 LE LL 60 CONNECT_REQ
    80 5.383 Master_0x4b6e288a Slave_0x4b6e288a LE LL 35 Control Opcode: LL_FEATURE_REQ
    81 5.385 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    82 5.387 Master_0x4b6e288a Slave_0x4b6e288a ATT 33 Sent Exchange MTU Request, Client Rx MTU: 527
    83 5.389 Master_0x4b6e288a Slave_0x4b6e288a ATT 33 Sent Exchange MTU Request, Client Rx MTU: 527
    84 5.392 Slave_0x4b6e288a Master_0x4b6e288a LE LL 35 Control Opcode: LL_FEATURE_RSP
    85 5.394 Master_0x4b6e288a Slave_0x4b6e288a LE LL 35 Control Opcode: LL_LENGTH_REQ
    86 5.396 Slave_0x4b6e288a Master_0x4b6e288a ATT 33 Rcvd Exchange MTU Response, Server Rx MTU: 23
    87 5.400 Master_0x4b6e288a Slave_0x4b6e288a ATT 33 Sent Read Request, Handle: 0x0013 (Unknown)
    88 5.401 Slave_0x4b6e288a Master_0x4b6e288a LE LL 28 Control Opcode: LL_UNKNOWN_RSP
    89 5.407 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    90 5.408 Slave_0x4b6e288a Master_0x4b6e288a ATT 33 Rcvd Read Response, Handle: 0x0013 (Unknown)
    91 5.415 Master_0x4b6e288a Slave_0x4b6e288a ATT 33 Sent Read Request, Handle: 0x0013 (Unknown)
    92 5.416 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    93 5.422 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    94 5.423 Slave_0x4b6e288a Master_0x4b6e288a ATT 33 Rcvd Read Response, Handle: 0x0013 (Unknown)
    95 5.429 Master_0x4b6e288a Slave_0x4b6e288a ATT 35 Sent Write Request, Handle: 0x0011 (Unknown)
    96 5.430 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    97 5.436 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    98 5.438 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0011 (Unknown)
    99 5.444 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    100 5.445 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    101 5.451 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    102 5.452 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    103 5.459 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    104 5.460 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    105 5.466 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    106 5.467 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    107 5.474 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    108 5.475 Slave_0x4b6e288a Master_0x4b6e288a L2CAP 42 Connection Parameter Update Request
    109 5.482 Master_0x4b6e288a Slave_0x4b6e288a LE LL 38 Control Opcode: LL_CONNECTION_UPDATE_REQ
    110 5.483 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    111 5.485 Master_0x4b6e288a Slave_0x4b6e288a L2CAP 36 Connection Parameter Update Response (Accepted)
    112 5.489 Master_0x4b6e288a Slave_0x4b6e288a L2CAP 36 Connection Parameter Update Response (Accepted)
    113 5.490 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    114 5.496 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    115 5.497 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    116 5.504 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    117 5.505 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    118 5.511 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    119 5.512 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    120 5.519 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    121 5.520 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    122 5.526 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    .
    173 9.186 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    174 9.329 Master_0x4b6e288a Slave_0x4b6e288a LE LL 34 Control Opcode: LL_CHANNEL_MAP_REQ
    175 9.331 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    .
    217 12.482 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    218 12.630 Master_0x4b6e288a Slave_0x4b6e288a LE LL 34 Control Opcode: LL_CHANNEL_MAP_REQ
    219 12.632 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    .
    341 21.787 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    342 21.930 Master_0x4b6e288a Slave_0x4b6e288a LE LL 34 Control Opcode: LL_CHANNEL_MAP_REQ
    343 21.933 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    .
    495 33.338 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    496 33.482 Master_0x4b6e288a Slave_0x4b6e288a LE LL 34 Control Opcode: LL_CHANNEL_MAP_REQ
    497 33.487 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    .
    539 36.632 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    540 36.781 Master_0x4b6e288a Slave_0x4b6e288a LE LL 34 Control Opcode: LL_CHANNEL_MAP_REQ
    541 36.783 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    .
    729 50.885 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    730 51.032 Master_0x4b6e288a Slave_0x4b6e288a LE LL 34 Control Opcode: LL_CHANNEL_MAP_REQ
    731 51.036 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    .
    821 57.784 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    822 57.930 Master_0x4b6e288a Slave_0x4b6e288a ATT 36 Sent Write Request, Handle: 0x0010 (Unknown)
    823 57.932 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    824 58.081 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    825 58.084 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    826 58.230 Master_0x4b6e288a Slave_0x4b6e288a ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    827 58.232 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    828 58.380 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    829 58.382 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    830 58.531 Master_0x4b6e288a Slave_0x4b6e288a ATT 45 Sent Write Command, Handle: 0x000e (Unknown)
    831 58.533 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    832 58.680 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    833 58.682 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    834 58.831 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    835 58.834 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    836 58.980 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    837 58.984 Slave_0x4b6e288a Master_0x4b6e288a ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    838 59.131 Master_0x4b6e288a Slave_0x4b6e288a ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    839 59.132 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    840 59.282 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    841 59.289 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    842 59.431 Master_0x4b6e288a Slave_0x4b6e288a ATT 47 Sent Write Command, Handle: 0x000e (Unknown)
    843 59.433 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    844 59.582 Master_0x4b6e288a Slave_0x4b6e288a ATT 35 Sent Write Request, Handle: 0x0010 (Unknown)
    845 59.588 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    846 59.730 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    847 59.732 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    848 59.733 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    849 59.734 Slave_0x4b6e288a Master_0x4b6e288a ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    850 59.881 Master_0x4b6e288a Slave_0x4b6e288a ATT 34 Sent Write Request, Handle: 0x0010 (Unknown)
    851 59.884 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    852 60.032 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    853 60.040 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    854 60.181 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    855 60.185 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    856 60.189 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    857 60.191 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    858 60.193 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    859 60.195 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    860 60.333 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    861 60.343 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    862 60.351 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    863 60.358 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    864 60.361 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    865 60.365 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    866 60.482 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    867 60.485 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    868 60.489 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    .
    .
    .
    3293 125.139 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3294 125.283 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3295 125.286 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3296 125.289 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3297 125.292 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3298 125.295 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3299 125.298 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3300 125.433 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    3301 125.435 Slave_0x4b6e288a Master_0x4b6e288a ATT 38 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    3302 125.583 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3303 125.587 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3304 125.734 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3305 125.737 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3306 125.741 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3307 125.744 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3308 125.747 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3309 125.750 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3310 125.884 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3311 125.889 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3312 125.895 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3313 125.900 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3314 125.905 Master_0x4b6e288a Slave_0x4b6e288a ATT 53 Sent Write Command, Handle: 0x000e (Unknown)
    3315 125.908 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3316 126.032 Master_0x4b6e288a Slave_0x4b6e288a ATT 37 Sent Write Command, Handle: 0x000e (Unknown)
    3317 126.034 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3318 126.183 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    3319 126.183 Slave_0x4b6e288a Master_0x4b6e288a ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    3320 126.333 Master_0x4b6e288a Slave_0x4b6e288a ATT 34 Sent Write Request, Handle: 0x0010 (Unknown)
    3321 126.336 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3322 126.483 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    3323 126.487 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    3324 126.490 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    3325 126.493 Slave_0x4b6e288a Master_0x4b6e288a ATT 36 Rcvd Handle Value Notification, Handle: 0x0010 (Unknown)
    3326 126.632 Master_0x4b6e288a Slave_0x4b6e288a ATT 34 Sent Write Request, Handle: 0x0010 (Unknown)
    3327 126.636 Slave_0x4b6e288a Master_0x4b6e288a LE LL 26 Empty PDU
    3328 126.782 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    3329 126.785 Slave_0x4b6e288a Master_0x4b6e288a ATT 31 Rcvd Write Response, Handle: 0x0010 (Unknown)
    3330 126.933 Master_0x4b6e288a Slave_0x4b6e288a LE LL 26 Empty PDU
    3331 126.934 Slave_0x4b6e288a Master_0x4b6e288a LE LL 28 Control Opcode: LL_TERMINATE_IND
    3332 132.336 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    3333 132.338 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    3334 132.340 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    3335 132.596 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND
    3336 132.600 ce:0f:0c:93:a9:a5 Broadcast LE LL 55 ADV_IND

  • Next time please attach the log as a file instead of a long text like this it's very hard to read. 

    I'm not sure I understand what you meant by "So there is no BT connection to the PC. CRC is no used ? It is always 0. Correct me if that's not true."  Which Bluetooth connection you are talking about here ? CRC always used as it's part of the init packet that sent at the beginning of the DFU process. CRC may not be checked for booting process, but it's a different matter. 


    It's much easier to debug using the log in the bootloader instead of the log on the central side. 

    To be able to spot what cause the long delay, please try capture a sniffer trace.  And if you use small enough DFU image it would be quite easy to compare the trace to find the difference between the success and unsuccessful DFU. 

Reply
  • Next time please attach the log as a file instead of a long text like this it's very hard to read. 

    I'm not sure I understand what you meant by "So there is no BT connection to the PC. CRC is no used ? It is always 0. Correct me if that's not true."  Which Bluetooth connection you are talking about here ? CRC always used as it's part of the init packet that sent at the beginning of the DFU process. CRC may not be checked for booting process, but it's a different matter. 


    It's much easier to debug using the log in the bootloader instead of the log on the central side. 

    To be able to spot what cause the long delay, please try capture a sniffer trace.  And if you use small enough DFU image it would be quite easy to compare the trace to find the difference between the success and unsuccessful DFU. 

Children
  • Hello.
    "So there is no BT connection to the PC"
    means the ble-device has logged off the PC before the bank1 is copied into the bank0.


    Yes, exactly. CRC is transmitted but not checked.


    Btw. I use exactly nrfutil0.5.3 and the nRF5_SDK_11.0.0_89a8197.

    Here are the logs


    IntelBluetooth.pcapng.gzCSR8510 A10.pcapng.gz

  • From what I can see in the trace, the reason the Intel's DFU process was slower because: 

    1 - Connection interval was 150ms vs 60ms on the CSR chip.

    2 - There are only 3 packets per connection event compare to 8 packets on the CSR. 

    On number 2, I don't think we can do anything about that, it's the limitation on the intel chip, unless you know how to change it. 

    On number 1. You can modify the bootloader to send a connection parameter request (sd_ble_gap_conn_param_update)  to reduce the connection interval, you can try as low as 7.5ms. I don't know which value will be accepted by the Intel chip. 

    Note that CRC is always checked before the image is swapped.

Related