USB über IP zu Hause

Manchmal möchten Sie mit einem über USB angeschlossenen Gerät arbeiten, ohne es auf dem Tisch neben Ihrem Laptop liegen zu lassen. Mein Gerät ist ein chinesischer Graveur mit einem 500-mW-Laser, was bei engem Kontakt recht unangenehm ist. Zusätzlich zur unmittelbaren Gefahr für die Augen werden beim Laserbetrieb giftige Verbrennungsprodukte freigesetzt. Daher sollte das Gerät in einem gut belüfteten Bereich und vorzugsweise isoliert von Personen aufgestellt werden. Wie kann man ein solches Gerät steuern? Die Antwort auf diese Frage habe ich zufällig beim Durchsuchen des OpenWRT-Repositorys gefunden, in der Hoffnung, eine würdige Verwendung für den alten D-Link DIR-320 A2-Router zu finden. Um eine Verbindung herzustellen, habe ich mich für die zuvor auf Habré beschriebene entschieden. USB über IP-TunnelAllerdings haben alle Anweisungen zur Installation ihre Relevanz verloren, daher schreibe ich meine eigene.

OpenWRT ist ein Betriebssystem, das keiner Einführung bedarf, daher werde ich seine Installation nicht beschreiben. Für meinen Router habe ich die neueste stabile Version von OpenWrt 19.07.3 genommen und sie als Client mit dem Haupt-WLAN-Zugangspunkt verbunden und den Modus ausgewählt lan, um die Firewall nicht zu quälen.

Serverteil

Wir handeln entsprechend offizielle Anweisungen. Installieren Sie nach der Verbindung über SSH die erforderlichen Pakete.

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-client

Als nächstes verbinden wir unser Gerät mit dem USB-Port des Routers (in meinem Fall Geräte: ein USB-Hub, ein Flash-Laufwerk, auf dem das Dateisystem des Routers gemountet ist (aufgrund von Platzmangel im internen Speicher) und direkt das Graveur).

Versuchen wir, eine Liste der angeschlossenen Geräte anzuzeigen:

root@OpenWrt:~# usbip list -l

Leer.

Durch Googeln wurde der Täter gefunden, es stellte sich heraus, dass es sich um eine Bibliothek handelte libudev-fbsd.
Wir ziehen die neueste Arbeitsversion manuell aus dem Repository libudev_3.2-1 aus der OpenWRT 17.01.7-Version für Ihre Architektur, in meinem Fall ist es libudev_3.2-1_mipsel_mips32.ipk. Laden Sie es mit wget/scp in den Speicher des Routers herunter und installieren Sie es erneut

root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk

Wir prüfen:

root@OpenWrt:~# usbip list -l
 - busid 1-1.1 (090c:1000)
   Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)

 - busid 1-1.4 (1a86:7523)
   QinHeng Electronics : HL-340 USB-Serial adapter (1a86:7523)

Ein an einen USB-Hub angeschlossener Chinese erhielt einen Bsuid 1-1.4. Erinnern.

Jetzt starten wir den Daemon:

root@OpenWrt:~# usbipd -D

und bindim die Chinesen

root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: complete

Überprüfen wir, ob alles funktioniert:

root@OpenWrt:/home# netstat -alpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN      1884/usbipd

Um das Gerät weiter automatisch zu binden, bearbeiten wir es /etc/rc.localdurch Hinzufügen vorher Beenden Sie 0 следующее:

usbipd -D &
sleep 1
usbip bind -b 1-1.4

Kundenteil

Versuchen wir, das Gerät mithilfe der obigen Anweisungen von openwrt.org mit Windows 10 zu verbinden. Ich sage gleich: Die Idee ist zum Scheitern verurteilt. Zunächst wird nur Windows 7 x64 berücksichtigt. Zweitens wird ein Link zu einem Thread auf sourceforge.net gegeben, der den Download eines im Jahr 2014 gepatchten Treibers von Dropbox vorschlägt. Wenn wir versuchen, es unter Windows 10 auszuführen und eine Verbindung zu unserem Gerät herzustellen, erhalten wir die folgende Fehlermeldung:

