Usb
如何使用 Linux 中的設備韌體更新 (DFU) 文件更新 USB 設備上的韌體?
我有一個需要更新韌體的 USB 揚聲器( Jabra Speak 410 )。當我嘗試使用
fwupdmgr
它時,它會看到設備,通知我現有的韌體版本(1.9)但不執行任何更新:$ fwupdmgr get-devices Jabra SPEAK 410 USB DeviceId: 87caecc4e6db7e3c335deedfef38666e7f279a03 Guid: 537f7800-8529-5656-b2fa-b0901fe91696 Guid: a607e767-5dfd-5f21-ac0f-c774dbd6fed5 Guid: 1764c519-4723-5514-baf9-3b42970de487 Plugin: dfu Flags: updatable|registered VendorId: USB:0x0B0E Version: 1.9 Icon: drive-harddisk-usb Created: 2018-09-12 $ fwupdmgr update $
我確認有可用的更新文件(1.12 版)。當我下載更新文件 (
Jabra_SPEAK_410_USB-1-12-0.dfu
) 並嘗試使用它時,fwupdmgr write
它似乎沒有做任何事情。
其原因是多層次的。
fwupdmgr
是用於從Linux 供應商韌體服務(LVFS) 檢索韌體並對其進行處理的工具。LVFS 提供以Microsoft Update格式打包並由 LVFS 項目簽名的 CAB 檔案的元數據和分發。這些更新由各個供應商管理。雖然 Jabra發表了官方聲明:
支持所有 SPEAK 硬體,更多型號可跟進
Jabra 通過 LVFS 發布的1.8 版(針對 Speak 410)之後沒有後續更新。
因為您可以訪問 Jabra 提供的實際 DFU 文件,所以可以使用該實用程序手動處理它,該實用程序
dfu-tool
也打包為包fwupd
(的父包fwupdmgr
)的一部分。需要強調的是,由於簽名是DFU 文件打包的一項功能,因此最終使用者需要確保以安全的方式檢索文件。這就是為什麼 LVFS 提供對傳遞的檔案的簽名和斷言。確保使用傳輸安全下載任何文件或具有可用於聲明所有權的分離簽名。
如果您覺得 DFU 文件是正版的,請使用以下過程:
首先,驗證是否連接了有效的 DFU 設備:
$ dfu-tool list Found 0b0e:0412 [v1.9]: Name: Jabra SPEAK 410 USB Serial: 745C4B561A3XXXXXXXX Mode: Runtime Status: OK State: appIDLE Transfer Size: 64 bytes Attributes: can-download|can-upload Quirks: no-dfu-runtime
一旦您確認存在具有 DFU 功能的設備附加呼叫
dfu-tool
以及 DFU 文件的路徑:$ dfu-tool write ~/Downloads/Jabra_SPEAK_410_USB-1-12-0.dfu (dfu-tool:7597): FuPluginDfu-WARNING **: 12:22:53.882: truncated DFU interface data, no bcdDFUVersion (dfu-tool:7597): FuPluginDfu-WARNING **: 12:23:05.310: truncated DFU interface data, no bcdDFUVersion Writing… [*************************************************] Waiting… [*************************************************] Restarting device…[*************************************************] (dfu-tool:7597): FuPluginDfu-WARNING **: 12:30:04.795: truncated DFU interface data, no bcdDFUVersion 879644 bytes successfully downloaded to device
然後,您可以使用
fwupdmgr
或dfu-tool
作為便利實用程序來驗證所需的韌體版本是否正在執行:
dfu-tool
:$ dfu-tool list Found 0b0e:0412 [v1.12]: Name: Jabra SPEAK 410 USB Serial: 745C4B561A3Dx010900 Mode: Runtime Status: OK State: appIDLE Transfer Size: 64 bytes Attributes: can-download|can-upload Quirks: no-dfu-runtime
fwupdmgr
:$ fwupdmgr get-devices Jabra SPEAK 410 USB DeviceId: 87caecc4e6db7e3c335deedfef38666e7f279a03 Guid: 537f7800-8529-5656-b2fa-b0901fe91696 Guid: f884081f-f58f-5d01-86e8-dc12c88ef073 Guid: 1764c519-4723-5514-baf9-3b42970de487 Plugin: dfu Flags: updatable|registered VendorId: USB:0x0B0E Version: 1.12 Icon: drive-harddisk-usb Created: 2018-09-12