USB over IP thuis

Soms wil je werken met een apparaat dat via USB is aangesloten, zonder dat je het op tafel naast je laptop laat staan. Mijn apparaat is een Chinese graveur met een laser van 500 mW, wat behoorlijk onaangenaam is bij nauw contact. Naast het directe gevaar voor de ogen komen er tijdens het lasergebruik giftige verbrandingsproducten vrij. Daarom moet het apparaat in een goed geventileerde ruimte worden geplaatst, en bij voorkeur geïsoleerd van mensen. Hoe kun je zo’n apparaat besturen? Ik vond per ongeluk het antwoord op deze vraag tijdens het bladeren door de OpenWRT-repository in de hoop een waardig gebruik te vinden voor de oude D-Link DIR-320 A2-router. Om verbinding te maken, besloot ik degene te gebruiken die eerder op Habré werd beschreven. USB over IP-tunnel, maar alle instructies voor het installeren ervan hebben hun relevantie verloren, dus ik schrijf mijn eigen instructies.

OpenWRT is een besturingssysteem dat geen introductie behoeft, dus ik zal de installatie ervan niet beschrijven. Voor mijn router heb ik de nieuwste stabiele release van OpenWrt 19.07.3 genomen en deze als client met het belangrijkste Wi-Fi-toegangspunt verbonden, waarbij ik de modus selecteerde lan, om de firewall niet te kwellen.

Servergedeelte

Wij handelen volgens officiële instructies. Nadat u verbinding heeft gemaakt via ssh, installeert u de benodigde pakketten.

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

Vervolgens verbinden we ons apparaat met de USB-poort van de router (in mijn geval apparaten: een USB-hub, een flashdrive waarop het bestandssysteem van de router is gemonteerd (vanwege gebrek aan ruimte op de interne opslag), en, rechtstreeks, de graveur).

Laten we proberen een lijst met verbonden apparaten weer te geven:

root@OpenWrt:~# usbip list -l

Leeg.

Door te googlen werd de dader gevonden, het bleek een bibliotheek te zijn libudev-fbsd.
We halen de nieuwste werkende versie handmatig uit de repository libudev_3.2-1 uit de OpenWRT 17.01.7-release voor uw architectuur, in mijn geval is dit libudev_3.2-1_mipsel_mips32.ipk. Download het met behulp van wget/scp naar het geheugen van de router en installeer het opnieuw

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

controleren:

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)

Een Chinese man aangesloten op een USB-hub ontving een bsuid 1-1.4. Herinneren.

Laten we nu de daemon starten:

root@OpenWrt:~# usbipd -D

en bindim de Chinezen

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

Laten we controleren of alles werkt:

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

Laten we het bewerken om het apparaat verder automatisch te binden /etc/rc.localdoor eerder toe te voegen verlaat 0 het volgende:

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

Kant van de cliënt

Laten we proberen het apparaat met Windows 10 te verbinden met behulp van de bovenstaande instructies van openwrt.org. Ik zeg meteen: het idee is gedoemd te mislukken. Ten eerste wordt alleen Windows 7 x64 overwogen. Ten tweede wordt er een link gegeven naar een thread op sourceforge.net, waarin wordt voorgesteld een stuurprogramma te downloaden dat in 2014 is gepatcht vanuit Dropbox. Wanneer we het proberen uit te voeren onder Windows 10 en verbinding maken met ons apparaat, krijgen we de volgende foutmelding:

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

*** ERROR: cannot find device

Dit komt doordat de client niet werkt met een server die is gebouwd voor een kernel ouder dan versie 3.14.
De usbip-server voor OpenWRT 19.07.3 is gebouwd op kernel 4.14.180.

Als ik mijn zoektocht voortzet, kom ik de huidige ontwikkeling tegen van een Windows-client voor GitHub. Oké, er wordt ondersteuning voor Windows 10 x64 vermeld, maar de client is slechts een testclient, dus er zijn een aantal beperkingen.

Dus vragen ze eerst om het certificaat te installeren, en twee keer. Oké, laten we het in de Trusted Root Certification Authority en Trusted Publishers plaatsen.

Vervolgens moet u het besturingssysteem in de testmodus zetten. Dit wordt gedaan door een team

bcdedit.exe /set TESTSIGNING ON

De eerste keer lukte het niet, ik stond in de weg beveiligen laars. Om dit uit te schakelen, moet u opnieuw opstarten in UEFI en Secure Boot instellen op uitschakelen. Voor sommige laptopmodellen is het mogelijk dat u een supervisorwachtwoord moet instellen.

Start daarna Windows op en doe het bcdedit.exe /set TESTSIGNING AAN
Vinda zegt dat alles in orde is. We starten opnieuw op en we zien in de rechter benedenhoek de woorden Testmodus, versie en OS-buildnummer.

Waar zijn al deze manipulaties voor? Om een ​​niet-ondertekend stuurprogramma te installeren USB/IP-VHCI. Er wordt voorgesteld om dit te doen door de bestanden usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat te downloaden en uit te voeren met beheerdersrechten

usbip.exe install

of de tweede methode, waarbij Legacy Hardware handmatig wordt geïnstalleerd. Ik koos voor de tweede optie, kreeg een waarschuwing over het installeren van een niet-ondertekend stuurprogramma en ging ermee akkoord.

Vervolgens controleren we of we verbinding kunnen maken met een extern USB-apparaat door de opdracht uit te voeren:

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

we krijgen een lijst met apparaten:

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)

voor een fout usbip: fout: kan de usb-id-database niet openen Wij letten er niet op, het heeft geen invloed op het werk.

Nu binden we het apparaat:

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

Dat is alles, Windows heeft een nieuw apparaat gedetecteerd, nu kunt u ermee werken alsof het fysiek op de laptop is aangesloten.

Ik had een beetje te lijden onder de Chinese graveur, want toen ik probeerde het CH341SER-stuurprogramma te installeren via het installatieprogramma dat bij de graveur werd geleverd (ja, een Arduino-graveur), liet USB/IP VHCI Windows in BSOD vallen. Echter, het installeren van het CH341SER-stuurprogramma naar het aansluiten van het apparaat via usbip.exe loste het probleem op.

Kort gezegd: de graveur maakt geluid en rookt in de keuken met het raam open en de deur dicht, ik bekijk het brandproces vanuit een andere kamer via mijn eigen software, die geen hapering detecteert.

Gebruikte bronnen:

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

Bron: www.habr.com

Voeg een reactie