LinuxでUSBデバイスがUSB 3.0で接続されているか確認する
普段あまり気にしていなかったけど、Linux上でUSBデバイスがUSB 3.0で接続されているか確認する機会があったので、その方法を記事にしておく。USBデバイスの名称は、USB 3.0, 2.0...以外にも色々あってややこしかったので、自分のためにも整理して記事に残しておく。今さら感はあるけど、参考にしていただければと思う。
USBの規格と名称のまとめ
USBのバージョンを調べる前に、規格と名称などをまとめておく。これを知らないと、コマンドのアウトプットを見ても何がなんだか分からない。バージョン | 別名 | 対応コントローラー | 最大速度 |
---|---|---|---|
USB 3.1 | SuperSpeedPlus (Gen2) | xHCI 1.1 | 10 Gbps |
USB 3.0 | SuperSpeed (Gen1) | xHCI (eXtensible HCI) | 5 Gbps |
USB 2.0 | High-Speed (Low-Speedも存在) |
EHCI (Enhanced HCI) | 480 Mbps |
USB 1.0 (1.1) | Low-Speed, Full-Speed | UHCI (Universal HCI) | 1.5 Mbps, 12 Mbps |
※コントローラーについては、デバイスが下位バージョンであっても接続可能。
ちなみに、Linuxカーネルのバージョンによっても、以下のようにUSBの対応バージョンが異なる。
- Linux kernel 2.6.31~ (2009~):USB 3.0対応
- Linux kernel 3.5~ (2012~):USB 3.0 (Attached SCSI mode) 対応
ハードウェアがUSB 3.0に対応しているかは、以下の画像のようにポートやケーブルの近くに「SS (=SuperSpeed)」と書いてあるかどうかで確認できる。
コマンドでUSBデバイスのバージョンを確認する
さて、ここから本題。接続したUSBデバイスがどのバージョンで動いているか確認する。まず、lspciでパソコン上にどのバージョンのコントローラーが存在するか確認する。自分の環境では、USB 2.0 (EHCI)が2つ、USB 3.0 (xHCI, SS USB)が2つ存在していた。ここで、USB 3.0に対応する出力が無い場合は、パソコンやOS、BIOSがUSB 3.0に対応していない。
どのポートがどのコントローラーに対応しているかは、マザーボードの説明書などに書いてある。
$ lspci | grep USB 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04) 00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04) 00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04) 04:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
次に、lsusbから接続されているUSBがどの速度で接続されているか確認する。デバイスをつなぐ前に現状の接続を確認しておく。
デバイス接続前
$ lsusb -t /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 12M |__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 12M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
接続状態を確認したいデバイスを、パソコンに接続してみる。「5000M (USB 3.0)」の項目が増えているので、USB 3.0で接続されていることが確認できる。
USB 3.0デバイス接続後
$ lsusb -t /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 12M |__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 12M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=, 5000M ←新たに接続したデバイスが、5000M (USB 3.0) で接続されている /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
USB 3.0のポートに、USB 2.0対応デバイスを接続した場合の出力は以下のようになった。
USB 2.0デバイス接続後
$ lsusb -t /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 12M |__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 12M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M |__ Port 2: Dev 3, If 0, Class=Mass Storage, Driver=, 480M ←新たに接続したデバイスが、480M (USB 2.0) で接続されている /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
ちなみに、dmesgからも確認できる。
USB 3.0デバイス接続後
$ dmesg | tail -18 [ 229.233726] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd [ 229.251434] usb 4-1: New USB device found, idVendor=152d, idProduct=0567, bcdDevice=92.01 [ 229.251438] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 229.251440] usb 4-1: Product: USB to ATA/ATAPI Bridge [ 229.251442] usb 4-1: Manufacturer: JMicron [ 229.251444] usb 4-1: SerialNumber: 0123456789ABCDEF [ 229.254053] scsi host8: uas [ 229.254710] scsi 8:0:0:0: Direct-Access JMicron Generic 9201 PQ: 0 ANSI: 6 [ 229.255551] sd 8:0:0:0: Attached scsi generic sg6 type 0 [ 229.255755] sd 8:0:0:0: [sdf] Spinning up disk... [ 230.263711] ..............ready [ 243.438660] sd 8:0:0:0: [sdf] 15628053168 512-byte logical blocks: (8.00 TB/7.28 TiB) [ 243.438662] sd 8:0:0:0: [sdf] 4096-byte physical blocks [ 243.438802] sd 8:0:0:0: [sdf] Write Protect is off [ 243.438804] sd 8:0:0:0: [sdf] Mode Sense: 53 00 10 08 [ 243.439079] sd 8:0:0:0: [sdf] Disabling FUA [ 243.439082] sd 8:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 243.460501] sd 8:0:0:0: [sdf] Attached SCSI disk
USB 3.0のポートにUSB 2.0のデバイスを接続した場合。「new high-speed USB device number 2 using xhci_hcd」の行から、xHCI (USB 3.0ポート)を使ってHigh-Speed(USB 2.0)のデバイスを認識していると分かる。
USB 2.0デバイス接続後
$ dmesg | tail -18 [ 24.276696] usb 3-1: new high-speed USB device number 2 using xhci_hcd [ 24.416849] usb 3-1: New USB device found, idVendor=0457, idProduct=0150, bcdDevice= 1.00 [ 24.416853] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 24.459570] usb-storage 3-1:1.0: USB Mass Storage device detected [ 24.459742] usb-storage 3-1:1.0: Quirks match for vid 0457 pid 0150: 80 [ 24.459788] scsi host8: usb-storage 3-1:1.0 [ 24.459882] usbcore: registered new interface driver usb-storage [ 24.462001] usbcore: registered new interface driver uas [ 25.469600] scsi 8:0:0:0: Direct-Access SiS-150a USB2FlashStorage 0.00 PQ: 0 ANSI: 2 [ 25.470103] sd 8:0:0:0: Attached scsi generic sg6 type 0 [ 25.471012] sd 8:0:0:0: [sdf] 1024000 512-byte logical blocks: (524 MB/500 MiB) [ 25.471556] sd 8:0:0:0: [sdf] Write Protect is off [ 25.471559] sd 8:0:0:0: [sdf] Mode Sense: 00 00 00 00 [ 25.472095] sd 8:0:0:0: [sdf] Asking for cache data failed [ 25.472101] sd 8:0:0:0: [sdf] Assuming drive cache: write through [ 25.975526] sdf: sdf1 [ 25.978240] sd 8:0:0:0: [sdf] Attached SCSI removable disk [ 26.198869] FAT-fs (sdf1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
参考:
[1]Linux 2.6.31がリリース、USB 3.0対応など - @IT
[2]How is USB 3.0 supported in Linux now? - Quora
スポンサーリンク
スポンサーリンク
0 件のコメント:
コメントを投稿