Skip to content
Advertisement

DFU not transferring data in barebox

Am working on a custom board – has no removable storage (sd) and only one UART. I need to transfer files on the the QSPI storage using barebox bootloader.

I am trying to use DFU to transfer various files to write to QSPI

Device tree has the follow among other things

JavaScript

On the board, the OTG mode has been set to peripheral and dfu started for accepting file

JavaScript

On the system the board is getting detected as DFU device

JavaScript

So when transferring a file

JavaScript

The last two lines keep repeating themselves. Eventually at Ctrl-C on both

It does say file Download done. but there is nothing on the receiving end. At the board

JavaScript

so the question is why????

Advertisement

Answer

A regression matching your problem was recently reported as being caused by

697f53a90224 (“usb: gadget: dfu: Wrap fs operation in workqueue”)

There has been a first fix here:

https://lore.barebox.org/barebox/20210830144835.27458-1-jmaselbas@kalray.eu

Try and see if that fixes your issue.

It’s unfortunate the regression slipped through, but most users seem to either use fastboot or DFU with the multigadget functionality (usbgadget -D command instead of dfu command). I’d suggest you do likewise with a new project. fastboot has special support for UBI (u) flag, which allows it to call ubiformat transparently on a volume when updating and it can reeexport barebox_update handlers, so you could just update with e.g.:

JavaScript

The usbgadget command allows the gadget to work in the ‘background’. So you can continue to use the shell and export more than one gadget at the same time: e.g. a USB serial console and DFU at the same time. This should still work despite the aforementioned regression as that one only broke the dfu command.

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement