How to do USB DFU for nRF7002DK

Hello,

I have a BLE DFU question in this thread that has not yet been resolved.

 How to do BLE DFU for nRF7002DK 

Since the BLE DFU problem has not been resolved, I have implemented a USB DFU as an alternative, but it still does not work well. I attach the project here.

dfu_usb_nrf7002dk.zip

Like the BLE DFU, the project checks if the network core can DFU by switching CONFIG_BT_EXT_ADV on and off. However, it does not advertise, and instead the USB CDC ACM is enabled.

Of course, mcuboot_secondary_1 for the network core also exists.

I use mcumgr to display the image list. Nothing seems to be wrong with it.

I used mcumgr to upload my image. By the way, is app_update.bin correct to upload here, or where should I upload net_core_app_update.bin to? I looked at some threads and tried uploading net_core_app_upload.bin with -n 3 to the upload command. As a result, the hash in slot1 changed. I am not even sure if that is the correct behavior.

I tried rebooting with confirm flagged, but the network core could not DFU.

The application core was able to DFU, so it uses extended advertisements, but the network core does not have the extended advertisements config, so an error occurs. This error proves that the network core has not been updated.

What am I missing?

Best Regards,
Yoshihiro Goto

Parents
  • Hello,

    Please try the sample attached below if the goal is to support FOTA over BLE. It is based on the peripheral_lbs sample in SDK v2.7.0 and is configured for sysbuild.

    Demo sample

    peripheral_lbs_ble_fota.zip

    The DFU package which contain the app and netcore FW will be placed in the build folder and is called dfu_application.zip. The update can be performed via the Device Manager app on Android or iOS. Just remember to bump the version number in the VERSION file between updates.

    Best regards,

    Vidar 

  • Sorry for not replying for long time.

    I did not try your sample project at the time which I received above reply. Because I didn't know about sysbuild.

    I was learning about sysbuild during the period. The DevAcademy lessons were also updated Just recently.
    By the way, This thread is about USB DFU, may I talk about USB DFU again?
    I want to update the network core with USB DFU because our recent project uses BLE scanner mode, not advertising.

    dfu_usb.zipdfu_usb_ext.zip

    I have created two sample projects. Mostly copied from DevAcademy samples, and I have also added some configuration to enable nRF700x.

    These are a slight difference to execute DFU.
    - Using extended advertising.
    - VERSION number is 2.
    - LED blinking cycle slowed down.

    I tried to execute DFU from AuTerm following the DevAcademy, but AuTerm displayed 'MCUboot header was not found.'

    I thought
    SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_MCUBOOT=y
    might be needed, didn't work for the reason of dependency.

    Extra information, the DFU works properly when I use zephyr.signed.bin(App core).
    Needless to say, but the network core was not updated with DFU. So the firmware will cause the fail with extended advertising at next startup.

    I was trying a lot of configuration, my conclusion is that the network core cannot be updated with the USB DFU. Is that correct?

Reply
  • Sorry for not replying for long time.

    I did not try your sample project at the time which I received above reply. Because I didn't know about sysbuild.

    I was learning about sysbuild during the period. The DevAcademy lessons were also updated Just recently.
    By the way, This thread is about USB DFU, may I talk about USB DFU again?
    I want to update the network core with USB DFU because our recent project uses BLE scanner mode, not advertising.

    dfu_usb.zipdfu_usb_ext.zip

    I have created two sample projects. Mostly copied from DevAcademy samples, and I have also added some configuration to enable nRF700x.

    These are a slight difference to execute DFU.
    - Using extended advertising.
    - VERSION number is 2.
    - LED blinking cycle slowed down.

    I tried to execute DFU from AuTerm following the DevAcademy, but AuTerm displayed 'MCUboot header was not found.'

    I thought
    SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_MCUBOOT=y
    might be needed, didn't work for the reason of dependency.

    Extra information, the DFU works properly when I use zephyr.signed.bin(App core).
    Needless to say, but the network core was not updated with DFU. So the firmware will cause the fail with extended advertising at next startup.

    I was trying a lot of configuration, my conclusion is that the network core cannot be updated with the USB DFU. Is that correct?

Children
Related