Che cos'è il formato di file DFU?
I file .dfu memorizzano i dati di aggiornamento del firmware per i dispositivi collegati tramite USB, seguendo la specifica USB Device Firmware Upgrade (USB-IF, revisione 1.1, 2004). Il formato è utilizzato principalmente per sistemi embedded e microcontrollori - STM32, Atmel, Nordic Semiconductor e piattaforme simili - piuttosto che per i dispositivi consumer Apple, nonostante un comune malinteso.
L'aggiornamento del firmware del dispositivo comporta sempre il rischio di danneggiare il dispositivo e deve essere eseguito con la massima cura. Il firmware è un programma software incorporato nella memoria persistente del dispositivo sotto forma di un intero sistema operativo o di un livello di controllo intermedio. Il firmware può essere aggiornato utilizzando i file .dfu inviati tramite una connessione USB. Un firmware danneggiato può causare danni permanenti al dispositivo. La maggior parte dei dispositivi moderni adotta misure di sicurezza contro il fallimento dell'aggiornamento: il suffisso DFU aggiunge un checksum CRC32 a ogni file .dfu, consentendo al dispositivo di verificare l'integrità prima di applicare l'aggiornamento.
Un file .dfu consiste in un payload del firmware specifico per il dispositivo seguito da un suffisso DFU obbligatorio di 16 byte alla fine del file. Il suffisso codifica l'ID del fornitore USB (vendor ID), l'ID del prodotto, la versione della specifica DFU (bcdDFU) e il CRC32. STMicroelectronics estende il formato di base con una variante DfuSe utilizzata da STM32CubeProgrammer.
La modalità di ripristino DFU di iOS di Apple utilizza lo stesso protocollo USB, ma Apple distribuisce il firmware come pacchetti .ipsw firmati - non come file .dfu grezzi.
Sicurezza e incolumità
RISCHIO: MEDIUMI file DFU sono immagini del firmware destinate a essere scritte («flashate») su dispositivi hardware. Il flashing di un firmware errato o dannoso può rendere un dispositivo permanentemente inutilizzabile (un firmware errato può corrompere i bootloader). Flashare solo file .dfu provenienti dal produttore ufficiale del dispositivo. Il file in sé è inerte come dato; il rischio risiede nell'esecuzione dell'operazione di flashing. Prestare attenzione ai siti web che distribuiscono firmware - verificare sempre con le fonti ufficiali del produttore e controllare il CRC.
Dettagli del formato
in sintesi- Modalità DFU Apple iOS - I dispositivi Apple supportano la modalità DFU (uno stato del dispositivo USB) ma il firmware Apple è distribuito come file .ipsw firmati, non file .dfu; .dfu non è un'estensione specifica di Apple.
Programmi che aprono file DFU
Dettagli tecnici
specifiche approfondite| Posizione del suffisso DFU | Ultimi 16 byte del file - la firma DFU è un suffisso, non un'intestazione |
| Magic del suffisso | Byte da EOF-7 a EOF-5: `0x55`, `0x46`, `0x44` - scrive `DFU` al contrario (`UFD`) |
| Controllo integrità | CRC32 su tutti i byte del file eccetto il campo finale `dwCRC` di 4 byte; memorizzato nel suffisso DFU |
| Ordine dei byte | Little-endian (campi del suffisso DFU secondo la specifica USB-IF) |
| Versione specifica DFU | Campo `bcdDFU` nel suffisso: `0x0100` = DFU 1.0 (1999); `0x011A` = DFU 1.1 (2004) |
| Payload del firmware | Binario grezzo specifico del dispositivo prima del suffisso - nessun magic byte standard; il formato è definito dal fornitore |
| ID fornitore/prodotto | I campi `idVendor` e `idProduct` nel suffisso identificano la classe del dispositivo USB di destinazione |
| STMicroelectronics DfuSe | Variante estesa: prefisso ASCII `DfuSe` all'inizio del payload; utilizzato da STM32CubeProgrammer per il firmware STM32 |
| Distinzione Apple | Il ripristino DFU di iOS utilizza lo stesso protocollo USB ma il firmware è distribuito come pacchetti `.ipsw` firmati, non file `.dfu` |
| Compressione | Nessuna nella specifica DFU di base |
| Uso primario | Microcontrollori embedded (STM32, Atmel/AVR, Nordic Semiconductor) e altri dispositivi compatibili con USB-DFU |
| Specifica aperta | La specifica USB DFU Revisione 1.1 (USB-IF, 2004) definisce il suffisso; il formato del payload del firmware è proprietario del fornitore |
| Strumentazione multipiattaforma | Lo strumento a riga di comando open source `dfu-util` supporta i dispositivi DFU standard su Windows, macOS e Linux |
| Rilasciato | 1999 (USB DFU specification 1.0 from USB-IF; revision 1.1 published 2004) |
| Ultima versione | USB DFU Specification Revision 1.1 (2004, USB.org) |
| Standard aperto | Sì · royalty-free |
| Specifica | www.usb.org |
Conversioni DFU
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file DFU.