确定USB设备文件路径
Determine USB device file Path
如何在 Linux 中正确获取 USB 设备文件路径。
我使用命令:find / -iname "usb" 得到如下结果:
/dev/bus/usb
/sys/bus/usb
/sys/bus/usb/drivers/usb
/sys/kernel/debug/usb
在/dev/bus/usb下我看到:
001 002 003 004 005 006
但我认为它们不是我需要的文件。
下 /sys/bus/usb/devices/:
sh-3.2# ls /sys/bus/usb/devices/
1-0:1.0 1-1:1.0 3-0:1.0 5-0:1.0 usb1 usb3 usb5
1-1 2-0:1.0 4-0:1.0 6-0:1.0 usb2 usb4 usb6
在 /sys/bus/scsi/devices/ 下,当我插入 USB 时,我看到:
2:0:0:0 host0 host2 target2:0:0
当我移除 USB 时,我看到:
sh-3.2# ls
host0
那么USB用的是哪个设备文件呢?我怎样才能识别它?我需要用 USB 设备文件制作一个 C 程序...
另外,你能给我解释一下数字1-1:1.0吗?这是什么意思?
谢谢。
So which device file is used for USB? How can i indentify it?
你在/sys/
后面看到的主要是configuration/information关于设备的。 /dev/bus/usb
就是您要找的。我觉得下面这篇文章可以帮到你
http://www.linuxjournal.com/article/7466?page=0,0
很老了,但还是可以帮到你。 (在文章中他们谈到/proc/bus/usb
,今天我们有/dev/bus/usb
)
Further more, could you explain to me the number 1-1:1.0? What does it mean?
通用形式是
X-Y.Z:A.B
每个字段标识您设备的连接点。前两个字段是必填字段:
- X是你主板的USB总线,连接USB系统。
- Y 是总线系统上正在使用的端口
所以用字符串3-3
标识的USB设备就是连接在总线3的端口3上的设备。
如果您连接 USB 集线器,您将扩展单个 USB 端口的连接能力。 Linux 内核通过附加 Z 字段来识别这种情况。
- Z 是集线器上使用的端口
因此,用字符串1-2.5
标识的USB设备是连接在总线1的端口2上的集线器端口5上的设备。
USB 规范允许您级联连接多个 USB 集线器,因此 Linux 内核继续在不同的集线器上附加正在使用的端口。因此,用字符串 1-2.1.1
标识的 USB 设备是连接在集线器的端口 1 上的设备连接在连接到总线 1 的端口 2 的集线器的端口 1.
检索这些信息的一种快速方法是阅读内核消息(如果可以的话)。
$ dmesg | grep usb
[... snip ...]
[ 2.047950] usb 4-1: new full-speed USB device number 2 using ohci_hcd
[ 2.202628] usb 4-1: New USB device found, idVendor=046d, idProduct=c318
[ 2.202638] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.202643] usb 4-1: Product: Logitech Illuminated Keyboard
[ 2.202648] usb 4-1: Manufacturer: Logitech
[... snip ...]
然后,模式的最后两个字段(冒号后)标识 USB 设备的内部部分:
- A为设备的配置编号
- B是配置的接口号
因此,字符串 4-1:1.1
表示:接口 1,在配置 1 上连接到总线 4 的端口 1。
您可以使用命令 lsusb
检索这些信息。
如何在 Linux 中正确获取 USB 设备文件路径。 我使用命令:find / -iname "usb" 得到如下结果:
/dev/bus/usb
/sys/bus/usb
/sys/bus/usb/drivers/usb
/sys/kernel/debug/usb
在/dev/bus/usb下我看到:
001 002 003 004 005 006
但我认为它们不是我需要的文件。
下 /sys/bus/usb/devices/:
sh-3.2# ls /sys/bus/usb/devices/
1-0:1.0 1-1:1.0 3-0:1.0 5-0:1.0 usb1 usb3 usb5
1-1 2-0:1.0 4-0:1.0 6-0:1.0 usb2 usb4 usb6
在 /sys/bus/scsi/devices/ 下,当我插入 USB 时,我看到:
2:0:0:0 host0 host2 target2:0:0
当我移除 USB 时,我看到:
sh-3.2# ls
host0
那么USB用的是哪个设备文件呢?我怎样才能识别它?我需要用 USB 设备文件制作一个 C 程序...
另外,你能给我解释一下数字1-1:1.0吗?这是什么意思?
谢谢。
So which device file is used for USB? How can i indentify it?
你在/sys/
后面看到的主要是configuration/information关于设备的。 /dev/bus/usb
就是您要找的。我觉得下面这篇文章可以帮到你
http://www.linuxjournal.com/article/7466?page=0,0
很老了,但还是可以帮到你。 (在文章中他们谈到/proc/bus/usb
,今天我们有/dev/bus/usb
)
Further more, could you explain to me the number 1-1:1.0? What does it mean?
通用形式是
X-Y.Z:A.B
每个字段标识您设备的连接点。前两个字段是必填字段:
- X是你主板的USB总线,连接USB系统。
- Y 是总线系统上正在使用的端口
所以用字符串3-3
标识的USB设备就是连接在总线3的端口3上的设备。
如果您连接 USB 集线器,您将扩展单个 USB 端口的连接能力。 Linux 内核通过附加 Z 字段来识别这种情况。
- Z 是集线器上使用的端口
因此,用字符串1-2.5
标识的USB设备是连接在总线1的端口2上的集线器端口5上的设备。
USB 规范允许您级联连接多个 USB 集线器,因此 Linux 内核继续在不同的集线器上附加正在使用的端口。因此,用字符串 1-2.1.1
标识的 USB 设备是连接在集线器的端口 1 上的设备连接在连接到总线 1 的端口 2 的集线器的端口 1.
检索这些信息的一种快速方法是阅读内核消息(如果可以的话)。
$ dmesg | grep usb
[... snip ...]
[ 2.047950] usb 4-1: new full-speed USB device number 2 using ohci_hcd
[ 2.202628] usb 4-1: New USB device found, idVendor=046d, idProduct=c318
[ 2.202638] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.202643] usb 4-1: Product: Logitech Illuminated Keyboard
[ 2.202648] usb 4-1: Manufacturer: Logitech
[... snip ...]
然后,模式的最后两个字段(冒号后)标识 USB 设备的内部部分:
- A为设备的配置编号
- B是配置的接口号
因此,字符串 4-1:1.1
表示:接口 1,在配置 1 上连接到总线 4 的端口 1。
您可以使用命令 lsusb
检索这些信息。