Raspberry Pi

USB-Geräte in Linux im Netzwerk verfügbar machen

19.12.2014 von Thorsten Eggeling
In einem Netzwerk können Sie Geräte gemeinsam verwenden. Das geht nicht nur indirekt wie bei der Dateifreigabe. Die Hardware lässt sich auch direkt ansprechen.

Für viele Geräte gibt es eigene Server- Dienste, die eine gleichzeitige und gemeinsame Nutzung über das Netzwerk erlauben. Bei Druckern beispielsweise richten Sie dafür eine Druckerfreigabe ein und bei USB-Festplatten eine Dateifreigabe. Es ist aber auch möglich, USB-Geräte über das Netzwerk so anzusprechen, als ob Sie direkt mit dem PC verbunden wären. Das ist beispielsweise bei Scannern und Multifunktionsgeräten recht sinnvoll. Für diese Aufgabe können Sie auch Ihren Raspberry Pi einsetzen.

1. So funktioniert ein USB-Server

Ein USB-Server verwendet einen Treiber für die Kommunikation mit dem USB-Host-Controller beziehungsweise den daran angeschlossenen Geräten. Der Treiber stellt gleichzeitig eine Schnittstelle im Netzwerk bereit, über die Kommandos an ein USB-Gerät weitergeleitet werden. Auf einem Client-PC im Netzwerk verarbeitet ein Treiber Anfragen an ein virtuelles USB-Gerät und sendet diese an den Server. Der decodiert die Informationen und leitete Sie an das physisch vorhandene USB-Gerät weiter. Für den Client sieht es so aus, als ob das USB-Gerät direkt mit ihm verbunden wäre, also im USB-Port am PC steckt. Beachten Sie aber, das bei dieser Methode immer nur jeweils ein PC das Gerät nutzen kann. Soll es an einem anderen Gerät zum Einsatz kommen, muss die vorherige Verbindung zuerst getrennt werden.

Die in diesem Artikel vorgestellte Software des USB/IP-Projekts gibt es zwar schon seit einigen Jahren, aber die Entwicklung ist immer noch nicht abgeschlossen. Inzwischen sind die Treiber in den Linux-Staging-Tree eingeflossen. Dadurch gibt es eine zentrale Stelle für die Weiterentwicklung, aber der Code wird bisher nicht als ausreichend stabil angesehen. Bei einigen Linux-Distributionen, etwa Ubuntu, sind die nötigen Kernel-Module bereits standardmäßig dabei, bei Raspian jedoch nicht. Deshalb müssen Sie diese selbst erstellen.

Den USB-Server des USB/IP-Projekts gibt es nur für Linux, Client-Software und Treiber sind für Linux (Punkt 2) und Windows erhältlich.


2. Kernel-Module für Raspbian erstellen

Wir gehen davon aus, dass Sie auf Ihrem Raspberry Pi bereits Raspbian installiert haben. Die folgenden Beschreibungen funktionieren ohne größere Änderungen nur zusammen mit Raspbian und der 64-Bit-Version von Ubuntu 14.04. Obwohl wir nur drei zusätzliche Kernel-Module (Treiber) benötigen, ist es kaum empfehlenswert, diese auf dem Raspberry Pi zu erstellen. Das dauert unverhältnismäßig lange. Deutlich schneller geht es mit einem anderen Linux-System, das Sie entweder auf dem PC oder in einer virtuellen Maschine einrichten, etwa mit Virtualbox. Sie können dafür die Ubuntu-Variante Mythbuntu verwenden.

Öffnen Sie ein Terminal-Fenster. In Mythbuntu gehen Sie dazu im Menü auf „Applications > System > Xfce Terminal“. Führen Sie die folgenden zwei Befehlszeilen aus:

cd ~ && wget www.pcwelt.de/oyhy -O
raspi_crosstools.sh
chmod 755 raspi_crosstools.sh

Achten Sie bei der wget-Zeile darauf, ein großes „-O“ zu verwenden. Starten Sie das Script dann mit der Zeile

sudo ./raspi_crosstools.sh

Geben Sie das root-Passwort ein, wenn Sie dazu aufgefordert werden.

Das Script installiert zuerst die Versionsverwaltung Git, über die es den Raspian-Kernel und einige Tools herunterlädt. Die Tool-Sammlung enthält alles, was Sie benötigen, um auf einem PC mit Intel/AMD-Prozessor (x86/x64) einen Kernel beziehungsweise Kernel-Module für den Raspberry Pi (ARM-Prozessor) zu kompilieren. Nach erfolgreichem Download erstellt das Script die Kernel-Module „usbip-core.ko“, „usbip-host.ko“ und „vhci-hcd.ko“ im Verzeichnis „~/raspi_cross/kernel_mod/lib/modules/ 3.12.28+/extra“. Sollte der Kernel inzwischen neue Optionen bieten, ermöglicht das Konfigurations-Script die Modulauswahl.

