This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Soft device enable and disable - [DFU] disconnected by the remote device

Hello all

I am facing a very strange issue, already searched the forum but didnt find anything like it.

Okay so I can get DFU to work. For our custom application we have to disable the soft device for some time for sensor acquisitions and re enable it at a later time for OTA upgrades.

I simply use nrf_sdh_disable_request() to de initialize the soft device successfully, which it does.

I later re - enable soft device using the standard ble calls in example code:

ble_stack_init();
    peer_manager_init();
    gap_params_init();
    gatt_init();
    advertising_init();
    services_init_2();
    conn_params_init();   
     
    //Start execution.
    application_timers_start();
    advertising_start(erase_bonds);

BLE gets initialized successfully, device is advertised and connects to as well. The problem is in DFU. When I attempt DFU, it keeps getting stuck into trying to switch to bootloader, repeatedly giving
"[DFU] disconnected by the remote device"

The logs then try to open the firmware file again, re initiating the process but nothing happen. I have spend quite some time on this and hit a blocker. Any help is appreciated. There must be a step I am missing during re-enabling the soft device

  • Generally It shouldn't matter what phone you use, but sometimes it does, no devices are perfect. Please let me know if you experience the same behavior with the dongle.

    AliMahmood123 said:
    Also, what kind of timing issue it might be?

    It's hard to say. The disconnect during the transfer could be caused by drift on the LF clock (on either side of the link). A sniffer trace would likely provide some more clues.

  • Hey Vidar. Changing the phone worked. Thanks a lot! You have been of great help

  • However, once again I hope you don't mind. I am facing another problem with LESC + Bonding. I can't debug the application Disappointed

    So I have different copies of my project. DFU with and without bonding I can easily debug even when the application is changed by skipping the CRC check in the bootloader, it works!

    However, the same doesnt happen with Bonding + LESC. I spent a whole day today. Actually the code does start debugging but gets stuck on  SVCALL sd_softdevice_vector_table_base_set which is called inside  ble_dfu_buttonless_async_svci_init(). It's beyond me what is happening

    My thought is that I had to add a _crypto_start and _crypto_end symbol in linker script for nRF crypto to be properly enabled. These symbols were coming from the cc310.lib files. The same code works perfectly with flashing the hex file, but it doesnt work the same on debug. In fact I get block verification error on j-link when debugging

    Regarding why I need to debug urgently. I added NUS service and did some custom changes with the Bonding + LESC DFU. After that, upon DFU, before nrf_pwr_mgt_shutdown is hit, the system restarts automatically. I just wanted to know what's causing that even before shutdown

    So there I have two issues again Disappointed But hopefully these will be the last ones

  • Not enough information. Do you start the service twice? The lib should be able to restart the device into bootloader mode automatically if you use standard Nordic buttonless service and bootloader. You don't have to do it manually. Just start it when you are connected to your device, after that you may disconnect your app as the lib will take over the connection.
    Error 133 is common in older devices, what devices are you using?

  • AliMahmood123 said:
    However, the same doesnt happen with Bonding + LESC. I spent a whole day today. Actually the code does start debugging but gets stuck on  SVCALL sd_softdevice_vector_table_base_set which is called inside  ble_dfu_buttonless_async_svci_init(). It's beyond me what is happening

    Can you post a screenshot showing the call stack, disassembly, and register view when it hangs?

    AliMahmood123 said:
    In fact I get block verification error on j-link when debugging

    During debugging or when you try to flash the FW? Please post a screenshot of this as well.

Related