usbreset

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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:

  1. Installation von Programmen

  2. Einen Editor verwenden

  3. Ein Terminal verwenden

  4. Root-Rechte

Inhaltsverzeichnis
  1. Installation einschießlich 18.04
  2. Benutzung bis 18.04
  3. Alternativen
  4. Links

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

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

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.