[[Vorlage(Getestet, jammy bionic)]]

{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Programme_starten: Starten von Programmen]
[:Terminal: Ein Terminal öffnen]
[:mit Root-Rechten arbeiten:]
[:Editor:einen Editor öffnen]
}}}

[[Inhaltsverzeichnis(1)]]

[[Bild(./usbip_logo.png, 75, align=left)]]
[sourceforge2:usbip:USB/IP] {en} 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]:

{{{#!vorlage Paketinstallation
linux-tools-generic
}}}

Für Ubuntu 22.04 wird außerdem ein entsprechendes Kernelpaket benötigt, z.B.:

{{{#!vorlage Paketinstallation
linux-tools-5.15.0-53-generic
}}}

Die laufende Kernelversion kann folgendermaßen ermittelt werden.
{{{#!vorlage Befehl
uname -r
}}}

{{{#!vorlage Warnung
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].

{{{#!vorlage Befehl
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.

{{{#!vorlage Befehl
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.

{{{#!vorlage Befehl
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.

{{{#!vorlage Befehl
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.

{{{#!vorlage Befehl
usbip list -l
}}}

Nachdem man nun im nächsten Befehl die Bus-ID eingesetzt hat, ist der Server fertig.

{{{#!vorlage Befehl
sudo usbip bind -b "Bus-ID"
}}}

== Konfigurierung des Clients ==

Auch hier muss zuerst das benötigte Kernelmodul geladen werden.

{{{#!vorlage Befehl
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.

{{{#!vorlage Befehl
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.

{{{#!vorlage Befehl
sudo usbip attach -r "Serveraddresse" -b "Bus-ID"
}}}

= Befehle =

{{{#!vorlage Tabelle
<rowclass="kopf"> Befehl
Funktion
+++
<-6> '''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.
+++
<-6> '''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:

{{{#!vorlage Befehl
sudo ln -sf /usr/bin/usbd /usr/sbin/usbd
}}}

kann diese aber wiederhergestellt werden.

= Links =
 * [sourceforge2:usbip:Projektseite] {en}
  * [man:usbip:Manpage] {en}

#tag: Netzwerk, System, Shell, Hardware