如果不知道设备名称,如何从 USB 设备读取数据?

如果不知道设备名称,如何从 USB 设备读取数据?

我有一台 Arturia MiniLab,它是串行、非块设备。我想从该设备读取按键,但我不知道应该/dev/device从哪里读取按键。我想知道如何使用输出等信息来lsusb监听 USB 设备。 lsusb ... Bus 001 Device 005: ID 1c75:0204 Arturia Arturia MINILAB

有没有办法从 ID 字段中找到设备名称?或者在不知道 /dev 中的设备名称的情况下从 USB 连接读取数据?根据我所知道的信息,我下一步该怎么做才能从 USB 设备读取数据?

答案1

提供的信息lsusb应该足以确定/dev位置,因为通过 USB 连接的所有内容都可以从 读取/dev/bus/usb/{bus}/{device}

这是我的笔记本上的输出lsusb,为了举例说明,笔记本上有一个无线鼠标适配器和一个通过 USB 连接的佳能 DSLR 相机。

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc. 
Bus 001 Device 004: ID 04f2:b5ce Chicony Electronics Co., Ltd Integrated Camera
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 04f2:b5cf Chicony Electronics Co., Ltd Integrated IR Camera
Bus 001 Device 007: ID 045e:07fd Microsoft Corp. Nano Transceiver 1.1
Bus 001 Device 008: ID 04a9:3270 Canon, Inc. EOS 100D
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

鼠标的加密狗位于Bus 001 Device 007,所以这意味着我可以从 查询/探测它/dev/bus/usb/001/007

如果您想获取有关 USB 设备的更多信息,您也可以usb-devices从终端使用。这将输出有关数据传输速率、功率限制、序列号等的信息。对于鼠标的加密狗,我得到了以下信息:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  7 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=32 #Cfgs=  1
P:  Vendor=045e ProdID=07fd Rev=03.15
S:  Manufacturer=Microsoft
S:  Product=Microsoft Nano Transceiver 1.1
C:  #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
I:  If#=0x2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid

这也证实了该设备作为顶线的设备 7 连接到总线 1。

如果您正在寻找可能有助于调试设备的东西,那么它dmesg可能就是您要找的东西。同样,对于鼠标的适配器,我在输出中看到以下内容:

[208483.802953] usb 1-2: new full-speed USB device number 7 using xhci_hcd
[208483.955942] usb 1-2: New USB device found, idVendor=045e, idProduct=07fd, bcdDevice= 3.15
[208483.955944] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[208483.955945] usb 1-2: Product: Microsoft Nano Transceiver 1.1
[208483.955946] usb 1-2: Manufacturer: Microsoft
[208483.985246] usbcore: registered new interface driver usbhid
[208483.985247] usbhid: USB HID core driver
[208483.999278] input: Microsoft Microsoft Nano Transceiver 1.1 as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:045E:07FD.0001/input/input19
[208484.059311] hid-generic 0003:045E:07FD.0001: input,hidraw0: USB HID v1.11 Keyboard [Microsoft Microsoft Nano Transceiver 1.1] on usb-0000:00:14.0-2/input0
[208484.059641] input: Microsoft Microsoft Nano Transceiver 1.1 Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:045E:07FD.0002/input/input20
[208484.119192] input: Microsoft Microsoft Nano Transceiver 1.1 System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:045E:07FD.0002/input/input21
[208484.119309] input: Microsoft Microsoft Nano Transceiver 1.1 as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:045E:07FD.0002/input/input22
[208484.119483] hid-generic 0003:045E:07FD.0002: input,hiddev0,hidraw1: USB HID v1.11 Device [Microsoft Microsoft Nano Transceiver 1.1] on usb-0000:00:14.0-2/input1
[208484.119645] input: Microsoft Microsoft Nano Transceiver 1.1 as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:045E:07FD.0003/input/input23
[208484.178991] hid-generic 0003:045E:07FD.0003: input,hidraw2: USB HID v1.11 Mouse [Microsoft Microsoft Nano Transceiver 1.1] on usb-0000:00:14.0-2/input2

这将为您提供特定的输入指针,如果您编写直接与硬件(例如设备驱动程序)交互的代码,这些指针会很有用。

希望这能为您提供您正在寻找的信息。

相关内容