如何使用 Linux 中的设备固件更新 (DFU) 文件更新 USB 设备上的固件?

Bri*_*ard 5 usb firmware usb-device

我有一个 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
$
Run Code Online (Sandbox Code Playgroud)

我确认有可用的更新文件(版本 1.12)。当我下载更新文件 ( Jabra_SPEAK_410_USB-1-12-0.dfu) 并尝试使用它时,fwupdmgr write它似乎没有执行任何操作。

Bri*_*ard 4

其原因是多方面的。 是一个用于从Linux 供应商固件服务fwupdmgr(LVFS)检索固件并对其进行处理的工具。LVFS 提供以Microsoft Update格式打包并由 LVFS 项目签名的 CAB 存档的元数据和分发。这些更新由各个供应商管理。

\n\n

Jabra发表官方声明:

\n\n
\n

支持所有 SPEAK 硬件,更多型号即将推出

\n
\n\n

Jabra 通过 LVFS 发布的1.8 版(针对 Speak 410)之后没有后续更新。

\n\n

由于您可以访问 Jabra 提供的实际 DFU 文件,因此可以使用该实用程序手动处理该文件,该实用程序也打包为程序包( 的父程序包)dfu-tool的一部分。fwupdfwupdmgr

\n\n

应该强调的是,由于签名是DFU 文件打包的一项功能,因此最终用户需要确保以安全的方式检索文件。这就是 LVFS 提供所传送档案的签名和断言的原因。确保所有文件都是使用传输安全性下载的,或者具有可用于声明所有权的独立签名。

\n\n

如果您认为 DFU 文件是正版的,请使用以下过程:

\n\n

首先,验证是否连接了有效的 DFU 设备:

\n\n
$ dfu-tool list\nFound 0b0e:0412 [v1.9]:\n Name:          Jabra SPEAK 410 USB\n Serial:        745C4B561A3XXXXXXXX\n Mode:          Runtime\n Status:        OK\n State:         appIDLE\n Transfer Size: 64 bytes\n Attributes:    can-download|can-upload\n Quirks:        no-dfu-runtime\n
Run Code Online (Sandbox Code Playgroud)\n\n

一旦您确认存在支持 DFU 的设备,请dfu-tool使用 DFU 文件的路径进行附加调用:

\n\n
$ dfu-tool write ~/Downloads/Jabra_SPEAK_410_USB-1-12-0.dfu \n\n(dfu-tool:7597): FuPluginDfu-WARNING **: 12:22:53.882: truncated DFU interface data, no bcdDFUVersion\n\n(dfu-tool:7597): FuPluginDfu-WARNING **: 12:23:05.310: truncated DFU interface data, no bcdDFUVersion\nWriting\xe2\x80\xa6          [*************************************************]\nWaiting\xe2\x80\xa6          [*************************************************]\nRestarting device\xe2\x80\xa6[*************************************************]\n\n(dfu-tool:7597): FuPluginDfu-WARNING **: 12:30:04.795: truncated DFU interface data, no bcdDFUVersion\n879644 bytes successfully downloaded to device\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,您可以使用fwupdmgr或dfu-tool作为便利实用程序来验证所需的固件版本是否正在运行:

\n\n

dfu-tool:

\n\n
$ dfu-tool list\nFound 0b0e:0412 [v1.12]:\n Name:          Jabra SPEAK 410 USB\n Serial:        745C4B561A3Dx010900\n Mode:          Runtime\n Status:        OK\n State:         appIDLE\n Transfer Size: 64 bytes\n Attributes:    can-download|can-upload\n Quirks:        no-dfu-runtime\n
Run Code Online (Sandbox Code Playgroud)\n\n

fwupdmgr:

\n\n
$ fwupdmgr get-devices\nJabra SPEAK 410 USB\n  DeviceId:             87caecc4e6db7e3c335deedfef38666e7f279a03\n  Guid:                 537f7800-8529-5656-b2fa-b0901fe91696\n  Guid:                 f884081f-f58f-5d01-86e8-dc12c88ef073\n  Guid:                 1764c519-4723-5514-baf9-3b42970de487\n  Plugin:               dfu\n  Flags:                updatable|registered\n  VendorId:             USB:0x0B0E\n  Version:              1.12\n  Icon:                 drive-harddisk-usb\n  Created:              2018-09-12\n
Run Code Online (Sandbox Code Playgroud)\n