c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip for windows ($Id$)

*** ERROR: cannot find device

Dies liegt daran, dass der Client nicht mit einem Server funktioniert, der für einen Kernel älter als Version 3.14 erstellt wurde.
Der USBIP-Server für OpenWRT 19.07.3 basiert auf Kernel 4.14.180.

Als ich meine Suche fortsetze, stoße ich auf die aktuelle Entwicklung eines Windows-Clients für github. Ok, es wird Unterstützung für Windows 10 x64 angegeben, aber der Client ist nur ein Testclient, daher gibt es eine Reihe von Einschränkungen.

Also bitten sie zuerst darum, das Zertifikat zu installieren, und zwar zweimal. Ok, legen wir es bei der vertrauenswürdigen Stammzertifizierungsstelle und den vertrauenswürdigen Herausgebern ab.

Als nächstes müssen Sie das Betriebssystem in den Testmodus versetzen. Dies geschieht durch ein Team

bcdedit.exe /set TESTSIGNING ON

Beim ersten Mal ist es mir nicht gelungen, ich war im Weg Secure Boot. Um es zu deaktivieren, müssen Sie einen UEFI-Neustart durchführen und den sicheren Start deaktivieren. Bei einigen Laptop-Modellen ist möglicherweise die Einrichtung eines Supervisor-Passworts erforderlich.

Danach booten Sie Windows und fertig bcdedit.exe /set TESTSIGNING ON
Vinda sagt, alles sei in Ordnung. Wir starten erneut und sehen in der unteren rechten Ecke die Worte Testmodus, Version und Betriebssystem-Build-Nummer.

Wozu dienen all diese Manipulationen? So installieren Sie einen nicht signierten Treiber USB/IP-VHCI. Es wird empfohlen, dies zu tun, indem Sie die Dateien usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat herunterladen und mit Administratorrechten ausführen

usbip.exe install

oder die zweite Methode, die manuelle Installation von Legacy-Hardware. Ich habe mich für die zweite Option entschieden, eine Warnung bezüglich der Installation eines nicht signierten Treibers erhalten und war damit einverstanden.

Als nächstes überprüfen wir, ob wir eine Verbindung zu einem Remote-USB-Gerät herstellen können, indem wir den folgenden Befehl ausführen:

usbip.exe list -r <ip вашего роутера>

Wir erhalten eine Liste der Geräte:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: error: failed to open usb id database
Exportable USB devices
======================
 - 192.168.31.203
      1-1.4: unknown vendor : unknown product (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : unknown class / unknown subclass / unknown protocol (ff/00/00)

für einen Fehler usbip: Fehler: USB-ID-Datenbank konnte nicht geöffnet werden Wir achten nicht darauf, es hat keinen Einfluss auf die Arbeit.

Jetzt binden wir das Gerät:

c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4

Das war's, Windows hat ein neues Gerät erkannt, jetzt können Sie damit arbeiten, als ob es physisch mit dem Laptop verbunden wäre.

Ich musste ein wenig mit dem chinesischen Graveur zu kämpfen haben, denn als ich versuchte, seinen CH341SER-Treiber über das Installationsprogramm zu installieren, das mit dem Graveur (ja, einem Arduino-Graveur) geliefert wurde, hat USB/IP VHCI Windows in den BSOD versetzt. Allerdings muss der CH341SER-Treiber installiert werden auf Durch Anschließen des Geräts über usbip.exe wurde das Problem behoben.

Fazit: Der Graveur macht Lärm und Rauch in der Küche bei geöffnetem Fenster und geschlossener Tür, ich beobachte den Brennvorgang aus einem anderen Raum durch meine eigene Software, die keinen Haken erkennt.

Verwendete Quellen:

https://openwrt.org/docs/guide-user/services/usb.iptunnel
https://github.com/cezanne/usbip-win

Source: habr.com

Kommentar hinzufügen