DFU over CDC ACM very slow

Hello

I am doing a bluetooth dongle and I added MCUBOOT with CDC ACM to be able to update my app. 

I find that the update takes a lot : 5+ min to update a 200kB application.

This is questionning me because I have an other bluetooth product with a nRF52840 too and I can do an update within 30s max by ble.

It would seem logic that USB dfu is faster than BLE.

Regards

Thibaud

Parents
  • Hi,

    I understand your concerns. Could you maybe try, as mentioned in this ticket by a colleague of mine, to try with nrfutil?

    Regards,

    Priyanka

  • Hi 

    I will try it but if nrfutil is better than mcumgr why is it not mentionned anywhere in the docs.nordicsemi.com website ?

    In the link you sent me there is a link to an other ticket where the solution was to change a function in the "serial_xport.go  found in go\pkg\mod\mynewt.apache.org\newtmgr@v0.0.0-20201028150837-60b2da78788c\nmxact\nmserial\" do you have any idea wher I can find this file ?

    Regards

    Thibaud

  • Here is the nRFUtil documentation:https://docs.nordicsemi.com/bundle/nrfutil/page/README.html 

    Also, The file path mentioned ("go\pkg\mod\mynewt.apache.org\newtmgr@v0.0.0-20201028150837-60b2da78788c\nmxact\nmserial") shows that it's likely a part of a Go module, related to mcumgr. So you might need to modify a Go source file - and this is part of the mcumgr tool's codebase. So I guess Zephyr support could be the experts here.

    -Priyanka

Reply
  • Here is the nRFUtil documentation:https://docs.nordicsemi.com/bundle/nrfutil/page/README.html 

    Also, The file path mentioned ("go\pkg\mod\mynewt.apache.org\newtmgr@v0.0.0-20201028150837-60b2da78788c\nmxact\nmserial") shows that it's likely a part of a Go module, related to mcumgr. So you might need to modify a Go source file - and this is part of the mcumgr tool's codebase. So I guess Zephyr support could be the experts here.

    -Priyanka

Children
  • Hi

    I am trying to use nrfutil but when I do device list I don't have mcuboot in the traits of my product. Even if it is in MCUBOOT.

    1st time my product is in app :& 2nd time it is in bootloader (MCUBOOT of course) : 

    This is what happen when I try to flash : 

    Regards

    Thibaud

  • Hi,

    I also tried to use USB DFU sample but here what the dfu-util command linedoes : 

      

    Is there any reliable way to update an application through USB ?

    Regards

    Thibaud

  • Hello 

    I've found this ticket :  nrfutil device and mcuboot serial recovery mode  and after updating the VID & PID as indicate I have the mcuBoot trait.

    I am able to program the new firmware when my product is in bootloader.

    My update takes around 30s is there any kconfig option to make it even faster ?

     

    Regards

    Thibaud

  • Hi

    What do I have to do so my application can support command ./nrfutil device x-boot-mode-get --traits mcuBoot

    Please not that my application support the retention boot mode. I am able to reset in mcuBoot through a function in my app but I need an external event to trtigger my function. Being able to do it via nrfutil would be a monumental improvement for my application.

    Regards

    Thibaud

  • Hi,

    Since you are working with an nRF Dongle, I don't think the x-boot-mode-get command can be used. See the device command changelog. This is an experimental command, and it doesn't work with the dongle (used with nRF54H series).

    -Priyanka