[proposal] merge DFU support into mainline U-Boot

Mike Frysinger <vapier.adi@...>

Proposer: Mike Frysinger

Summary: Merge DFU support into mainline U-Boot

The USB Implementers Forum have created an official Device Firmware
Upgrade (DFU) USB device class. This simplifies and standardizes the
process of upgrading firmware greatly as the device is able to
describe named partitions. The user merely selects the target
partition by name and specifies the file to write to it. It is even
bidirectional -- DFU may be used to extract the firmware from the
device. This leads to obvious and trivial methods for backing up and
restoring not only the devices operating code, but even the user's
personal data and configuration settings.

The OpenMoko guys have implemented support for this spec in their fork
of U-Boot. Sadly, interest has waned from the OpenMoko side for
working with U-Boot mainline and merging not only their board-specific
code, but the fun features they've added along the way (such as DFU).
They've started their own bare-bones boot loader from scratch ("Qi")
and focus is now on that. Their U-Boot appears to be in good shape
though as it is maintained in a git repo forked from the mainline tree
around version 1.3.2. This should ease the process of reviewing
changes and updating to newer versions greatly.

Anyone who has played with an OpenMoko device can attest to the
usefulness of this functionality. The entire kernel, root filesystem,
and even bootloader itself is easily updated with the dfu-utils
userspace package (based on libusb, so portable to
Windows/BSDs/etc...). Only a USB cable is needed to attach the
OpenMoko to your computer -- no need to talk to the device yourself
over something messy like a serial console let alone be forced to run
the commands yourself (load/erase/write/etc...), or setup your own
personal LAN. If your new kernel/rootfilesystem is messed up in
some/any way, you merely reboot the phone and load a different
firmware image.

Related work:
* OpenMoko
* DFU Intro: http://wiki.openmoko.org/wiki/USB_DFU
* DFU Utilities: http://wiki.openmoko.org/wiki/Dfu-util
* U-Boot: http://wiki.openmoko.org/wiki/U-boot
* U-Boot: http://www.denx.de/wiki/U-Boot/WebHome
* USB DFU Spec: http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf

This should take about a month to update, test, and merge.

Bonus Points:
Portable graphical frontend to dfu-utils to simplify the process to
the point where non-technical people (i.e. your mom) can update the

Tim Bird <tim.bird@...>

Mike Frysinger wrote:
Proposer: Mike Frysinger

Summary: Merge DFU support into mainline U-Boot
Thanks for this proposal. I've added a page for it at:


Sorry for the delay in posting this. For some reason
this got stuck in a corner of my e-mail list and I overlooked
-- Tim

Tim Bird
Architecture Group Chair, CE Linux Forum
Senior Staff Engineer, Sony Corporation of America