USB över IP hemma

Ibland vill du arbeta med en enhet ansluten via USB utan att ha den på bordet bredvid din bärbara dator. Min enhet är en kinesisk gravör med en 500 mW laser, vilket är ganska obehagligt vid nära kontakt. Förutom den omedelbara faran för ögonen frigörs giftiga förbränningsprodukter under laserdrift, så enheten bör placeras i ett välventilerat utrymme och helst isolerat från människor. Hur kan du styra en sådan enhet? Jag hittade av misstag svaret på den här frågan när jag bläddrade i OpenWRT-förvaret i hopp om att hitta en värdig användning för den gamla D-Link DIR-320 A2-routern. För att ansluta bestämde jag mig för att använda den som beskrevs på Habré tidigare. USB över IP-tunnel, dock har alla instruktioner för att installera det förlorat sin relevans, så jag skriver min egen.

OpenWRT är ett operativsystem som inte behöver någon introduktion, så jag kommer inte att beskriva dess installation. För min router tog jag den senaste stabila versionen av OpenWrt 19.07.3 och kopplade den till huvud Wi-Fi-åtkomstpunkten som en klient och valde läge lan, för att inte plåga brandväggen.

Server del

Vi agerar enligt officiella instruktioner. Efter att ha anslutit via ssh, installera de nödvändiga paketen.

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

Därefter ansluter vi vår enhet till routerns USB-port (i mitt fall enheter: en USB-hubb, en flashenhet på vilken routerns filsystem är monterat (på grund av utrymmesbrist på internminnet), och direkt gravör).

Låt oss försöka visa en lista över anslutna enheter:

root@OpenWrt:~# usbip list -l

Tömma.

Genom att googla hittades den skyldige visade det sig vara ett bibliotek libudev-fbsd.
Vi tar ut den senaste fungerande versionen från förvaret för hand libudev_3.2-1 från OpenWRT 17.01.7-versionen för din arkitektur, i mitt fall är det libudev_3.2-1_mipsel_mips32.ipk. Använd wget/scp, ladda ner den till routerns minne och installera om den

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

Vi kontrollerar:

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)

En kines som var ansluten till en USB-hubb fick en bsuid 1-1.4. Kom ihåg.

Låt oss nu starta demonen:

root@OpenWrt:~# usbipd -D

och bindim kineserna

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

Låt oss kontrollera att allt fungerar:

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

För att ytterligare binda enheten automatiskt, låt oss redigera /etc/rc.localgenom att lägga till innan avsluta 0 följande:

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

Klientsidan

Låt oss försöka ansluta enheten till Windows 10 med ovanstående instruktioner från openwrt.org. Jag säger genast: idén är dömd att misslyckas. För det första beaktas endast Windows 7 x64. För det andra ges en länk till en tråd på sourceforge.net, som föreslår att du laddar ner en drivrutin som korrigerades 2014 från Dropbox. När vi försöker köra det under Windows 10 och ansluta till vår enhet får vi följande fel:

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

*** ERROR: cannot find device

Detta beror på att klienten inte fungerar med en server byggd för en kärna äldre än version 3.14.
Usbip-servern för OpenWRT 19.07.3 är byggd på kärnan 4.14.180.

Jag fortsätter min sökning och stöter på den nuvarande utvecklingen av en Windows-klient för github. Ok, stöd för Windows 10 x64 anges, men klienten är bara en testklient, så det finns ett antal begränsningar.

Så först ber de att få installera certifikatet, och två gånger. Ok, låt oss lägga in det i Trusted Root Certification Authority och Trusted Publishers.

Därefter måste du sätta operativsystemet i testläge. Detta görs av ett team

bcdedit.exe /set TESTSIGNING ON

Jag lyckades inte första gången, jag kom i vägen säker start. För att inaktivera det måste du starta om till UEFI och ställa in säker start för att inaktivera. Vissa bärbara modeller kan kräva att du ställer in ett administratörslösenord.

Efter det, starta upp i Windows och gör bcdedit.exe /set TESTSIGNING PÅ
Vinda säger att allt är ok. Vi startar om igen, och vi ser i det nedre högra hörnet orden Testläge, version och OS-byggnummer.

Vad är alla dessa manipulationer till för? För att installera en osignerad drivrutin USB/IP VHCI. Det föreslås att du gör detta genom att ladda ner filerna usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat och köra med administratörsrättigheter

usbip.exe install

eller den andra metoden, att installera äldre hårdvara manuellt. Jag valde det andra alternativet, fick en varning om att installera en osignerad drivrutin och gick med på det.

Därefter kontrollerar vi att vi har möjlighet att ansluta till en fjärransluten USB-enhet genom att köra kommandot:

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

vi får en lista över enheter:

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 ett misstag usbip: fel: kunde inte öppna usb-id-databasen Vi uppmärksammar inte, det påverkar inte arbetet.

Nu binder vi enheten:

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

Det var allt, Windows har upptäckt en ny enhet, nu kan du arbeta med den som om den var fysiskt ansluten till den bärbara datorn.

Jag fick lida lite med den kinesiska gravören, för när jag försökte installera dess CH341SER-drivrutin genom installationsprogrammet som följde med gravören (ja, en Arduino-gravör), släppte USB/IP VHCI Windows i BSOD. Installerar dock CH341SER-drivrutinen до anslutning av enheten via usbip.exe löste problemet.

Sammanfattning: gravören gör oväsen och röker i köket med fönstret öppet och dörren stängd, jag tittar på bränningsprocessen från ett annat rum genom min egen programvara, som inte känner en hake.

Använda källor:

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

Källa: will.com

Lägg en kommentar