USB över IP i hemmet

Ibland finns det en önskan att arbeta med en enhet ansluten via USB utan att ha den pÄ bordet bredvid bÀrbara datorn. Min enhet Àr en kinesisk gravyrmaskin med en 500 mW-laser, nÄgot som kan vara ganska obehagligt vid nÀra kontakt. Förutom den direkta faran för ögonen avger lasern giftiga förbrÀnningsprodukter under drift, sÄ enheten bör befinna sig i ett vÀlventilerat utrymme, helst isolerad frÄn mÀnniskor. Men hur hanterar man en sÄdan enhet? Svaret pÄ denna frÄga hittade jag av en slump nÀr jag granskade OpenWRT-repositoriet i hopp om att hitta en bra anvÀndning för den gamla routern D-Link DIR-320 A2. Jag beslutade mig för att anvÀnda den metod som tidigare beskrivits pÄ Habr. USB över IP-tunnel, men alla instruktioner för installation har förlorat sin aktualitet, sÄ jag skriver min egen.

OpenWRT Àr ett operativsystem som inte behöver nÄgon introduktion, sÄ jag kommer inte gÄ in pÄ installationen. För min router valde jag den senaste stabila versionen OpenWrt 19.07.3 och kopplade den till huvudÄtkomstpunkten via Wi-Fi som klient, och valde lÀget lan, för att inte plÄga brandvÀggen.

Serverdelen

Följ noggrant den officiella instruktionen. Efter anslutning via ssh installerar vi de nödvÀndiga paketen.

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

Anslut sedan vÄr enhet till USB-porten pÄ routern (i mitt fall enheter: USB-hub, ett USB-minne dÀr filsystemet för routern Àr monterat (pÄ grund av brist pÄ plats pÄ det interna lagringsutrymmet), och sjÀlva gravyrmaskinen).

Vi försöker lista de anslutna enheterna:

root@OpenWrt:~# usbip list -l

Inget.

Genom att googla hittades boven, det visade sig vara biblioteket libudev-fbsd.
Vi plockar manuellt den senaste fungerande versionen frÄn repositoriet libudev_3.2-1 frÄn OpenWRT 17.01.7 för vÄr arkitektur, i mitt fall Àr det libudev_3.2-1_mipsel_mips32.ipk. Med hjÀlp av wget/scp laddar vi upp den till routern och installerar om

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

Kontrollerar:

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

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

Kinesen som Àr ansluten via USB-hubben fick bsuid 1-1.4. Kom ihÄg det.

Nu startar vi demon:

root@OpenWrt:~# usbipd -D

och binder kinesen

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

Vi kontrollerar att allt fungerar:

root@OpenWrt:/home# netstat -alpt
Aktiva internetanslutningar (servrar och etablerade)
Proto Recv-Q Send-Q LokaltAdress     UtlÀndskAdress         Status       PID/Programnamn
tcp        0      0 0.0.0.0:3240    0.0.0.0:*               LYSSNAR      1884/usbipd

För att automatiskt binda enheten framöver, kommer vi att redigera /etc/rc.local, genom att lÀgga till före exit 0 följande:

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

Klientdel

Vi ska försöka ansluta enheten till Windows 10, med hjÀlp av ovanstÄende instruktion frÄn openwrt.org. Jag sÀger direkt: den hÀr idén Àr dömd att misslyckas. För det första, det tÀcker endast Windows 7 x64. För det andra, det ges en lÀnk till en trÄd pÄ sourceforge.net, dÀr det föreslÄs att ladda ner en patchad drivrutin frÄn Dropbox frÄn 2014. NÀr vi försöker köra den under Windows 10 och ansluta till vÄr enhet fÄr vi felmeddelandet:

c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip för Windows ($Id$)

*** FEL: kan inte hitta enhet

Detta beror pÄ att klienten inte fungerar med servern som Àr byggd för kÀrnor Àldre Àn version 3.14.
Servern usbip för OpenWRT 19.07.3 Àr byggd pÄ kÀrna 4.14.180.

Vidare i sökandet snubblar jag över en aktuell utveckling av Windows-klienten pÄ github. Okej, stöd för Windows 10 x64 anges, men klienten Àr enbart testversion, sÄ det finns en rad begrÀnsningar.

SÄ, först ber de att installera certifikatet, dessutom tvÄ gÄnger. Okej, vi lÀgger det i Trusted Root Certification Authority och Trusted Publishers.

DÀrefter mÄste operativsystemet sÀttas i testlÀge. Detta görs med kommandot

bcdedit.exe /set TESTSIGNING ON

Första gÄngen lyckades det inte för mig, jag stötte pÄ secure boot. För att stÀnga av det mÄste du starta om i UEFI och stÀlla in secure boot - disable. PÄ vissa bÀrbara modeller kan installation av supervisor password krÀvas.

Efter det startar vi upp i Windows och gör bcdedit.exe /set TESTSIGNING ON
Windows sÀger att allt Àr okej. Vi startar om igen och ser i nedre högra hörnet texten Test Mode, version och byggnummer pÄ OS.

Vad Àr poÀngen med alla dessa manipulationer? För att installera en osignerad drivrutin USB/IP VHCI. Detta kan göras 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 det andra alternativet, installation av Legacy Hardware manuellt. Jag valde det andra alternativet, fick en varning om installation av osignerad drivrutin och godkÀnde den.

DÀrefter kontrollerar vi om vi har möjlighet att ansluta till den fjÀrranslutna USB-enheten genom att köra kommandot:

usbip.exe list -r

och fÄr listan ö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)

pÄ felet usbip: error: failed to open usb id database vi ignorerar det, det pÄverkar inte funktionen.

Nu binder vi enheten:

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

Klart, Windows har upptÀckt en ny enhet, nu kan vi anvÀnda den som om den var fysiskt ansluten till bÀrbara datorn.

Med den kinesiska gravören hade jag lite problem, eftersom nÀr jag försökte installera dess drivrutin CH341SER genom den medföljande installatören (ja, gravören Àr baserad pÄ Arduino), kraschade USB/IP VHCI Windows i BSOD. Men installation av CH341SER-driften till genom att ansluta enheten via usbip.exe löste problemet.

Resultat: gravören lÄter och ryker i köket med öppet fönster och stÀngd dörr, jag övervakar brÀnningsprocessen frÄn ett annat rum via den medföljande programvaran som inte misstÀnker nÄgot.

AnvÀnda kÀllor:

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

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster