USB/IP auf dem Client installieren und verwenden
TL;DR
Installieren Sie das Paket usbip, laden Sie das Kernelmodul vhci-hcd und verbinden Sie sich mit dem USB/IP-Server, um entfernte USB-Geräte lokal zu nutzen. Hängen Sie Geräte mit usbip -d
Überblick
Dieses Dokument beschreibt Schritt für Schritt, wie ein OpenSUSE-Client so eingerichtet wird, dass er entfernte USB-Geräte über das USB/IP-Protokoll verwendet. Es enthält die Installation, das Laden des Kernelmoduls, das automatische Laden beim Boot, das Verbinden (attach) und Trennen (detach) sowie eine Fehlerbehebung und administrative Checklisten.
Wichtige Begriffe in einer Zeile
- USB/IP: Überträgt USB-Kommunikation über ein TCP/IP-Netzwerk.
- vhci-hcd: Virtueller Host-Controller auf dem Client, erzeugt virtuelle USB-Ports.
Voraussetzungen
- Root- oder sudo-Rechte auf dem Client.
- Netzwerkverbindung zum USB/IP-Server (IP im Beispiel: 192.168.0.100).
- Auf dem Server muss usbipd laufen und das gewünschte Gerät freigegeben sein.
1. Paket installieren
Auf dem Client installieren Sie das usbip-Paket wie auf dem Server:
yast2 -i usbip
Auf OpenSUSE 11.2 erwartet usbip die Datei usb.ids in /usr/share/hwdata, sie befindet sich aber unter /usr/share/usbip/usb.ids. Erstellen Sie deshalb einen Symlink:
mkdir /usr/share/hwdata
ln -sf /usr/share/usbip/usb.ids /usr/share/hwdata/
Dieser Schritt sorgt dafür, dass usbip die Liste bekannter USB-Geräte finden kann.
2. Kernelmodul laden
Laden Sie das virtuelle Host-Controller-Modul:
modprobe vhci-hcd
Prüfen Sie, ob das Modul geladen wurde:
lsmod | grep vhci_hcd
Beispielausgabe:
client1:~ # lsmod | grep vhci_hcd
vhci_hcd 26576 0
usbip_common_mod 25232 1 vhci_hcd
client1:~ #
Wichtig: Wenn das Modul nicht auftaucht, prüfen Sie dmesg oder /var/log/messages auf Kernelmeldungen.
3. Modul beim Boot automatisch laden
Um vhci-hcd beim Systemstart automatisch zu laden, fügen Sie es der Variable MODULES_LOADED_ON_BOOT in /etc/sysconfig/kernel hinzu:
vi /etc/sysconfig/kernel
Fügen oder ändern Sie die Zeile wie folgt (als Codeblock dargestellt):
[...]
## Type: string
## ServiceRestart: boot.loadmodules
#
# This variable contains the list of modules to be loaded
# once the main filesystem is active
# You will find a few default modules for hardware which
# can not be detected automatically.
#
MODULES_LOADED_ON_BOOT="vhci-hcd"
[...]
Anschließend ausführen:
SuSEconfig
Hinweis: Die Anführungszeichen um vhci-hcd sind Teil der Konfigurationsdatei und müssen erhalten bleiben.
4. Verbindung zum USB/IP-Server herstellen und Gerät anhängen
Zuerst eine Liste verfügbarer Geräte vom Server abfragen (ersetzen Sie die IP durch die des Servers):
usbip -l 192.168.0.100
(192.168.0.100 ist die IP-Adresse des usbip-Servers.)
Beispielausgabe mit einem SanDisk-Flashlaufwerk (BUSID 2-5):
client1:~ # usbip -l 192.168.0.100
- 192.168.0.100
2-5: SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
: /sys/devices/pci0000:00/0000:00:04.1/usb2/2-5
: (Defined at Interface level) (00/00/00)
: 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)
client1:~ #
Um das Gerät an den Client anzuhängen, verwenden Sie die BUSID (z. B. 2-5):
usbip -a 192.168.0.100 2-5
Beispielausgabe:
client1:~ # usbip -a 192.168.0.100 2-5
8 ports available
port 0 attached
client1:~ #
Überprüfen Sie, ob das Gerät auf dem Client erschien:
lsusb
Beispiel:
client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
client1:~ #
Nach dem Anhängen können Sie das Gerät wie ein lokales USB-Gerät verwenden (mounten, formatieren, lesen, schreiben usw.).
5. Entfernen/Abtrennen eines entfernten USB-Geräts
Ermitteln Sie auf dem Client zunächst, welcher Port für das entfernte Gerät genutzt wird:
usbip --port
Beispielausgabe (Port 00 in Verwendung):
client1:~ # usbip --port
8 ports available
Port 00: at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/2-5 (remote devid 00020002 (bus/dev 002/002))
1-1:1.0 used by usb-storage
/sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host4/scsi_host/host4/device
Port 01:
Port 02:
Port 03:
Port 04:
Port 05:
Port 06:
Port 07:
client1:~ #
Anschließend Gerät vom Client trennen (hier Port 00):
usbip -d 00
Beispiel:
client1:~ # usbip -d 00
8 ports available
port 0 detached
client1:~ #
Auf dem Server können Sie das Gerät wieder an das lokale System binden, damit es nicht mehr über das Netzwerk angeboten wird. Verwenden Sie dazu den BUSID (z. B. 2-5):
bind_driver --other 2-5
Beispielserver-Ausgabe:
server1:~ # bind_driver --other 2-5
(process:3484): DEBUG: write "del 2-5" to /sys/bus/usb/drivers/usbip/match_busid
Message: bind 2-5 to other drivers than usbip, complete!
server1:~#
Zur Kontrolle führen Sie auf dem Client erneut lsusb aus; das entfernte Gerät sollte nicht mehr gelistet sein:
client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~ #
Fehlerbehebung und häufige Probleme
- Modul nicht geladen: Prüfen Sie
dmesg
undlsmod
. Bei fehlendem Modul: Kernel-Version und Module-ABI prüfen. - Verbindung abbricht: Netzwerk (MTU, Firewalls, Paketverlust) überprüfen; USB/IP verwendet standardmäßig TCP/3240.
- Zugriffsrechte: Stellen Sie sicher, dass auf dem Server usbipd mit ausreichenden Rechten läuft und das Gerät freigegeben ist.
- Gerät erscheint, aber /dev/sdX fehlt: Warten Sie kurz auf das udev-Device, prüfen Sie
dmesg
auf SCSI/USB-Fehler. - Performance-Probleme: USB-over-IP hat Latenz; für hohe Durchsatzanforderungen prüfen Sie Netzwerkbandbreite und Latenz.
Wichtige Prüfbefehle:
- lsmod | grep vhci_hcd
- dmesg | tail -n 50
- usbip -l
- usbip –port
Wann USB/IP nicht die richtige Lösung ist
- Echtzeit-Anforderungen oder hohe Latenz-Empfindlichkeit (Audio/Video in Echtzeit).
- Wenn Sicherheitsrichtlinien kein transparentes Proxying von Peripherie erlauben.
- Wenn PCIe- oder andere nicht-USB-Geräte benötigt werden.
Alternative Ansätze
- NFS/SMB für Dateizugriff anstelle von Remote-USB-Massenspeichern.
- Dedizierte Netzwerk-Attached-Storage (NAS) Geräte für zuverlässige Freigaben.
- USB-over-Ethernet-Hardware-Adapter, wenn eine proprietäre Lösung erwünscht ist.
Checkliste für Administratoren (Schritt-für-Schritt)
- Paket usbip installiert (yast2 -i usbip).
- Symlink für usb.ids angelegt, falls erforderlich.
- vhci-hcd mit modprobe geladen und mit lsmod geprüft.
- MODULES_LOADED_ON_BOOT angepasst und SuSEconfig ausgeführt.
- Server-IP und verfügbare BUSIDs ermittelt (usbip -l).
- Gerät mit usbip -a angehängt, mit lsusb geprüft.
- Gerät mit usbip -d oder bind_driver –other korrekt getrennt.
Kurze Betriebsempfehlungen
- Verwenden Sie SSH/Tunnels oder VPNs, wenn Sie USB/IP-Verkehr über unsichere Netze senden.
- Überwachen Sie Verbindungen mit Tools wie netstat/ss, falls Verbindungsprobleme auftreten.
- Dokumentieren Sie BUSIDs und zugehörige Servergeräte, damit Sie schnell erneut binden/abbinden können.
Zusammenfassung
Mit usbip lässt sich entfernte USB-Hardware so nutzen, als wäre sie lokal angeschlossen. Wichtige Schritte sind die Installation des Pakets, das Laden und dauerhafte Aktivieren des vhci-hcd-Moduls und das sichere Verbinden sowie ordnungsgemäße Trennen der Geräte. Prüfen Sie Netzwerk, Logs und Berechtigungen bei Problemen.
Links
- USB/IP Project: http://usbip.sourceforge.net/
- OpenSUSE: http://www.opensuse.org/
Ähnliche Materialien

Python-Fehler oxzep7 schnell beheben

Papierkorb auf Mac wiederherstellen

Gefälschte Telefonnummern in KI‑Suchergebnissen vermeiden

iMessage auf Android nutzen – AirMessage Guide

Windows Server 2019: Abgesicherten Modus starten
