An meinem Computer befinden sich mehrere USB-Anschlüsse, einige sind USB 2 und einige USB 3. Ich möchte ein Gerät an einen USB 3-Anschluss anschließen. Leider sind sie alle schwarz, sodass ich nicht die übliche Faustregel „USB 3.0-Anschlüsse sind blau“ anwenden kann.
Dies ist eine Linux-Box. Gibt es also eine Möglichkeit herauszufinden, ob ich das Gerät an einen USB-3-Anschluss angeschlossen habe, vielleicht mithilfe eines Befehlszeilenprogramms oder durch Überprüfen einiger Kernel-Meldungen?
Antwort1
Sie können die USB-Version ermitteln, indem Sielsusb
- 12M = 12MBit/s = USB1
- 480M = 480MBit/s = USB2
- 5000M = 5000MBit/s = USB3.0 alias USB3.1 Gen. 1
- 10000M = 10000MBit/s = USB3.1 Gen. 2
Versuchen Sie es mit etwas wie:
lsusb -D /dev/bus/usb/002/005
Der USB 2.00/3.00 entspricht USB 2.0 / 3.0
Versuchen Sie es vielleicht sogar mitlsusb -t
Die erste Umrechnungstabelle hilft Ihnen bei der Bestimmung der USB-Version.
Schauen Sie sich anDASLink für weitere Beispiele.
Antwort2
Wie @MarkHu und @Matthew bemerkt haben, kann die derzeit akzeptierte Antwort (lsusb -D) irreführend sein, da sie die vom Gerät unterstützten Geschwindigkeiten auflistet, nicht die tatsächliche Geschwindigkeit. Oder zumindest konnte ich die Ausgabe nicht verwenden, um die aktuelle Gerätegeschwindigkeit zu ermitteln.
Ist es wichtig, ob es sich um einen USB 3-Anschluss handelt, wenn er keine USB 3-Geschwindigkeiten unterstützt?
Die tatsächliche Geschwindigkeit auf einer Linux-Box zu ermitteln, ist etwas mühsam; lsusb scheint derzeit keine sofort einsatzbereite Lösung anzubieten. Bei mir hat sich herausgestellt, dass es funktioniert. Listen Sie zunächst alle angeschlossenen Geräte und Hubs auf, um Ihr Gerät zu identifizieren:
> 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
In meinem Fall schaue ich mir die Geschwindigkeit meiner externen WD MyBook-Festplatte an. Daher lautet die interessante Zeile:
Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.
Aber es scheint, dass der Teil „Bus 001 Gerät 004“ für uns nicht nützlich ist, um die aktuelle Gerätegeschwindigkeit zu ermitteln. Stattdessen benötigen wir die beiden durch Doppelpunkte getrennten Zahlen 1058:25ee, die Hersteller-ID und die Produkt-ID für dieses Gerät.
Sie sollten nun das /sys/devices
Verzeichnis auf den Inhalt der idVendor
Datei überprüfen und nach der oben angegebenen Lieferanten-ID suchen (ersetzen Sie 1058 durch Ihre eigene Lieferanten-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
Nehmen Sie nun den obigen Ausgabepfad, ersetzen Sie idVendor
ihn durch speed
und sehen Sie sich den Inhalt an:
> cat ./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/speed
480
Auf diese Weise entdecken Sie eine 480 Mbit/s USB 2.0-Verbindung.
Wenn Sie mehrere Geräte angeschlossen haben, können Sie idProduct
auch den Inhalt überprüfen. Wenn Sie mehrereidentischserial
Geräte, suchen Sie auch nach dem Inhalt von .
Antwort3
Meiner Erfahrung nach lsusb -D
kann der Befehl irreführend sein, wenn er „Funktionen“ meldet, die derzeit durch den Buchsentyp, an den Ihr Gerät angeschlossen ist, nicht aktiviert sind. Siehe unten ein Beispiel für eine gefilterte Ausgabe (die gesamte Ausgabe umfasste über sudo lsusb -D ${USB_DEVICE_PATH}
80 Zeilen). In diesem Beispiel schließe ich daraus, bcdUSB 3.00
dass dies bedeuten sollte Device can operate at SuperSpeed (5Gbps)
– obwohl diese Zeile noch vorhanden war, als ich mein Laufwerk zum Vergleich an eine USB-2-Buchse anschloss.
$ 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)
Beachten Sie auch, dass die idProduct
Zeile einen Hinweis-/Werbetext enthielt, 6Gb/s
der nicht als erreichbare Geschwindigkeit interpretiert werden sollte.
Alternativer Kurzbefehl, der möglicherweise nützlicher ist:
$ 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
Antwort4
Wenn Sie die tatsächliche Geschwindigkeit der Verbindung herausfinden möchten (im Gegensatz zu den von lsusb gemeldeten Kapazitäten), können Sie die „Speed“-Dateien aus /sys/devices lesen. Vorausgesetzt, Sie können das Gerät problemlos verbinden und trennen, können Sie das folgende Skript verwenden, um den Vorgang halbautomatisch zu gestalten. Ein weiteres Skript zum Abrufen einer vollständigen Liste wird unten beschrieben.
- Trennen Sie das Gerät ab
- Starten Sie das Skript. Sie werden aufgefordert, das Gerät anzuschließen und die Eingabetaste zu drücken.
- Gerät anschließen
- Drücken Sie Enter
- Das Skript meldet die entsprechende Verbindungsgeschwindigkeit:
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/speed 480
Oder:
/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1/speed 5000
Hier sind die möglichen Geschwindigkeiten in Mbit/s:
- 1,5 = USB 1.0/Low-Speed
- 12 = USB 1.1/Vollgeschwindigkeit
- 480 = USB 2.0/Hi-Speed
- 5000 = USB 3.0/SuperSpeed
- 10000 = USB 3.1/SuperSpeed
Und hier ist das Skript. Ich nenne es 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"
Wenn Sie lieber einen Überblick über alle Geräte und die entsprechenden Geschwindigkeiten haben möchten, können Sie das folgende Skript verwenden. Ich nenne es 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"
Standardmäßig werden die Geräte in der Reihenfolge ausgegeben, in der sie in /sys/devices gefunden werden. Wenn Sie sie nach Geschwindigkeit sortieren möchten, können Sie dies mit folgendem kombinieren 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
Hier wird die Tastatur mit einer sehr niedrigen Geschwindigkeit (1,5) angeschlossen, was normal ist, und das USB-Festplatten-Dock (ATAPI-6 Bridge Controller) mit 5000MBit/s.
Eine weitere Möglichkeit, die Geräte und ihre Geschwindigkeit aufzulisten, ist das Skript "usb-devices" vonAbonnierenund wird von einigen Distributionen standardmäßig installiert. Es ist allgemeiner, aber auch sehr ausführlich. Es gibt die Geschwindigkeit in der ersten Zeile der Gerätebeschreibung an:
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
Stellen Sie sicher, dass Sie eine aktuelle Version verwenden. Die mit Ubuntu 22.04 bereitgestellte Version listet nicht alle Geräte auf.