Včasih se pojavijo želje po uporabi naprave, priključene preko USB, ne da bi jo imeli na mizi poleg prenosnika. Moja naprava je kitajski gravir s 500 mW laserjem, kar je precej neprijetno pri neposrednem stiku. Poleg neposredne nevarnosti za oči se med delovanjem laserja sproščajo toksični produkti gorenja, zato mora biti naprava v dobro prezračevanem prostoru in idealno izolirana od ljudi. Kako pa nadzorovati tako napravo? Odgovor na to vprašanje sem slučajno našel, medtem ko sem prebiral repozitorij OpenWRT, v upanju, da bom našel dostojno uporabo za star router D-Link DIR-320 A2. Za povezavo sem se odločil uporabiti to, kar je bilo prej opisano na Habrju. USB preko IP tunela, toda vse navodila za njegovo namestitev so postala zastarela, zato pišem svoje.
OpenWRT je operacijski sistem, ki ne potrebuje predstavitve, zato ne bom opisoval njegove namestitve. Za svoj router sem vzel najnovejšo stabilno različico OpenWrt 19.07.3 in ga povezal z glavno dostopno točko preko Wi-Fi kot stranka, izbral način lan, da ne bi mučil požarnega zidu.
Strežni del
Delujemo v skladu z . Po povezavi preko ssh namestimo potrebne pakete.
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-clientNato priključimo na USB vrata routerja našo napravo (v mojem primeru naprave: USB hub, USB ključek, na katerega je nameščen datotečni sistem routerja (zaradi pomanjkanja prostora na notranjem pomnilniku), in neposredno gravir).
Poskusimo prikazati seznam povezanih naprav:
root@OpenWrt:~# usbip list -lPrazno.
Po googlanju sem našel krivca, bila je knjižnica libudev-fbsd.
Ročno smo izvlekli najnovejšo delujočo različico iz repozitorija libudev_3.2-1 iz izdaje OpenWRT 17.01.7 pod svojo arhitekturo, v mojem primeru je to libudev_3.2-1_mipsel_mips32.ipk. S pomočjo wget/scp jo naložimo v pomnilnik routerja in ponovno namestimo
root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk
Preverimo:
root@OpenWrt:~# usbip list -l
- busid 1-1.1 (090c:1000)
Silicon Motion, Inc. - Tajvan (prej Feiya Technology Corp.) : Flash Drive (090c:1000)
- busid 1-1.4 (1a86:7523)
QinHeng Electronics : HL-340 USB-Serial adapter (1a86:7523)Kitajec, priključen v USB hub, je dobil bsuid 1-1.4. Zapomnili smo si.
Zdaj zaženemo demon:
root@OpenWrt:~# usbipd -Din bindamo kitajca
root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: completePreverimo, da vse deluje:
root@OpenWrt: /home# netstat -alpt
Aktivne internet veze (serveri i uspostavljene)
Proto Recv-Q Send-Q Lokalna adresa Strana adresa Stanje PID/Program ime
tcp 0 0 0.0.0.0:3240 0.0.0.0:* LISTEN 1884/usbipdDa bismo automatski vezali uređaj, prilagodićemo /etc/rc.local, dodajući pre exit 0 naslednje:
usbipd -D &
spavaj 1
usbip bind -b 1-1.4Odjemalski del
Pokušaćemo da povežemo uređaj sa Windows 10, koristeći gore pomenutu uputu sa openwrt.org. Odmah ću reći: zamisao je osuđena na neuspeh. Prvo, razmatra se samo Windows 7 x64. Drugo, davana je veza na thread na sourceforge.net, gde se predlaže preuzimanje iz Dropbox-a patch-ovanog drajvera iz 2014. godine. Kada pokušamo da ga pokrenemo na Windows 10 i povežemo se sa našim uređajem dobijamo grešku:
c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip za windows ($Id$)
*** GREŠKA: nemogućnosti pronalaženja uređaja To je povezano sa tim da klijent ne radi sa serverom napravljenim za jezgro starije verzije 3.14.
Server usbip pod OpenWRT 19.07.3 je napravljen na jezgru 4.14.180.
Nastavljajući pretragu, nailazim na aktuelni razvoj Windows klijenta na . U redu, podrška za Windows 10 x64 je deklarisana, ali je klijent isključivo testni, stoga postoje određena ograničenja.
Dakle, prvo traže da instaliramo sertifikat, i to dvaput. U redu, stavljamo ga u Trusted Root Certification Authority i Trusted Publishers.
Zatim je potrebno prebaciti operativni sistem u testni režim. To se postiže komandom
bcdedit.exe /set TESTSIGNING ONPrvi put mi nije uspelo, ometalo je secure boot. Da bi se isključio, potrebno je restartovati se u UEFI, i postaviti secure boot – disable. Na nekim modelima laptopa može biti potrebno postaviti supervizorsku lozinku.
Nakon toga se učitavamo u Windows i radimo bcdedit.exe /set TESTSIGNING ON
Windows kaže da je sve u redu. Ponovo se restartujemo, i vidimo u donjem desnom uglu natpis Test Mode, verziju i broj builda OS-a.
Zašto su sve ove manipulacije potrebne? Za instalaciju nepodpisanog drajvera USB/IP VHCI. To se predlaže tako što ćemo preuzeti fajlove usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, i izvršiti sa pravima administratora
usbip.exe installili drugi način, instalacija Legacy Hardware u ručnom režimu. Izabrao sam drugi način, dobio upozorenje o instalaciji nepodpisanog drajvera i saglasio se sa tim.
Nakon toga proveravamo da li imamo mogućnost povezivanja sa udaljenim USB uređajem, izvršavajući komandu:
usbip.exe list -r <ip vašeg rutera>dobijamo spisak uređaja:
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)на ошибку usbip: error: failed to open usb id database не обращаем внимания, на работу не влияет.
Теперь биндим устройство:
c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4Всё, винда обнаружила новое устройство, теперь с ним можно работать так, как будто оно физически подключено к ноутбуку.
С китайским гравёром пришлось немного помучаться, так как при попытке установить его драйвер CH341SER через прилагавшийся к гравюру инсталлятор (да, гравёр на Ардуино), USB/IP VHCI ронял винду в BSOD. Однако установка драйвера CH341SER do подключения устройства через usbip.exe решала проблему.
Итог: гравёр шумит и дымит на кухне при открытом окне и закрытой двери, я наблюдаю за процессом выжигания из другой комнаты через родную софтину, которая не чувствует подвоха.
Использованные источники:
Izvor: habr.com
