USB cez IP doma

Niekedy chcete pracovať so zariadením pripojeným cez USB bez toho, aby ste ho držali na stole vedľa notebooku. Môj prístroj je čínsky rytec s 500 mW laserom, ktorý je pri blízkom kontakte dosť nepríjemný. Okrem bezprostredného nebezpečenstva pre oči sa pri laserovej prevádzke uvoľňujú toxické produkty spaľovania, preto by mal byť prístroj umiestnený v dobre vetranom priestore a pokiaľ možno izolovaný od ľudí. Ako môžete ovládať takéto zariadenie? Odpoveď na túto otázku som náhodou našiel pri prehliadaní úložiska OpenWRT v nádeji, že nájdem hodné využitie pre starý router D-Link DIR-320 A2. Na prepojenie som sa rozhodol použiť ten, ktorý bol na Habré popísaný skôr. Tunel USB cez IP, ale všetky pokyny na inštaláciu stratili svoj význam, takže píšem svoj vlastný.

OpenWRT je operačný systém, ktorý netreba predstavovať, preto nebudem popisovať jeho inštaláciu. Pre môj smerovač som vzal najnovšie stabilné vydanie OpenWrt 19.07.3 a pripojil som ho k hlavnému prístupovému bodu Wi-Fi ako klient, pričom som vybral režim lán, aby netrápil firewall.

Serverová časť

Konáme podľa oficiálne pokyny. Po pripojení cez ssh nainštalujte potrebné balíčky.

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

Ďalej pripojíme naše zariadenie k portu USB smerovača (v mojom prípade zariadenia: rozbočovač USB, jednotka flash, na ktorej je namontovaný súborový systém smerovača (kvôli nedostatku miesta na internom úložisku) a priamo rytec).

Skúsme zobraziť zoznam pripojených zariadení:

root@OpenWrt:~# usbip list -l

Prázdny.

Vygoogliním sa našiel vinník, ukázalo sa, že ide o knižnicu libudev-fbsd.
Najnovšiu pracovnú verziu vytiahneme z úložiska ručne libudev_3.2-1 z vydania OpenWRT 17.01.7 pre vašu architektúru, v mojom prípade je to libudev_3.2-1_mipsel_mips32.ipk. Pomocou wget/scp si ho stiahnite do pamäte smerovača a preinštalujte ho

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

skontrolujte:

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)

Číňan pripojený k rozbočovaču USB dostal bsuid 1-1.4. Pamätajte.

Teraz spustíme démona:

root@OpenWrt:~# usbipd -D

a bindim Číňanov

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

Skontrolujeme, či všetko funguje:

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

Ak chcete zariadenie ďalej automaticky spájať, upravte ho /etc/rc.localpridaním pred výstup 0 nasledujúce:

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

Strana klienta

Skúsme pripojiť zariadenie k Windowsu 10 pomocou vyššie uvedených pokynov z openwrt.org. Hneď poviem: myšlienka je odsúdená na neúspech. Po prvé, zvažuje sa iba Windows 7 x64. Po druhé, je uvedený odkaz na vlákno na sourceforge.net, ktoré navrhuje stiahnuť ovládač opravený v roku 2014 z Dropboxu. Keď sa ho pokúsime spustiť v systéme Windows 10 a pripojiť sa k nášmu zariadeniu, zobrazí sa nasledujúca chyba:

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

*** ERROR: cannot find device

Dôvodom je skutočnosť, že klient nepracuje so serverom vytvoreným pre jadro staršie ako verzia 3.14.
Usbip server pre OpenWRT 19.07.3 je postavený na jadre 4.14.180.

Pokračujúc v hľadaní, narážam na aktuálny vývoj klienta Windows pre GitHub. Ok, podpora pre Windows 10 x64 je uvedená, ale klient je len testovací klient, takže existuje množstvo obmedzení.

Najprv teda požiadajú o inštaláciu certifikátu a dvakrát. Ok, dajme to do dôveryhodnej koreňovej certifikačnej autority a dôveryhodných vydavateľov.

Ďalej je potrebné uviesť operačný systém do testovacieho režimu. Robí to tím

bcdedit.exe /set TESTSIGNING ON

Prvýkrát sa mi to nepodarilo, prekážalo mi to zabezpečiť boot. Ak ho chcete zakázať, musíte reštartovať UEFI a nastaviť zabezpečené spustenie na vypnutie. Niektoré modely notebookov môžu vyžadovať nastavenie hesla správcu.

Potom spustite systém Windows a urobte bcdedit.exe /set ZAPNUTÉ TESTOVANIE
Vinda hovorí, že je všetko v poriadku. Znova reštartujeme a v pravom dolnom rohu vidíme nápis Test Mode, verzia a číslo zostavy OS.

Načo sú všetky tieto manipulácie? Inštalácia nepodpísaného ovládača USB/IP VHCI. Odporúča sa to urobiť stiahnutím súborov usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat a spustením s právami správcu

usbip.exe install

alebo druhá metóda, manuálna inštalácia staršieho hardvéru. Vybral som si druhú možnosť, dostal som upozornenie na inštaláciu nepodpísaného ovládača a súhlasil som s ním.

Ďalej skontrolujeme, či máme možnosť pripojiť sa k vzdialenému zariadeniu USB spustením príkazu:

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

dostaneme zoznam zariadení:

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)

za chybu usbip: chyba: nepodarilo sa otvoriť databázu usb id Nevenujeme pozornosť, neovplyvňuje to prácu.

Teraz viažeme zariadenie:

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

To je všetko, Windows zistil nové zariadenie, teraz s ním môžete pracovať, ako keby bolo fyzicky pripojené k notebooku.

S čínskym rytcom som musel trochu trpieť, pretože keď som sa pokúšal nainštalovať jeho ovládač CH341SER cez inštalačný program, ktorý bol dodaný s rytcom (áno, rytec Arduino), USB/IP VHCI vypustil Windows do BSOD. Inštalácia ovládača CH341SER na pripojenie zariadenia cez usbip.exe problém vyriešilo.

Zrátané a podčiarknuté: rytec robí hluk a fajčí v kuchyni pri otvorenom okne a zatvorených dverách, proces horenia sledujem z inej miestnosti cez vlastný softvér, ktorý nevníma háčik.

Použité zdroje:

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

Zdroj: hab.com

Pridať komentár