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

nRF91 firmware upgrade over BLE

Hi,

I am trying to do firmware upgrade of nRF91 over BLE using nRF52 on the nRF91-DK or Thingy91 board. They both have nRF91 and nRF52840 chips on them which are connected. 

As I understand from the documentation, at the moment, on Thingy91 board I can connect to the USB (which is connected to the nRF52) and upgrade the firmware on nRF91. This is also providing two UART ports, and the BLE UART service can be additionally enabled. Like in example: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/applications/connectivity_bridge/README.html

On the nRF91 side, nRF91 application would have to implement the UART management transport so it can be upgraded over UART and the nRF5x act as a bridge from BLE to UART
https://docs.zephyrproject.org/1.13.0/subsystems/mgmt.html

Is this a good way to go and do you have some experience doing this?

At the moment I have a bit different approach. I started with nRF52 app_ble_uart example and created the "UART bridge" between BLE device and nRF91. Next is to have nRF91 able to receive upgrade and probably write some application for PC/mobile deice to push the upgrade over UART. 

Let me know your thoughts and if you already have done something like this. 

Best regards,
Vojislav.

Parents
  • If I understand you correctly, you want to transfer a firmware image in the following manner: [ BLE Device ] →BLE→ [ Thingy/91 DK (nRF52→UART→nRF91) ].

    Regarding the transfer from the nRF52840 to the nRF9160, it can be achieved by following the steps in my last comment (at the moment) in this thread. In that thread, the roles are switched (Serial DFU from nRF9160 to nRF52), but the process should be the same.

    I need some more time to answer your question fully but I will try to get back to you within this week.

    Best regards,

    Simon

  • Hi Simon,

    You understood well what I want to do. 
    In the meantime, I will investigate more what you wrote in the thread you mentioned. 

    Ad this moment do you think it is better to go with nRF5 SDK or NCS/Zephyr on the nRF52 chip?
    An additional request from my side is if you are trying something on hardware please do it on nRF91-DK as I only have that board with me at the moment due to current the situation in the world.

    Thank you and looking forward to your response.  

    Best regards,
    Vojislav

  • I talked to a colleague internally and got proposed the following solution:

    In this solution, the SMP/Console is used the whole way through. You can also use the example ncs\nrf\samples\bluetooth\peripheral_uart on he nRF52840 (just to relay the message).

    Does that work for you?

    Best regards,

    Simon

  • Hi Simon,

    Yes, this is what we need. Just I am not sure what is serial recovery mode on nrf91?
    What are the nest steps to achieve this configuration?

    Best regards,
    Vojislav

  • Take a look at the configurations in e.g. \ncs\bootloader\mcuboot\boot\zephyr\boards\nrf9160_pca20035.conf and try to add that to MCUBoot when building for the nRF9160 DK. 

    Best regards,

    Simon

  • Hi Simon,

    I am back on this subject, and I have read everything you referenced in previous responses. Now I have a bit better understanding of Zephyr, MCUboot, and its modules. 

    So let's start from the nRF91 side. The first thing is to get the nRF91 into the serial recovery mode. On the Thingy91 this is done bu holding SW3 and rebooting the device, and I would like to do that as well on nRF91-DK. So I created file /ncs/bootloader/mcuboot/boot/zephyr/boards/nrf9160_pca10090.conf as you suggested. When I build an asset_tracker application with mcuboot enabled and hold Button1 on the nRF91-DK the board does not boot, so I assume that it is stuck somewhere in the bootloader. My next step was to try to flash new applications using nRF-Connect for Desktop and MCUBoot option, but this does not work, it never starts. 

    Is there something else I need to be able to write an app image over UART? 
    Where is defined which UART pins MCUboot will use for SMP?

    Currently, I have setup with NCS v1.2.0 and Ubuntu 18.04LTS

    I am not sure if this functionality was added in this release:
    https://devzone.nordicsemi.com/nordic/cellular-iot-guides/b/getting-started-cellular/posts/thingy91_2d00_fw_2d00_update_2d00_mcuboot

    Best regards,
    Vojislav. 

Reply
  • Hi Simon,

    I am back on this subject, and I have read everything you referenced in previous responses. Now I have a bit better understanding of Zephyr, MCUboot, and its modules. 

    So let's start from the nRF91 side. The first thing is to get the nRF91 into the serial recovery mode. On the Thingy91 this is done bu holding SW3 and rebooting the device, and I would like to do that as well on nRF91-DK. So I created file /ncs/bootloader/mcuboot/boot/zephyr/boards/nrf9160_pca10090.conf as you suggested. When I build an asset_tracker application with mcuboot enabled and hold Button1 on the nRF91-DK the board does not boot, so I assume that it is stuck somewhere in the bootloader. My next step was to try to flash new applications using nRF-Connect for Desktop and MCUBoot option, but this does not work, it never starts. 

    Is there something else I need to be able to write an app image over UART? 
    Where is defined which UART pins MCUboot will use for SMP?

    Currently, I have setup with NCS v1.2.0 and Ubuntu 18.04LTS

    I am not sure if this functionality was added in this release:
    https://devzone.nordicsemi.com/nordic/cellular-iot-guides/b/getting-started-cellular/posts/thingy91_2d00_fw_2d00_update_2d00_mcuboot

    Best regards,
    Vojislav. 

Children
Related