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

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

我有一个 USB 扬声器(捷波朗 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它似乎没有执行任何操作。

答案1

其原因是多层次的。 fwupdmgr是一个用于检索固件并处理它的工具Linux 供应商固件服务(LVFS)。 LVFS 提供元数据和 CAB 档案的分发,这些档案打包在微软更新格式并由 LVFS 项目签名。这些更新由各个供应商管理。

而捷波朗做出了官方声明

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

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

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

应该强调的是,签名是包装对于 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

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

相关内容