Module kompilieren: Bei Raspbian fehlen die nötigen Kernel-Module für die Usbip-Software. Sie erstellen diese am schnellsten unter Ubuntu auf einem PC oder in einer virtuellen Maschine.

Bestätigen Sie hier einfach die Vorgaben so oft wie nötig mit der Enter-Taste. Sobald das Script seine Arbeit abgeschlossen hat, kopieren Sie die erzeugten ko-Dateien auf Ihren Raspberry Pi in das Verzeichnis „/lib/modules/3.12.28+/extra“. Führen Sie auf diesem in einem Terminalfenster den Befehlsudo depmod aus, damit die neuen Kernel-Module eingebunden werden.

Das Script „raspi_crosstools.sh“ erstellt auch das Tool usbip im Verzeichnis „/usr/local/sbin“. Dabei handelt es sich um die Client-Anwendung für Ubuntu, mit der Sie USB-Geräte einbinden können. In das Verzeichnis „~/raspi_cross/Windows“ lädt das Script Treiber und Client-Anwendung für Windows 7 und 8 herunter. Kopieren Sie die Dateien „usbip_windows_ v0.2.0.0_signed.zip“ und „usbipv0.2.0. zip“ auf Ihren Windows-PC.

3. USB-Server auf dem Pi einrichten

Auf dem Raspberry Pi müssen Sie jetzt die Tools für die Verwaltung der USB-Geräte installieren. Führen Sie dazu in einem Terminalfenster folgende zwei Zeilen aus:

sudo apt-get update
sudo apt-get install usbip

Jetzt ist Zeit für einen ersten Testlauf. Schließen Sie das USB-Gerät, das Sie im Netzwerk verwenden wollen, an den Raspberry Pi an. Führen Sie die folgenden zwei Befehlszeilen aus:

sudo modprobe usbip-host
sudo usbipd -d

Damit laden Sie das nötige Kernel-Modul mit und starten den Usbip-Daemon im Debug-Modus. Wenn Sie die Software ausführlich getestet haben, tragen Sie beide Zeilen für den automatischen Start in die Datei „/etc/rc.local“ oberhalb von „exit 0“ ein, ersetzen aber „-d“ durch „-D“. Öffnen Sie ein zweites Terminalfernster. Der Befehl

sudo usbip list -l

gibt Ihnen hier die Liste der verfügbaren USBGeräte aus. Sie sehen deren USB-IDs beispielsweise in der Form „busid 1-1.3 (0424:ec00)“. Der Befehl lsusb zeigt die Gerätebezeichnung zur ID in der Regel im Klartext. Die Freigabe kann jetzt mit der dieser Zeile erfolgen:

sudo usbip bind -b 1-1.3

Der Erfolg wird mit der Ausgabe „bind device on busid 1-1.3: complete“ bestätigt.

USB-Geräte freigeben: Mit dem Befehl sudo usbip list -l ermitteln Sie die Bus-IDs der an den Raspberry Pi angeschlossenen USB-Geräte. Diese benötigen Sie für die Freigabe im Netzwerk.

4. Zugriff auf USB-Geräte über das Netz

Installieren Sie unter Windows 7 oder 8 den Treiber aus dem Archiv „usbip_windows_ v0.2.0.0_signed.zip“ (Punkt 2).

Eine Anleitung dazu finden Sie in der enthaltenen Datei „Install.txt“. Im Archiv „usbipv0.2.0. zip“ sind nur die Dateien „Usb.ids“ und „Usbip.exe“ enthalten. Öffnen Sie unter Windows eine Eingabeaufforderung in dem Verzeichnis, in das Sie „usbip-v0.2.0.zip“ entpackt haben. Mit

usbip.exe -l 192.168.0.37

erfahren Sie, welche Geräte ein USB-Server freigegeben hat. Die Adresse im Beispiel ersetzen Sie durch die IP-Adresse Ihres Raspberry Pi. Der Befehl

usbip.exe -a 192.168.0.37 1-1.3

stellt dann die Verbindung zu Bus-ID 1-1.3 her. Die Windows-Version des Programms läuft bisher nur im Vordergrund. Sie trennen die Verbindung einfach, in dem Sie das Fenster der Eingabeaufforderung schließen.

Auf einem Ubuntu-System verwenden Sie die in Punkt 2 kompilierten Tools ähnlich. Die Syntax der Parameter ist jedoch anders. Das Gleiche gilt für ein Raspbian- oder Debian- System. Wenn Sie nur usbip starten, erhalten Sie eine kurze Übersicht der möglichen Parameter für die Kommandozeile.

