私のコンピュータには USB ポートがいくつかあり、USB 2 と USB 3 があります。デバイスを USB 3 ポートに接続したいのですが、残念ながらすべて黒なので、通常の「USB 3.0 ポートは青」という経験則を適用できません。
これは Linux ボックスなので、コマンド ライン ユーティリティを使用したり、カーネル メッセージを調べたりして、デバイスを USB 3 ポートに接続したかどうかを確認する方法はありますか?
答え1
USBバージョンを確認するには、lsusb
- 12M = 12MBit/s = USB1
- 480M = 480MBit/s = USB2
- 5000M = 5000MBit/s = USB3.0 または USB3.1 gen. 1
- 10000M = 10000MBit/s = USB3.1 gen. 2
次のようなものを使用してみてください:
lsusb -D /dev/bus/usb/002/005
USB 2.00/3.00はUSB 2.0 / 3.0に対応しています
使ってみてもいいかもしれないlsusb -t
最初の変換表は、USB バージョンを判断するのに役立ちます。
を見てみましょうこれさらなる例についてはリンクをご覧ください。
答え2
@MarkHu と @Matthew が指摘したように、現在受け入れられている回答 (lsusb -D) は、実際の速度ではなく、デバイスでサポートされている速度をリストするため、誤解を招く可能性があります。または、少なくともその出力を使用して現在のデバイス速度を見つけることはできません。
USB 3 速度をネゴシエートしない場合、USB 3 ポートであるかどうかは問題になりますか?
Linux ボックスの実際の速度を確認するのは少し面倒です。現在のところ、lsusb はすぐに使えるソリューションを提供していないようです。それが私が機能している方法だとわかりました。まず、接続されているすべてのデバイスとハブを一覧表示して、デバイスを識別します。
> lsusb
Bus 002 Device 003: ID 0424:2660 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.
Bus 001 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
私の場合、外付け WD MyBook ディスクの速度を確認しています。興味深い行は次のようになります。
Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.
しかし、「Bus 001 Device 004」の部分は、現在のデバイス速度を見つけるのに役立たないようです。代わりに、そのようなデバイスのベンダー ID と製品 ID である、コロンで区切られた 2 つの数字 1058:25ee が必要です。
次に、/sys/devices
ディレクトリでファイルの内容を確認しidVendor
、上記のベンダー ID を探します (1058 を自分のベンダー ID に置き換えます)。
> find /sys/devices/ -name idVendor -print -exec cat {} \; | grep -B 1 1058
./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/idVendor
1058
ここで、上記の出力パスをidVendor
次のように置き換えてspeed
、その内容を確認します。
> cat ./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/speed
480
この方法では、480Mbps の USB 2.0 接続を検出します。
idProduct
複数のデバイスが接続されている場合、コンテンツも確認できます。複数のデバイスが接続されている場合、同一デバイスの場合は、コンテンツも検索してくださいserial
。
答え3
私の経験では、lsusb -D
デバイスが接続されているジャックの種類によって現在有効になっていない「機能」を報告する場合、コマンドは誤解を招く可能性があります。 フィルターされた出力の例を以下に示します (出力全体はsudo lsusb -D ${USB_DEVICE_PATH}
80 行以上でした)。 この例では、 をbcdUSB 3.00
意味するはずですDevice can operate at SuperSpeed (5Gbps)
が、比較のためにドライブを USB 2 ジャックに接続したときには、その行はまだ存在していました。
$ lsusb -D /dev/bus/usb/007/003 | egrep -i 'usb|speed|version|Mbps|gbps|id|speed'
Device: ID 174c:1153 ASMedia Technology Inc. ASM2115 SATA 6Gb/s bridge
bcdUSB 3.00
idVendor 0x174c ASMedia Technology Inc.
idProduct 0x1153 ASM2115 SATA 6Gb/s bridge
SuperSpeed USB Device Capability:
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
Lowest fully-functional device speed is Full Speed (12Mbps)
また、この行には、達成可能な速度として解釈されるべきではないidProduct
アドバイス/マーケティング テキストが含まれていることにも注意してください。6Gb/s
より便利な代替の短いコマンド:
$ sudo lsusb -t | egrep -i "storage" -B1
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
|__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
答え4
接続の実際の速度 (lsusb によって報告される容量ではなく) を知りたい場合は、/sys/devices から「speed」ファイルを読み取ることができます。デバイスを自由に接続および切断できると仮定すると、次のスクリプトを使用してプロセスを半自動にすることができます。完全なリストを取得するための別のスクリプトについては、以下で説明します。
- デバイスのプラグを抜きます
- スクリプトを開始します。デバイスを接続するように求められますので、ENTERを押してください。
- デバイスを接続する
- ENTERキーを押します
- スクリプトは対応する接続速度を報告します。
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/speed 480
または:
/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1/speed 5000
可能な速度は Mbit/s で次のようになります。
- 1.5 = USB 1.0/低速
- 12 = USB 1.1/フルスピード
- 480 = USB 2.0/高速
- 5000 = USB 3.0/スーパースピード
- 10000 = USB 3.1/スーパースピード
そして、これがスクリプトです。私はそれをこう呼んでいますusbspeed-get
:
#!/bin/bash
# https://superuser.com/a/1780101/
set -e
LIST1=`mktemp`
LIST2=`mktemp`
echo "Getting list of current devices..."
find /sys/devices -name speed | sort > "$LIST1"
echo -n "Now plug the relevant USB device and press ENTER..."
read dummy
find /sys/devices -name speed | sort > "$LIST2"
comm -3 "$LIST1" "$LIST2" | while read f ; do
echo -n "$f" " "
cat "$f"
done | column -t -s' '
rm "$LIST1" "$LIST2"
すべてのデバイスとそれに応じた速度の概要を知りたい場合は、次のスクリプトを使用できます。私はこれを と呼びますusbspeed-list
。
#!/bin/bash
# https://superuser.com/a/1780101/
sep="|"
find /sys/devices -name speed | grep usb | while read f ; do
dir=`dirname "$f"`
for name in speed manufacturer product ; do
cat "$dir/$name" 2>/dev/null | tr '\n' ' '
echo -n "$sep"
done
echo -n "$dir$sep"
echo
done | column -t --separator "$sep"
デフォルトでは、/sys/devices で見つかった順序でデバイスを出力します。速度で並べ替えたい場合は、以下と組み合わせることができますsort -n
。
usbspeed-list | sort -n
1.5 Keyboard /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.2
1.5 Texas Instruments TPS65983B /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3.2
12 Silicon Laboratories EFM8 HID ISP /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3.3
12 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-14
480 GenesysLogic USB2.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4
480 GenesysLogic USB2.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.4
480 Linux 5.19.0-38-generic xhci-hcd xHCI Host Controller /sys/devices/pci0000:00/0000:00:14.0/usb1
480 Sonix Technology Co., Ltd. USB2.0 Camera /sys/devices/pci0000:00/0000:00:14.0/usb1/1-8
480 USB2.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.1
480 VIA Labs, Inc. USB2.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3
480 VIA Labs, Inc. USB2.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3
480 VIA Labs, Inc. USB2.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4
1000 /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1:1.5/net/enx806d9711f2b1
5000 DisplayLink USB-C Triple-4K Dock /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1
5000 Generic USB Storage /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4/2-3.4.4.4/2-3.4.4.4.4
5000 GenesysLogic USB3.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4
5000 GenesysLogic USB3.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4/2-3.4.4.4
5000 Prolific Technology Inc. ATAPI-6 Bridge Controller /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2
5000 Seagate BUP Portable /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.2
5000 Space keys USB3.1 Storage Device /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1
5000 VIA Labs, Inc. USB3.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3
5000 VIA Labs, Inc. USB3.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3
5000 VIA Labs, Inc. USB3.0 Hub /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4
10000 Linux 5.19.0-38-generic xhci-hcd xHCI Host Controller /sys/devices/pci0000:00/0000:00:14.0/usb2
ここで、キーボードは非常に低速 (1.5) で接続されていますが、これは正常であり、USB ハードディスク ドック (ATAPI-6 ブリッジ コントローラー) は 5000MBit/s で接続されています。
デバイスとその速度を一覧表示する別の方法は、以下が提供する「usb-devices」スクリプトです。usbutils一部のディストリビューションではデフォルトでインストールされています。これはより汎用的ですが、非常に冗長でもあります。デバイスの説明の最初の行に速度を報告します。
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 44 Spd=5000 MxCh= 0
D: Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=067b ProdID=2773 Rev=01.00
S: Manufacturer=Prolific Technology Inc.
S: Product=ATAPI-6 Bridge Controller
S: SerialNumber=0123456789000000005
C: #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=96mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
最新バージョンを使用していることを確認してください。Ubuntu 22.04 に付属のバージョンでは、すべてのデバイスがリストされません。