如何使用 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

然后,您可以使用fwupdmgrdfu-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