USB over IP otthon

Néha az embernek kedve támad USB-vel csatlakozó eszközzel dolgozni anélkül, hogy az az asztalon lenne a laptop mellett. Az én eszközöm egy 500 mW-os lézer gravírozó, ami elég zavaró közeli érintkezés esetén. A közvetlen szemveszély mellett a lézer használata közben mérgező égéstermékek szabadulnak fel, így az eszköznek jól szellőző helyiségben, lehetőleg az emberektől elszigetelten kell lennie. De hogyan irányítsuk ezt az eszközt? A kérdésre a választ véletlenül találtam meg, miközben az OpenWRT tárolót nézegettem, remélve, hogy méltó felhasználást találok egy régi D-Link DIR-320 A2 routerhez. A csatlakozást a Habr-on korábban leírt módszert választottam. USB over IP alagút, azonban az összes telepítési útmutató elavult, ezért írom meg a sajátomat.

Az OpenWRT egy olyan operációs rendszer, amely nem szorul bemutatásra, ezért a telepítését nem részletezem. Az én routeremhez az OpenWrt legutolsó stabil kiadását, a 19.07.3-at választottam, és Wi-Fi-n csatlakoztattam a fő hozzáférési ponthoz kliensként, a lanmódot választva, hogy ne terheljem a tűzfalat.

Szerver oldali rész

A következőképpen járunk el a hivatalos útmutatás szerint.A ssh-n keresztüli csatlakozás után telepítjük a szükséges csomagokat.

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

Ezután csatlakoztassuk a router USB-portjához az eszközünket (az én esetemben az eszközök: USB hub, egy flash meghajtó, amelyre a router fájlrendszere van csatolva (a belső tároló helyhiánya miatt), és magának a gravírozónak a csatlakoztatása).

Próbáljuk meg megjeleníteni a csatlakoztatott eszközök listáját:

root@OpenWrt:~# usbip list -l

Üres.

Google segítségével megtaláltam a bűnöst, a libudev-fbsd.
könyvtár volt. Kézzel kiszedtük a tárolóból az utolsó működő verziót libudev_3.2-1

-t az OpenWRT 17.01.7-as kiadásából a saját architektúrám szerint, az én esetemben ez a libudev_3.2-1_mipsel_mips32.ipk. A wget/sftp segítségével feltöltjük a router memóriájába és újratelepítjük.

Ellenőrizzük:

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

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) 1-1.4A kínai eszköz, amelyet az USB hubhoz csatlakoztattunk, megkapta a bsuid-ot.

Megjegyeztük.

Most elindítjuk a démon:

root@OpenWrt:~# usbipd -D

és rögzítjük a kínait: root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: complete

Ellenőrizzük, hogy minden működik:

root@OpenWrt:/home# netstat -alpt
Aktív internetkapcsolatok (szerverek és létrejött kapcsolatok)
Proto Recv-Q Send-Q Helyi cím           Külső cím         Állapot       PID/Program név
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN      1884/usbipd

Ahhoz, hogy a készüléket automatikusan bindezve lehessen használni, módosítjuk /etc/rc.local, hozzáadva előtte exit 0 a következőket:

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

Kliensoldal

Próbáljuk meg csatlakoztatni az eszközt Windows 10-hez a fent említett openwrt.org útmutató segítségével. Azonnal elmondom: az ötlet kudarcra van ítélve. Először is, csak a Windows 7 x64-t tárgyalja. Másodszor, egy linket ad a sourceforge.net fórumára, ahol egy 2014-ben módosított illesztőprogramot javasolnak letölteni a Dropboxról. Amikor megpróbáljuk elindítani Windows 10 alatt, és csatlakozni a készülékünkhöz, hibát kapunk:

c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip Windows számára ($Id$)

*** HIBA: nem található az eszköz

Ez azzal magyarázható, hogy a kliens nem működik a 3.14 verzió fölötti kernellel készült szerverekkel.
Az usbip szerver OpenWRT 19.07.3 alatt a 4.14.180 kernelen lett összeállítva.

A keresést folytatva egy aktuális Windows kliens fejlesztésére bukkantam github. Rendben, a Windows 10 x64 támogatása be van jelentve, de a kliens kizárólag tesztelés céljából készült, ezért számos korlátozás található benne.

Először is, kérik a tanúsítvány telepítését, kétszer is. Rendben, elhelyezzük a Trusted Root Certification Authority és a Trusted Publishers alá.

Ezután a működési rendszert tesztmódba kell átváltani. Ezt a parancs végrehajtásával tehetjük meg:

bcdedit.exe /set TESTSIGNING ON

Elsőre nem sikerült, megakadályozta a secure boot.A kikapcsolásához újra kell indítani az UEFI-t, és a secure boot-ot — le kell tiltani. Néhány laptopmodell esetében előfordulhat, hogy felügyelői jelszó megadása szükséges.

Ezután indítsuk el a Windows-t, és végezzük el bcdedit.exe /set TESTSIGNING ON
A Windows azt mondja, hogy minden rendben van. Ismét újraindítunk, és a jobb alsó sarokban a Test Mode, az OS verziója és build száma látható.

Mire is jók ezek a manőverek? Egy alá nem írt illesztőprogram telepítésére USB/IP VHCI. Ezt megtehetjük, ha letöltjük a usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat fájlokat, és rendszergazdai jogokkal futtatva

usbip.exe install

vagy a második módszert, a Legacy Hardware manuális telepítését választva. Én a második lehetőséget választottam, figyelmeztetést kaptam az alá nem írt illesztőprogram telepítésekor, és egyetértettem vele.

Ezután ellenőrizzük, hogy van-e lehetőségünk csatlakozni a távoli USB-eszközhöz, végrehajtva a parancsot:

usbip.exe list -r

megkapjuk az eszközök listáját:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: hiba: nem sikerült megnyitni az usb azonosító adatbázist
Exportálható USB eszközök
======================
 - 192.168.31.203
      1-1.4: ismeretlen gyártó : ismeretlen termék (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : ismeretlen osztály / ismeretlen alsó osztály / ismeretlen protokoll (ff/00/00)

a hibára usbip: hiba: nem sikerült megnyitni az usb azonosító adatbázist nem törődünk vele, nem befolyásolja a működést.

Most hozzárendeljük az eszközt:

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

Kész, a Windows felfedezte az új eszközt, most már úgy dolgozhatunk vele, mintha fizikailag csatlakoztatva lenne a laptophoz.

A kínai gravírozóval kicsit bajban voltam, mivel a CH341SER illesztőprogram telepítésekor a gravírozóhoz mellékelt telepítőn (igen, a gravírozó Arduino-alapú) a USB/IP VHCI kék képernyőt okozott a Windows-ban. Azonban a CH341SER illesztőprogram telepítése tól az usbip.exe-n keresztüli eszközcsatlakozás megoldotta a problémát.

Összegzés: a gravírozó zajong és füstöl a konyhában nyitott ablakkal és zárt ajtóval, én a másik szobából figyelem a lézergravírozást a gyári szoftveren keresztül, ami nem gyanakszik.

Felhasznált források:

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

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster