¿Qué es DFU?

July 29, 2026 · visitantes

Si alguna vez conectaste una placa embebida a tu computadora y la viste enumerarse como un extraño dispositivo USB sin driver, hay buenas probabilidades de que estuviera en modo DFU — Device Firmware Update.

Lo que realmente es DFU

DFU es una clase de dispositivo USB definida por el USB Implementers Forum, pensada originalmente para actualizar el firmware de periféricos USB sin necesidad de herramientas específicas del producto. Un dispositivo que la soporta expone una interfaz pequeña y estandarizada: una herramienta del lado del host puede consultarlo, enviarle una nueva imagen de firmware y provocar un reinicio hacia el nuevo código, todo a través del mismo cable USB que se usa para todo lo demás.

En placas embebidas, el "modo DFU" normalmente significa que el propio bootloader (U-Boot, por ejemplo) está ejecutando una pila DFU mínima en lugar de arrancar Linux. La placa aparece en el host como un dispositivo USB de clase DFU, y una herramienta como dfu-util puede listar los objetivos flasheables (particiones, regiones de memoria, lo que sea que el bootloader decida exponer) y escribir directamente en ellos.

Por qué importa

Hay varias cosas que hacen que DFU sea genuinamente útil en el desarrollo embebido y en producción:

Vale la pena contrastar DFU con mecanismos afines con los que te vas a topar en las mismas placas: fastboot (el protocolo de Android, con un objetivo similar pero un formato de transmisión distinto) y herramientas de imagen de sistema completas como swupdate o RAUC, que gestionan la entrega de actualizaciones y el rollback una vez que Linux ya está corriendo — DFU normalmente opera una capa por debajo de eso, más cerca del bootloader.

Un flujo de trabajo aproximado

Una sesión DFU típica desde el lado del host se ve así:

# see what the board exposes in DFU mode
dfu-util -l

# flash an image to a specific alt-setting/partition
dfu-util -a 0 -D firmware.bin

La placa se reinicia hacia el manejador DFU del bootloader, la herramienta del host negocia la transferencia, y la imagen termina donde el bootloader haya mapeado ese alt-setting — a menudo una partición eMMC/NAND específica o un área de staging que el bootloader flashea en el siguiente arranque.

Reflexión final

DFU es una de esas piezas de infraestructura que se vuelve invisible cuando funciona: conectas un cable, ejecutas un comando, y una placa que un minuto antes no podía arrancar vuelve a estar en pie. La mayor parte de la ingeniería interesante está en hacer bien el lado del bootloader: qué se expone, cómo se mapea al almacenamiento real, y cómo falla de forma segura cuando la transferencia se interrumpe a la mitad.

Esta fue una entrada corta — profundizaré en implementaciones concretas (y en dónde se complican) en una futura entrada.

Para seguir leyendo

Lecturas Relacionadas

Comentarios