USBIP
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
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:
USB/IP 🇬🇧 ist eine Softwarelösung um USB-Geräte wie Mäuse, USB-Sticks usw. auf einen anderen System über das Netzwerk verfügbar zu machen, so das es wie ein lokales USB-Gerät genutzt werden kann.
Installation¶
USBIP ist ab Kernel 3.17 in folgendem Paket enthalten[1]:
linux-tools-generic
Befehl zum Installieren der Pakete:
sudo apt-get install linux-tools-generic
Oder mit apturl installieren, Link: apt://linux-tools-generic
Für Ubuntu 22.04 wird außerdem ein entsprechendes Kernelpaket benötigt, z.B.:
linux-tools-5.15.0-53-generic
Befehl zum Installieren der Pakete:
sudo apt-get install linux-tools-5.15.0-53-generic
Oder mit apturl installieren, Link: apt://linux-tools-5.15.0-53-generic
Die laufende Kernelversion kann folgendermaßen ermittelt werden.
uname -r
Achtung!
Es sollte auf keinen Fall das separate Paket usbip installiert werden! Dieses Paket ist bei allen Ubuntu-Versionen völlig veraltet und bereitet im späteren Verlauf Probleme.
Konfiguration¶
Konfigurierung des Servers¶
Nach der Installation muss man als erstes das für "usbip" wichtige Kernelmodul laden[3][4].
sudo modprobe usbip-host
Um das Modul permanent zu laden, muss man /etc/modules editieren und usbip-host hinzufügen[4][5].
Als nächstes muss ein Link von usbutils nach hwdata angelegt werden, damit die USB-Geräte richtig angezeigt werden.
sudo mkdir /usr/share/hwdata/ sudo ln -sf /var/lib/usbutils/usb.ids /usr/share/hwdata/
Nun kann ein "usbip" Server gestartet werden, was natürlich nach jedem Neustart wiederholt werden muss, wenn man dies nicht in den Autostart einfügt.
sudo usbipd -D
Nun kann mit der eigentlichen Konfiguration der USB-Geräte begonnen werden. Hierfür sollte man sich erst einmal einen Überblick über alle USB-Geräte verschaffen, dabei sollte man auf die Bus-ID achten.
lsusb
Mit der ID oder dem Namen kann man nun in der Liste von "usbip" nach der richtigen Bus-ID (Zahl-Zahl
; z.B. 1-2
; nicht USB-ID!) suchen.
usbip list -l
Nachdem man nun im nächsten Befehl die Bus-ID eingesetzt hat, ist der Server fertig.
sudo usbip bind -b "Bus-ID"
Konfigurierung des Clients¶
Auch hier muss zuerst das benötigte Kernelmodul geladen werden.
sudo modprobe vhci-hcd
Um das Modul permanent zu laden, muss man /etc/modules editieren und vhci-hcd hinzufügen.
Nun kann man sich mit diesem Kommando einen Überblick über die Freigabe der USB-Geräte eines Servers verschaffen.
usbip list -r "Serveraddresse"
Zum Schluss muss man nur noch das nächste Kommando mit der richtigen Bus-ID und der Serveradresse ausgeführt werden und alles sollte dann funktionieren.
sudo usbip attach -r "Serveraddresse" -b "Bus-ID"
Befehle¶
Befehl | Funktion | ||||
Serverbefehle | |||||
usbip list -l | Hiermit können alle lokalen USB-Geräte angezeigt werden, welche freigegeben werden können. | ||||
usbip bind -b "Bus-ID" | Hiermit kann ein USB-Gerät mit der zugeordneten Bus-ID zu den freigegebenen USB-Geräten hinzugefügt werden. | ||||
usbip unbind -b "Bus-ID" | Hiermit kann die Freigabe eines USB-Gerätes rückgängig gemacht werden. | ||||
Clientbefehle | |||||
usbip attach -r "Serveraddresse" -b "Bus-ID" | Hiermit kann ein freigegebenes USB-Gerät ins Client-System eingehängt werden. Dies muss zwingend mit Root-Rechten erfolgen! | ||||
usbip detach -p "Port" | Hiermit kann ein USB-Gerät wieder ausgehängt werden. Der Port kann mit usbip port ermittelt werden. | ||||
usbip list -r "Serveradresse" | Hiermit können alle freigegebenen USB-Geräte eines Servers angezeigt werden. | ||||
usbip port | Hiermit kann man sich alle eingehängten USB-Geräte anzeigen lassen. |
Problembehebung¶
usbipd wurde in /usr/sbin nicht gefunden¶
Falls man doch das Paket usbip installiert hatte und dieses deinstalliert wurde, so fehlt die Verlinkung auf das eigentliche Programm. Mit:
sudo ln -sf /usr/bin/usbd /usr/sbin/usbd
kann diese aber wiederhergestellt werden.
Links¶
Projektseite 🇬🇧
Manpage 🇬🇧