usbreset
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Ubuntu 18.04 Bionic Beaver
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
usbreset ist ein kleines Programm, mit dem man USB-Anschlüsse über die Kommandozeile oder aus Skripten heraus trennen und wieder anschließen kann, ohne dazu tatsächlich das Gerät abstöpseln und wieder anschließen zu müssen. Das kann sinnvoll sein, wenn bestimmte Programme Schwierigkeiten haben, Geräte anzusprechen, weil sie angeblich "belegt" sind, oder zum Resetten von Anschlüssen nach Änderungen. Das Programm sollte theoretisch auf allen Ubuntu-Versionen laufen.
Installation einschießlich 18.04¶
usbreset ist in Versionen vor 20.04 nicht in den Quellen vorhanden; es wurde 2008 von Alan Stern auf Nachfrage in einem Forum 🇬🇧 veröffentlicht. Zur Erstellung ist ggf. die Installation[1] des Paketes
build-essential
Befehl zum Installieren der Pakete:
sudo apt-get install build-essential
Oder mit apturl installieren, Link: apt://build-essential
nötig.
Der Quellcode ⮷ wird kopiert und in einem Editor[2] als usbreset.c gespeichert. Dann im Terminal[3] in das Download-Verzeichnis wechseln und mit
cc usbreset.c -o usbreset
das Programm erstellen. Die entstandenen Programmdatei usbreset z.B. nach /usr/local/bin (Root-Rechte[4] nötig!) verschieben, damit sie allen Benutzern zur Verfügung steht.
Hinweis!
Fremdsoftware kann das System gefährden.
Ab 20.04¶
Ab Version 20.04 ist usbreset Teil des Paketes
usbutils
Befehl zum Installieren der Pakete:
sudo apt-get install usbutils
Oder mit apturl installieren, Link: apt://usbutils
Es muss also nicht mehr eigens erstellt werden und sollte in jeder Standard-Installation verfügbar sein.
Benutzung bis 18.04¶
Das Programm wird auf der Kommandozeile mit dem Befehl
usbreset /dev/bus/usb/xxx/xxx
aufgerufen. Das gesuchte Geräte kann man sich per lsusb
ausgeben lassen (Beispielausgabe):
~$ lsusb Bus 002 Device 004: ID 04a9:221c Canon, Inc. CanoScan LiDE 60 Bus 002 Device 002: ID 07ab:fc9f Freecom Technologies Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Den CanoScan Lide 60
kann man also per
usbreset /dev/bus/usb/002/004
"resetten".
Bei Erfolg sieht die Ausgabe so aus:
Resetting USB device /dev/bus/usb/002/004 Reset successful
Auch in der dmesg
-Ausgabe erkennt man die Aktion an einer Zeile wie
[ 7777.425464] usb 2-5: reset high-speed USB device number 4 using ehci-pci
Bei fehlerhafter Device-Angabe spuckt das Programm
"Error opening output file"
aus.
Die Verwendung setzt, anders als in diesem Beitrag 🇬🇧 auf askubuntu suggeriert, keine Root-Rechte voraus, kann also auch aus Skripten heraus gut verwendet werden (siehe z.B. scanbuttond - Mehrfachbelegung von Tasten).
Benutzung ab 20.04¶
Mit der Version aus den Quellen hat sich die Syntax zur Bedienung geändert. Um sich die Geräte anzeigen zu lassen , kann einfach
usbreset
verwendet werden, Beispielausgabe
... Devices: Number 003/005 ID 041e:0011 SB ROAR Number 002/002 ID 8087:8000 Number 003/003 ID 04a9:190f CanoScan Number 004/002 ID 07ab:fc9f Freecom Mobile Drive XXS 3.0 Number 001/002 ID 8087:8008 Number 003/007 ID 046d:0825 Number 003/004 ID 045e:00cb Microsoft USB Optical Mouse Number 003/002 ID 046d:c52b USB Receiver
Das gewünschte Gerät kann dann entweder über die Bus/Device-Nummer angesprochen werden, z.B.
usbreset 003/003
oder über die Produkt:Hersteller-ID, z.B.
usbreset 04a9:190f
oder den Produktnamen (wenn er vorhanden ist):
usbreset "CanoScan"
Das Ergebnis wäre in allen drei Fällen
Resetting CanoScan ... ok
Ggf. muss der Befehl auch mit Root-Rechten ausgeführt werden, falls das Ergebnis so aussieht:
Resetting ... can't open [Permission denied]
Alternativen¶
In dem schon angesprochen Beitrag 🇬🇧 werden weitere Vorgehensweisen beschrieben, die auch ohne ein "neues" Programm auskommen, die Version mit usbreset ist aber in der Anwendung komfortabler.
Links¶
Beitrag 🇬🇧 auf askubuntu.com