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

How to enter DFU mode with SR3v1.2

Hi, 

I'm tring to enter DFU mode by combo keys by KEY_COMBO_TWO_KEY_REGISTER().

In v1.1, I used m_pwr_mgmt_shutdown(M_PWR_MGMT_SHUTDOWN_TYPE_DFU) to enter DFU mode directly. 

Now it is not work anymore, and I  find that there is a function called  static void m_coms_ble_dfu_fs_evt_handler(nrf_fstorage_evt_t *p_evt) in M_coms_ble_dfu.c  references  nrf_pwm_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_DFU), and has some works before nrf_pwm_mgmt_shutdown(), I guess it is for buttonless dfu mode .

I want to ask 2 questions :

1. What is fstorage event handler: m_coms_ble_dfu_fs_evt_handler?  how can I use it properly? 

2. Can I use simpler way as before in sr3v1.1 to activate DFU instead of using m_coms_ble_dfu_fs_evt ? 

Thanks.

Ralph

  • Hi Ralph, 

    Yes, the SR3 application FW was present when I performed the DFU. Are you using the  SR3 application FW that you have modified or are you using the default example?

    The SR3 bootloader requires you to bond with the application in order to perform DFU, so make sure that you have done that prior to starting the DFU. 

    Did the error message show up in nRF Connect for Desktop /iOS/ Android? Or are you still using nRF Toolbox?

    Best regards

    Bjørn

  • Hi, Bjorn

    I use both : my own modified project base on example and default example.

    nRF Connect would bond it automatically when the device is in application mode, after entering DFU mode,I have to reconnect it, otherwise the DFU icon on the right corner won't show up.

    I use nRF Connect for Android cellphone, the error message doesn't show up in nRF connect but does in RTT viewer.

    Will changing the sections' boundary of the memory(APP,BL) cause the problem?

    Or nrfutil's parameters like bootloader version ,app version,etc ? 

  • I am not seeing any "Client did not have the Service Changed indication set to enabled.ERROR: BLE_ERROR_INVALID_CONN_HANDLE" in service_changed_send() in nrf_ble_dfu.c.  error message when performing DFU with nRF Connect for Android and monitoring the RTT log output

    No, changing the memory layout should not affect the Service Changed indication. Nor should the nrfutil parameters. 

    Which version of the nRF Connect app are you using? Could you try to use nRF Connect for Desktop as well and see if you get the same behaviour?

  • Hi, Bjorn 

    I borrow another Android smart phone from my colleague,and it works to upload my zip file.

    My Android smart phone's specification:

    Redmi 5 , Android 7.1.2  BT 4.2

    My colleague's specification:

    LG V10 , Android 5.1.1 BT 4.1 

    nRF CONNECT versions I guess are the same, I downloaded it last week, 

    he downloaded it today. 

  • OK, so the issue is only present on your phone i.e. Redmi 5, Android 7.1.2 supporting BT 4.2 and not your colleague's LG V10 , Android 5.1.1 supporting BT 4.1. 

    Could you print the m_conn_handle variable when you get the BLE_GAP_EVT_CONNECTED in ble_evt_handler() in nrf_ble_dfu.c after connecting with the Redmi phone and then print it again in service_changed_send() prior to calling sd_ble_gatts_service_changed? 

    I would like to see it the connection handle is changed in between these two calls. 

    Best regards

    Bjørn 

     

Related