DFU ファイル形式とは?
.dfu ファイルは、USB Device Firmware Upgrade仕様(USB-IF、リビジョン1.1、2004年)に従い、USB接続デバイスのファームウェアアップデートデータを格納します。この形式は、一般的な誤解に反して、Appleのコンシューマーデバイスではなく、主に組み込みシステムやマイクロコントローラ(STM32、Atmel、Nordic Semiconductor、および同様のプラットフォーム)で使用されます。
デバイスのファームウェアを更新することには、常にデバイスを損傷させるリスクが伴うため、細心の注意を払って実行する必要があります。ファームウェアは、完全なオペレーティングシステムまたは中間制御層の形式で、デバイスの永続メモリに組み込まれたソフトウェアプログラムです。ファームウェアは、USB接続を介して配信される .dfu ファイルを使用して更新できます。損傷したファームウェアは、デバイスに永久的な損傷を与える可能性があります。最近のほとんどのデバイスは、アップデートの失敗に対するセキュリティ対策を採用しています。DFUサフィックスは、すべての .dfu ファイルに CRC32 チェックサムを付加し、アップデートを適用する前にデバイスが整合性を検証できるようにします。
.dfu ファイルは、デバイス固有のファームウェアペイロードと、ファイルの最後にある必須の16バイトのDFUサフィックスで構成されています。サフィックスには、USBベンダーID、プロダクトID、DFU仕様バージョン(bcdDFU)、および CRC32 がエンコードされています。STMicroelectronicsは、STM32CubeProgrammerで使用される DfuSe バリアントで基本形式を拡張しています。
Appleの iOS DFU 復元モードは同じUSBプロトコルを使用しますが、Appleはファームウェアを署名済みの .ipsw パッケージとして配布しており、生の .dfu ファイルとしては配布していません。
セキュリティと安全性
リスク: MEDIUMDFUファイルは、ハードウェアデバイスにフラッシュされることを目的としたファームウェアイメージです。誤った、または悪意のあるファームウェアをフラッシュすると、デバイスが永久に動作しなくなる(ブリックする)可能性があります(不正なファームウェアはブートローダーを破損させる恐れがあります)。公式のデバイスメーカーからの .dfu ファイルのみをフラッシュしてください。ファイル自体はデータとして不活性ですが、リスクはフラッシュ操作の実行にあります。ファームウェアを配布しているウェブサイトには注意し、常に公式のメーカーソースと照合し、CRCを確認してください。
形式の詳細
概要- Apple iOS DFUモード - AppleデバイスはDFUモード(USBデバイスの状態)をサポートしていますが、Appleのファームウェアは .dfu ファイルではなく署名済みの .ipsw ファイルとして配布されます。.dfu はApple固有の拡張子ではありません。
DFU ファイルを開くプログラム
技術的詳細
詳細仕様| DFUサフィックスの場所 | ファイルの最後の16バイト - DFUシグネチャはヘッダーではなくサフィックスです |
| サフィックスのマジックバイト | EOF-7からEOF-5のバイト: `0x55`, `0x46`, `0x44` - 逆順で «DFU»(`UFD`)と綴られます |
| 整合性チェック | 最後の4バイトの `dwCRC` フィールド自体を除くすべてのファイルバイトに対する CRC32。DFUサフィックスに格納されます |
| バイト順序 | リトルエンディアン(USB-IF仕様に準拠したDFUサフィックスフィールド) |
| DFU仕様バージョン | サフィックスの `bcdDFU` フィールド: `0x0100` = DFU 1.0 (1999); `0x011A` = DFU 1.1 (2004) |
| ファームウェアペイロード | サフィックスの前のデバイス固有の生バイナリ - 標準のマジックバイトはなく、形式はベンダー定義です |
| ベンダー/プロダクトID | サフィックスの `idVendor` および `idProduct` フィールドがターゲットUSBデバイスクラスを識別します |
| STMicroelectronics DfuSe | 拡張バリアント: ペイロードの開始時に `DfuSe` ASCIIプレフィックスが付加されます。STM32CubeProgrammer で STM32 ファームウェアに使用されます |
| Appleとの違い | iOS DFU 復元は同じUSBプロトコルを使用しますが、ファームウェアは `.dfu` ファイルではなく、署名済みの `.ipsw` パッケージとして配布されます |
| 圧縮 | 基本のDFU仕様にはありません |
| 主な用途 | 組み込みマイクロコントローラ(STM32、Atmel/AVR、Nordic Semiconductor)およびその他のUSB-DFU対応デバイス |
| 公開仕様 | USB DFU Specification Revision 1.1 (USB-IF, 2004) がサフィックスを定義。ファームウェアペイロード形式はベンダー独自です |
| クロスプラットフォームツール | `dfu-util` オープンソースコマンドラインツールは、Windows、macOS、Linux 上で標準のDFUデバイスをサポートします |
| リリース日 | 1999 (USB DFU specification 1.0 from USB-IF; revision 1.1 published 2004) |
| 最新バージョン | USB DFU Specification Revision 1.1 (2004, USB.org) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.usb.org |
DFU の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。DFU ファイルについて最初の質問をしてみましょう。