Wenn ein USB-Laufwerk, eine externe Festplatte oder ein serieller Adapter unter Linux nicht mehr reagiert, sollten Sie nicht sofort den Rechner neu starten. Überprüfen Sie zunächst, ob das Gerät vom Kernel, vom USB-Bus und anschließend vom System erkannt wird.
Dazu genügen wenige Befehle: lsusb, lsusb -t, dmesg Und journalctl -kSie erzählen nicht alle dieselbe Geschichte. Wenn Sie sie in der richtigen Reihenfolge verwenden, können Sie auf einem unbekannten Gerät schnell Zeit sparen.
Beginnen Sie mit der Auflistung der USB-Geräte.
Der einfachste Befehl lautet: lsusbEs zeigt die an den USB-Bussen erkannten Geräte an:
lsusb
Man erhält Zeilen wie diese:
Bus 002 Gerät 003: ID 0781:5581 SanDisk Corp. Ultra
Bus 001 Gerät 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Das Wichtigste ist oft der Identifikator. Anbieter:Produkt, Zum Beispiel 0781:5581Selbst wenn Linux den richtigen Treiber nicht geladen oder die Festplatte nicht eingebunden hat, beweist diese Kennung bereits, dass das Gerät am USB-Bus reagiert.
Falls der Befehl nicht existiert, installieren Sie das Paket. usbutils :
sudo apt update
sudo apt install usbutils
Bei anderen Distributionen bleibt der Paketname oft erhalten. usbutilsDie Handbuchseite lsusb(8) beschreibt die nützlichen Optionen.
Den Verzeichnisbaum mit lsusb -t anzeigen
lsusb zeigt Ihnen an, was erkannt wird. lsusb -t zeigt Ihnen, wie trendy es ist:
lsusb -t
Diese Ansicht ist besonders nützlich bei USB-Hubs, Dockingstationen und Frontplattenanschlüssen. Beispiel:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Gerät 3, Falls 0, Klasse=Massenspeicher, Treiber=USB-Speicher, 5000M
Hier sehen wir ein USB-Speichergerät in 5000MDaher wird USB 3.x verwendet. Wenn ein schnelles Laufwerk angezeigt wird 480 Mio.Es kann über ein Kabel mit begrenzter Kapazität an einen USB 2.0-Anschluss angeschlossen sein oder sich hinter einem Hub befinden, der die Geschwindigkeit begrenzt.
Schauen Sie sich auch die Spalte an TreiberWenn das Feld leer oder unerwartet ist, wird das Gerät zwar erkannt, der Treiber wird aber nicht unbedingt wie erwartet geladen.
Überwachen Sie, was am Verbindungspunkt geschieht.
Um das Problem richtig zu diagnostizieren, öffnen Sie ein Terminal, starten Sie die Kernelüberwachung und schließen Sie dann das Gerät an:
sudo dmesg -w
Sie können auch verwenden Journalctl Wenn Ihre Distribution die Protokolle mithilfe von systemd zentralisiert:
sudo journalctl -k -f
Am Verbindungspunkt sollten Sie Linien sehen, die sich auf Folgendes beziehen USB, neues Hochgeschwindigkeits-USB-Gerät, USB-Speicher, ttyUSB Oder sdX Das hängt von der Ausrüstung ab. Oft ist es aussagekräftiger als lsusb allein, weil die Fehler genau im Moment der Verbindung auftreten.
Um die neuesten Nachrichten erneut zu lesen, ohne in Echtzeit-Updates zu bleiben:
sudo dmesg | tail -80
sudo journalctl -k -n 80 --no-pager
Wenn Sie die Protokolle beim Systemstart oder nach einem Vorfall genauer analysieren möchten, habe ich die Vorgehensweise in der Anleitung unter folgendem Link ausführlich beschrieben: journalctl und die Protokolle des letzten Linux-Starts.
Identifizieren eines USB-Laufwerks, das sich nicht einbinden lässt
Ein USB-Laufwerk wird möglicherweise erkannt, aber nicht automatisch eingebunden. Überprüfen Sie in diesem Fall die Speicherblöcke:
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTS,MODEL
sudo blkid
Wenn die Disc erscheint in lsblkDas Problem liegt nicht am USB-Anschluss. Sie müssen das Dateisystem, die Berechtigungen, die automatische Einbindung und mögliche Partitionsfehler überprüfen. Falls nichts angezeigt wird… lsblk, kehren Sie zu den Kernel-Protokollen zurück.
Bei einem verdächtigen USB-Stick oder einer verdächtigen Festplatte sollten Sie nicht sofort eine Reparatur versuchen. Lesen Sie zuerst die Meldungen:
Linien mit Hochgeschwindigkeits-USB-Gerät zurücksetzen, E/A-Fehler Oder Gerätebeschreibung gelesen Sie deuten eher auf ein instabiles Kabel, Gehäuse, Netzteil oder Peripheriegerät hin.
Identifizieren Sie einen seriellen, Netzwerk- oder Bluetooth-Adapter.
Für einen USB-zu-Seriell-Adapter suchen Sie nach den Peripheriegeräten. ttyUSB Oder ttyACM :
ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
sudo dmesg | grep -Ei 'ttyUSB|ttyACM|ch341|cp210|ftdi'
Für einen USB-Netzwerkadapter kombinieren Sie lsusb mit Netzwerkschnittstellen:
IP-Link
nmcli device status 2>/dev/null
Wenn der Adapter gesehen wird von lsusb aber nicht drin IP-LinkSie haben wahrscheinlich ein Treiber- oder Firmwareproblem. Notieren Sie sich in diesem Fall die genaue USB-Kennung, bevor Sie nach einer Lösung suchen. 0bda:8153 Linux ist wesentlich effektiver als die einfache Suche nach „USB-Ethernet-Adapter“.
Die schnelle Lösung, wenn ein USB-Gerät nicht reagiert
Wenn ich schnell eine Diagnose stellen muss, verwende ich diese Vorgehensweise:
lsusb
lsusb -t
sudo journalctl -k -f
Als Nächstes trenne ich das Gerät vom Stromnetz und schließe es wieder an. Wenn sich in den Protokollen nichts ändert, teste ich einen anderen Anschluss, ein anderes Kabel oder ein anderes Netzteil. Falls die Protokolle Aktivität anzeigen, das Gerät aber weiterhin unbrauchbar ist, überprüfe ich den Treiber und den Speicher. lsblkoder die in /dev.
Es ist zwar keine Wunderlösung, aber es verhindert, dass es zu unübersichtlichen Problemen kommt. Zuerst wird der USB-Bus überprüft, dann die Kernel-Logs und erst dann die Einbindung, der Treiber oder die Anwendung, die die Hardware benötigt.
Dies muss überprüft werden, bevor man zu dem Schluss kommen kann, dass der Hafen tot ist.
Bevor man den USB-Anschluss beschuldigt, sollte man zumindest Folgendes testen:
- ein weiteres Kabel, insbesondere für externe Festplatten und Smartphones;
- ein direkter Anschluss am Gerät, ohne Hub;
- ein anderes Gerät am selben Port;
- die Nachrichten
dmesgOderjournalctl -kzum Zeitpunkt der Verbindung; - die Stromversorgung des Geräts, falls es sich um ein 2,5-Zoll-Laufwerk, ein Gehäuse oder eine Dockingstation handelt.
Wenn lsusb Wird das Gerät an einem Port erkannt, an einem anderen jedoch nicht, ist bereits ein Hardwareproblem vorhanden. Wird es an keinem Port erkannt, testen Sie es an einem anderen Rechner, bevor Sie Ihre Linux-Konfiguration ändern.
Für Befehle im Zusammenhang mit Protokollen siehe die Referenzen dmesg(1) Und journalctl(1) bleiben nützlich, wenn Sie eine bestimmte Option auswählen möchten.