USB oer IP thús

Soms wolle jo wurkje mei in apparaat ferbûn fia USB sûnder it op 'e tafel neist jo laptop te hâlden. Myn apparaat is in Sineeske graveur mei in 500 mW laser, dat is frij onaangenaam as yn nau kontakt. Neist it direkte gefaar foar de eagen wurde giftige ferbaarningsprodukten frijlitten by laseroperaasje, dus it apparaat moat yn in goed fentilearre gebiet pleatst wurde, en leafst isolearre fan minsken. Hoe kinne jo sa'n apparaat kontrolearje? Ik fûn by ûngelok it antwurd op dizze fraach by it blêdzjen fan it OpenWRT-repository yn 'e hoop om in weardich gebrûk te finen foar de âlde D-Link DIR-320 A2-router. Om ferbining te meitsjen, besleat ik de earder beskreaune op Habré te brûken. USB oer IP tunnel, lykwols, alle ynstruksjes foar it ynstallearjen hawwe har relevânsje ferlern, dus ik skriuw myn eigen.

OpenWRT is in bestjoeringssysteem dat gjin yntroduksje nedich is, dus ik sil syn ynstallaasje net beskriuwe. Foar myn router naam ik de lêste stabile release fan OpenWrt 19.07.3, en ferbûn it mei it haad Wi-Fi tagongspunt as kliïnt, selektearje de modus lan, om de brânmuorre net te marteljen.

Server diel

Wy hannelje neffens offisjele ynstruksjes. Nei it ferbinen fia ssh, ynstallearje de nedige pakketten.

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

Dêrnei ferbine wy ​​ús apparaat mei de USB-poarte fan 'e router (yn myn gefal, apparaten: in USB-hub, in flash-drive wêrop it bestânsysteem fan' e router is monteard (fanwege gebrek oan romte op 'e ynterne opslach), en, direkt, de graveur).

Litte wy besykje in list mei ferbûne apparaten te sjen:

root@OpenWrt:~# usbip list -l

Leech.

Troch te googelen waard de dieder fûn, it die bliken dat it om in biblioteek giet libudev-fbsd.
Wy lûke de lêste wurkferzje út 'e repository mei de hân libudev_3.2-1 fan de OpenWRT 17.01.7 release foar jo arsjitektuer, yn myn gefal is it libudev_3.2-1_mipsel_mips32.ipk. Brûk wget/scp, download it yn it ûnthâld fan 'e router en ynstallearje it opnij

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

Wy kontrolearje:

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)

In Sineeske man ferbûn mei in USB-hub krige in bsuid 1-1.4. Unthâld.

Litte wy no de daemon begjinne:

root@OpenWrt:~# usbipd -D

en bindim de Sinezen

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

Litte wy kontrolearje dat alles wurket:

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

Om fierder te binen it apparaat automatysk, lit ús bewurkje /etc/rc.localtroch tafoegjen foardat útgong 0 it folgjende:

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

Client kant

Litte wy besykje it apparaat te ferbinen mei Windows 10 mei de boppesteande ynstruksjes fan openwrt.org. Ik sil daliks sizze: it idee is feroardiele ta mislearring. As earste wurdt allinich Windows 7 x64 beskôge. As twadde wurdt in keppeling jûn oan in thread op sourceforge.net, dy't suggerearret it downloaden fan in bestjoerder patched yn 2014 fan Dropbox. As wy besykje it út te fieren Windows 10 en ferbine mei ús apparaat, krije wy de folgjende flater:

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

*** ERROR: cannot find device

Dit komt troch it feit dat de kliïnt net wurket mei in server boud foar in kernel âlder dan ferzje 3.14.
De usbip-tsjinner foar OpenWRT 19.07.3 is boud op kernel 4.14.180.

Trochgean mei myn sykjen, kom ik oer de hjoeddeistige ûntwikkeling fan in Windows-kliïnt foar GitHub. Ok, stipe foar Windows 10 x64 wurdt oanjûn, mar de kliïnt is allinich in testkliïnt, dus d'r binne in oantal beheiningen.

Dat, se freegje earst om it sertifikaat te ynstallearjen, en twa kear. Ok, litte wy it yn 'e Trusted Root Certification Authority en Trusted Publishers sette.

Dêrnei moatte jo it bestjoeringssysteem yn testmodus sette. Dit wurdt dien troch in team

bcdedit.exe /set TESTSIGNING ON

It slagge my de earste kear net, ik stie yn 'e wei feilige boot. Om it út te skeakeljen, moatte jo opnij starte yn UEFI en feilige boot ynstelle om út te skeakeljen. Guon laptopmodellen kinne it ynstellen fan in tafersjochwachtwurd nedich wêze.

Dêrnei, boot yn Windows en dwaan bcdedit.exe /set TESTSIGNING ON
Vinda seit dat alles goed is. Wy opnij starte, en wy sjogge yn 'e rjochter ûnderkant de wurden Testmodus, ferzje en OS-buildnûmer.

Wat binne al dizze manipulaasjes foar? Om in net-ûndertekene stjoerprogramma te ynstallearjen USB / IP VHCI. It wurdt suggerearre om dit te dwaan troch it downloaden fan de bestannen usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, en rinne mei administratorrjochten

usbip.exe install

of de twadde metoade, ynstallaasje fan Legacy Hardware mei de hân. Ik keas de twadde opsje, krige in warskôging oer it ynstallearjen fan in net-ûndertekene stjoerprogramma en stimde dêrmei iens.

Dêrnei kontrolearje wy dat wy de mooglikheid hawwe om te ferbinen mei in USB-apparaat op ôfstân troch it kommando út te fieren:

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

wy krije in list mei 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)

foar in flater usbip: flater: mislearre it iepenjen fan usb id databank Wy jouwe gjin oandacht, it hat gjin ynfloed op it wurk.

No bine wy ​​it apparaat:

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

Dat is it, Windows hat in nij apparaat ûntdutsen, no kinne jo dermei wurkje as wie it fysyk ferbûn mei de laptop.

Ik moast in bytsje lije mei de Sineeske graveur, want doe't ik besocht syn CH341SER-bestjoerder te ynstallearjen fia de ynstallearder dy't mei de graveur kaam (ja, in Arduino-graveur), foel USB / IP VHCI Windows yn BSOD. It ynstallearjen fan de CH341SER-bestjoerder lykwols до it ferbinen fan it apparaat fia usbip.exe hat it probleem oplost.

Bottom line: de graveur makket lûd en smookt yn 'e keuken mei it rút iepen en de doar ticht, ik sjoch it ferbaarnen fanút in oare keamer troch myn eigen software, dy't gjin fangen oannimt.

Brûkte boarnen:

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

Boarne: www.habr.com

Add a comment