在查看 USB 设备的 dmesg 时,“找到新 USB 设备”和“新 USB 设备字符串”之间有什么区别?

在查看 USB 设备的 dmesg 时,“找到新 USB 设备”和“新 USB 设备字符串”之间有什么区别?

我正在尝试将 MicroSemi FlashPro 4 连接到我的 Linux 系统。当我插入时,dmesg显示:

[13728.408610] usb 11-1: New USB device found, idVendor=1514, idProduct=2006, bcdDevice= 0.00
[13728.408617] usb 11-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

设备/编程器未打开。但lsusb在插入时添加此内容:

Bus 011 Device 016: ID 1514:2006 Actel

我查了一下,idVendor它们idProduct与 MicroSemi(以前称为 Actel)和我的设备匹配。但是我不明白为什么第二行dmesg给出的字段值为 0,它显然只是之前读取了该行。两条输出线之间到底发生了什么?值为 0 是否意味着它没有找到驱动程序?

答案1

基本上,每个 USB 设备必须有一个标准化的 USB 设备描述符:本质上是一个关于设备的元数据块,可以在不了解该设备的情况下读取它(除了它显然是某种 USB 设备)。这允许自动配置 USB 设备驱动程序。

这个描述符必须始终包含数字供应商和产品标识符,因为数字是计算机最容易处理的。但它可能还以字符串形式包含相同的信息,这样即使是可能没有最新 USB 供应商和设备目录的较旧计算机也可以为该设备提供人类可读的名称。

在您的情况下,设备可以被肯定地识别为“Actel/MicroSemi device 0x2006”,但设备描述符中的人类可读字符串字段没有填充任何有用的内容。甚至没有唯一的序列号被编程到设备中。

这是您设备的安装指南: https://www.microsemi.com/document-portal/doc_view/130807-flashpro-software-and-hardware-installation-guide

第 9 页表明 FlashPro 4 “具有双驱动程序安装”,就像其前身 FlashPro 3 一样。对于旧型号,下一页表明产品 ID 2004 表示设备正在等待加载固件,固件加载完成后驱动程序成功发送后,设备会将其产品 ID 更改为 2005。

对于 FlashPro 4,该文档指示了类似的两个产品 ID:2006 和 2007,但没有具体说明这些 ID 的含义。假设它们与 FlashPro 3 的含义相同,则 ID 2006 意味着设备正在等待接收其固件,这可能是设备无法“打开”的原因:它需要固件来实现这一点。

答案2

但是我不明白为什么 dmesg 的第二行为它显然只是读取了之前的行的字段提供了 0 值。

不,这些是不同的事情;他们不一样。

值为 0 是否意味着它没有找到驱动程序?

不。

相关内容