Einsatzmöglichkeiten für den Raspberry Pi -
Raspberry Pi als Mediacenter einrichten
Der Raspberry Pi ist zwar besonders klein und preisgünstig, aber kann trotzdem als Mediacenter-PC dienen. Der Artikel zeigt, wie Sie aus dem Pi eine fernsteuerbare Multimedia-Station machen.
Raspberry Pi als UPnP-Server für Multimediainhalte nutzen
Multimedia-Inhalte von einem zentralen Gerät im ganzen Haus zu nutzen, ist ein verbreitetes Anliegen. Solchem Streaming von einer Server-Quelle auf alle Geräte ist der Ein-Platinen-Rechner Raspberry Pi durchaus gewachsen.
Raspberry Pi als Desktop und Netbook nutzen
Dank seiner HDMI-Schnittstelle ist der Raspberry Pi schnell mit externen Displays wie TV-Geräten und Monitoren verbunden. Mit dem richtigen Betriebssystem und etwas Zubehör eignet sich der pfiffige kleine Rechner durchaus als genügsames Arbeitstier.
Raspberry Pi als Wetterstation nutzen
Seine kleinen Abmessungen und die Flexibilität der angebotenen Linux-Derivate machen den Raspberry Pi zu einer soliden Basis für eine Wetterstation. Wir stellen Ihnen zwei mögliche Ansätze vor.
Mit dem Raspberry Pi ein Raumüberwachungssystem aufbauen
Mit einem Raspberry Pi und Raspbian als Betriebssystem sind die Hardware-Voraussetzungen für ein günstiges Überwachungssystem gegeben. Den Rest erledigt die freie Software Motion.
Workshop: Raspberry Pi als NAS einsetzen
An NAS-Netzwerkspeichern (Network Attached Storage), die mit Linux reibungslos zusammenarbeiten, herrscht kein Mangel. Und die im Handel angebotenen Lösungen stellen eine Menge zusätzlicher Funktionen zur Verfügung. Ob diese auch alle benötigt werden, steht auf einem ganz anderen Blatt. Wer in einer Schublade eine USB-Festplatte herumliegen hat und gerne bastelt, stellt sich ein individuelles NAS für knapp 60 Euro zusammen. Möglich wird dies durch den inzwischen millionenfach verkauften Einplatinen-Computer Raspberry Pi.
VPN-Server mit dem Raspberry Pi aufbauen
Eine VPN-Vernetzung ermöglicht einen sicheren Zugang zum Büro oder Heimnetzwerk und bietet auch im öffentlichen Internets Sicherheit. Mit dem Raspberry Pi lässt sich ein VPN-Server realisieren, der sichere Datenverbindungen in einem Netzwerk garantiert.
Heizungssteuerung mit Linux und Raspberry Pi einrichten
Bei diesem Projekt handelt es sich um die Entwicklung einer Steuerung der Fußbodenheizung mit einem Raspberry Pi. Eine in die Jahre gekommene mit einer durch PIC AT89 implementierte Heizungssteuerung sollte durch eine neue Variante ersetzt werden.
Funksteckdosen mit dem Raspberry Pi nutzen
Funksteckdosen sind im Dreier- oder Sechserpack samt Fernbedienung in fast jedem Baumarkt erhältlich, oft schon für wenige Euro. Für sich alleine sind die Steckdosen begrenzt interessant: Die mitgelieferte Fernbedienung ist nie zur Hand, wenn man Sie braucht, und ist so klein, dass sie gerne zwischen den Sofaritzen verschwindet. Mit einem günstigen Sender und ein wenig Software machen Sie den Raspberry zur Schaltzentrale, die Steckdosen per Browser, Makro oder Handy von überall her steuert.
Für Profis: Raspberry Pi als Sync-Server nutzen
Wir alle haben uns längst daran gewöhnt, auf jedem Endgerät stets unsere aktuellen Termine und die Adressen von Freunden und Bekannten einsehen zu können. Die von Apple und Google unterhaltenen Infrastrukturen machen das möglich. Aber wer nicht möchte, dass die Nachrichtendienste dieser Welt auf Kontaktdaten zugreifen, braucht eine persönliche Cloud, die er selbst im Griff im hat. Dieser Artikel stellt eine Lösung zur Synchronisierung von Adressen und Terminen auf Basis des Raspberry Pi vor.
Raspberry Pi überwacht Datenverkehr im Netzwerk
Wer einen Raspberry Pi besitzt, kann mit diesem Mini-PC auch sein heimisches Netzwerk überwachen. Denn auch für den Raspberry bieten die Macher von Kali Linux ein angepasstes Image mit dem Sie gleich loslegen können.

(PC-Welt/ad)