lsusb
可以列出連接的 USB 裝置。
lsusb [-v]
例如:
|
|
OS X 沒有lsusb
指令,可以用 Homebrew 安裝 jlhonora/lsusb 進行擴充:brew update && brew tap jlhonora/lsusb && brew install lsusb
用法大致上跟 Linux 的版本相同 (背後利用 OS X 內建的
system_profiler SPUSBDataType
),細節可以參考man lsusb
解讀資訊
每一行都代表一個 USB 裝置,包含 4 項資訊:
<1> <2> <3> <4>
| | | |
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- 裝置所在的 USB bus 編號;一個 USB bus 可以連接多個裝置,每個裝置有不同的編號。(裝置編號從 002 開始,001 代表 USB bus 自己)
- 裝置在該 USB bus 下的編號 (device number)。
- 冒號前後分別是裝置的 vendor ID (製造商) 與 product ID (產品)。
- Vendor ID 與 product ID 對應的名稱。例如這裡的
1d6b
代表的是 Linux Foundation,而0002
則代表 2.0 root hub。
Vendor ID 及 product ID 所代表的名稱,可以到 The USB ID Repository 查詢。
在 Linux,每一個 USB bus 都用一個虛擬裝置 root hub 來表示,它的 device number 固定是 001,vendor ID 固定是 1d6b
(Linux Foundation),且 product ID 本身就大概能看出 USB bus 的版本:
0001
- 1.1 root hub 即 USB 1.1, Full Speed (12 Mbit/s)0002
- 2.0 root hub 即 USB 2.0, High Speed (480 Mbit/s)0003
- 3.0 root hub 即 USB 3.0, SuperSpeed (5 Gbit/s)
由於 root hub 是虛擬裝置,搭配下面提到的-t
比較有用,所以平常可以搭配grep
將它們濾除。例如:
123 > $ lsusb | grep -v 'root hub'> Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet>
裝置詳細資訊
加 -v
(--verbose
) 可以顯示裝置的細部資訊,通常會搭配 -s
或 -d
指定裝置:
lsusb -v -s <BUS_NUMBER>:<DEVICE_NUMBER>
lsusb -v -d <VENDOR_ID>:<DEVICE_ID>
以上面的 VirtualBox USB Tablet 為例,可以用 -s 2:2
或 -d 80ee:0021
指定,效果是一樣的:
|
|
階層關係
若想要看出 USB bus 跟裝置間的階層關係 (hierarchy),可以搭配 -t
使用:
lsusb -t
例如:
|
|
雖然看不出裝置名稱,但還是有些資訊可供識別:
Class
表示裝置類型 (device class),例如root_hub
、Hub
(外接 hub)、Mass Storage
(外接儲存裝置)、Imaging
(PTP/MTP) 等。- 一個 device 可以有多個 interface (
If <NUM>
),例如手機通常提供多個 interface,每個都有不同的 device class。 - 每一行最後面的數字 (例如上面的 12M、480M),代表傳輸速度,USB 1.1、2.0、3.0 分別是 12M、480M 跟 5000M。
至於裝置名稱,就只能透過 -s
反查:
lsusb [-v] -s <BUS_NUMBER>:<DEVICE_NUMBER>
例如:
|
|
更多關於 Linux 的學習心得,請參考 Linux 學習筆記。