So teilen Sie Ihr USB-Gerät in Ubuntu 24.04 über LAN
Dieses Tutorial zeigt, wie Sie Ihr USB-Gerät, z. B. USB-Maus/-Tastatur, USB-Laufwerk, Webcam und Lautsprecher, in Ubuntu freigeben, damit Sie von anderen Computern/Laptops aus remote darauf zugreifen können.
Der Linux-Kernel enthält ein Befehlszeilentool namens USB/IP, das die gemeinsame Nutzung von USB-Geräten zwischen Computern mit vollem Funktionsumfang ermöglicht. Ein Computer kann also Remote-USB-Geräte verwenden, als wären sie direkt angeschlossen.
Wenn Sie nur USB-Maus und -Tastatur zwischen Computern teilen möchten, ist Barrier eine gute Wahl. Aber für Webcam, USB-Laufwerk, Drucker (über den normalerweise die Option besteht, diese Aufgabe zu erledigen) und andere allgemeine USB-Geräte zeigt Ihnen dieses Tutorial, wie es geht.
Schritt 1: Installieren Sie das USB/IP-Kernel-Tool
Drücken Sie zunächst Strg+Alt+T
auf der Tastatur, um ein Terminalfenster zu öffnen.
Wenn das Terminal geöffnet wird, führen Sie den Befehl aus, um die Linux-Kernel-Tools zu installieren:
sudo apt install linux-tools-$(uname -r)
Dieser Befehl installiert die Kernel-Tools für die aktuelle Kernel-Version. Da Ubuntu seinen Kernel regelmäßig aktualisiert, müssen Sie diesen Befehl möglicherweise für neuere Kernel erneut ausführen.
Schritt 2: USB-Geräte zur Laufzeit freigeben
Wenn Sie diese Methode nur ausprobieren möchten, funktioniert sie bis zum Neustart oder bis Sie sie manuell deaktivieren. Führen Sie dann die folgenden Befehle nacheinander aus.
1. Laden Sie zunächst die USB/IP-spezifischen Kernelmodule. Auf dem Host-Computer mit angeschlossenen USB-Geräten müssen Sie zunächst die Kernelmodule usbip_core
und usbip_host
laden.
Öffnen Sie dazu das Terminal (Strg+Alt+T) und führen Sie den folgenden Befehl aus:
sudo modprobe usbip_core
sudo modprobe usbip_host
2. Führen Sie dann den Daemon aus. Es gibt einen usbipd
-Befehl zum Ausführen des Server-Daemons, der standardmäßig den TCP-Port 3240 überwacht.
Um den Daemon zu starten, öffnen Sie einfach das Terminal und führen Sie den folgenden Befehl aus:
usbipd &
Wenn Port 3240 verwendet wird oder Sie einen anderen Port abhören möchten, verwenden Sie stattdessen usbipd --tcp-port 1234 &
(ersetzen Sie die Nummer 1234).
3. Drucken Sie anschließend alle USB-Geräte auf dem Computer aus, um Informationen wie Bus-ID, Hersteller-ID und Produkt-ID zu erhalten.
usbip list -l
In der Ausgabe müssen Sie sich die Bus-ID (normalerweise 1-1, 1-2, …) für das USB-Gerät merken, das Sie freigeben möchten.
Zuletzt binden Sie das USB-Gerät, sodass kein Fernzugriff darauf möglich ist (ersetzen Sie die Bus-ID 1-1
durch Ihre eigene).
sudo usbip bind -b 1-1
Es sollte etwas wie „Gerät an *** binden: abgeschlossen“ ausgegeben werden. Wenn Sie jedoch bei USB-Tastaturen/-Mäusen die Geräte auf dem Host verschieben oder verwenden, bevor Sie eine Remote-Verbindung herstellen, schlägt die Bindung möglicherweise fehl.
Und um die Freigabe des USB-Geräts zu beenden, verwenden Sie den folgenden Befehl:
sudo usbip unbind -b 1-1
Schritt 3: Greifen Sie vom Remote-Computer aus auf das USB-Gerät zu
Für die Client-Rechner müssen Sie außerdem das USB/IP-Tool installieren. Siehe Schritt 1 für Linux und gehen Sie zu dieser Seite für Windows (nicht getestet).
Anschließend müssen Sie das Kernelmodul vhci_hcd
laden, indem Sie den folgenden Befehl ausführen:
sudo modprobe vhci_hcd
Listen Sie abschließend die zugänglichen Remote-USB-Geräte auf:
sudo usbip list -r 192.168.0.104
Und schließen Sie den Remote-USB über den folgenden Befehl an:
sudo usbip attach -r 192.168.0.104 -b 1-1
Ersetzen Sie hier 192.168.0.104
durch Ihre Host-IP und ersetzen Sie 1-1
entsprechend der Bus-ID, die Sie geteilt haben. Wenn alles gut geht, sollten Sie das Remote-USB-Gerät nun wie direkt angeschlossen verwenden können.
Um die Remote-USB-Verbindung zu trennen, verwenden Sie den Befehl, um zunächst alle angeschlossenen Geräte aufzulisten:
sudo usbip port
Führen Sie dann den Befehl zum Trennen aus (ersetzen Sie 00
entsprechend der letzten Befehlsausgabe).
sudo usbip detach -p 00
Aktivieren Sie die USB-Gerätefreigabe beim Start
Wenn die vorherigen Schritte gut funktionieren und Sie es dauerhaft machen möchten, können Sie Regeln schreiben, um die Kernelmodule automatisch zu laden, den Daemon automatisch zu starten und das USB-Gerät automatisch zu binden.
HINWEIS: In den folgenden Schritten verwende ich gnome-text-editor
(Gnome-Standard), um eine Konfigurationsdatei zu erstellen und zu bearbeiten. Sie können es durch gedit
für 22.04 und früher, mousepad
für den XFCE-Desktop oder nano
-Texteditor (Strg+S zum Speichern, Strg+ X zum Beenden), das in den meisten Desktop-Umgebungen funktioniert.
1. Laden Sie zunächst automatisch die Kernelmodule beim Systemstart, indem Sie mit dem Befehl (Strg+Alt+T) eine benutzerdefinierte Konfigurationsdatei erstellen:
sudo gnome-text-editor /etc/modules-load.d/usbip.conf
Wenn die Datei geöffnet wird, fügen Sie einfach die beiden folgenden Zeilen hinzu und speichern Sie:
usbip_core
usbip_host
2. Führen Sie dann den usbipd
-Daemon automatisch aus, indem Sie mit dem folgenden Befehl einen systemd-Dienst erstellen:
sudo gnome-text-editor /etc/systemd/system/usbipd.service
Wenn die Datei geöffnet wird, fügen Sie die folgenden Zeilen hinzu und speichern Sie:
[Unit]
Description=USB/IP server
After=network.target
[Service]
ExecStart=/usr/bin/usbipd
[Install]
WantedBy=multi-user.target
Zum Schluss Führen Sie den Befehl aus, um den Dienst zu aktivieren und zu starten:
sudo systemctl enable --now usbipd.service
HINWEIS: Der Dienst startet möglicherweise erst nach einem Systemneustart, da Sie den Daemon bereits in Schritt 2-2 ausgeführt haben.
3. Erstellen Sie abschließend einen Dienst, um das USB-Gerät, das Sie freigeben möchten, automatisch zu binden. Führen Sie dazu den folgenden Befehl aus:
sudo gnome-text-editor /etc/systemd/system/[email
Wenn die Datei geöffnet wird, fügen Sie die folgenden Zeilen hinzu und speichern Sie.
[Unit]
Description=USB-IP Binding on bus id %I
After=network-online.target usbipd.service
Wants=network-online.target
Requires=usbipd.service
#DefaultInstance=1-1
[Service]
Type=simple
ExecStart=/usr/bin/usbip bind -b %i
RemainAfterExit=yes
ExecStop=/usr/bin/usbip unbind -b %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
Als nächstes müssen Sie den Befehl ausführen, um den Dienst zu aktivieren und zu starten:
sudo systemctl enable --now [email
Ersetzen Sie in diesem Befehl 1-1 entsprechend der Bus-ID des USB-Geräts, das Sie freigeben möchten.
Wenn Sie fertig sind, starten Sie Ihren Computer neu und versuchen Sie, eine Verbindung vom Remote-Computer herzustellen.
Rückgängig machen:
Um den letzten Schritt rückgängig zu machen, öffnen Sie zunächst das Terminal (Strg+Alt+T) und führen Sie den Befehl aus, um die Dienste zu deaktivieren (ersetzen Sie auch 1-1 entsprechend):
sudo systemctl disable --now [email
sudo systemctl disable --now usbipd.service
Entfernen Sie dann die drei Konfigurationsdateien. Die Dienstdateien funktionieren jedoch erst, wenn Sie sie erneut aktivieren:
sudo rm /etc/systemd/system/[email
sudo rm /etc/systemd/system/usbipd.service
sudo rm /etc/modules-load.d/usbip.conf