USB přes IP doma

Někdy chcete pracovat se zařízením připojeným přes USB, aniž byste ho drželi na stole vedle notebooku. Můj přístroj je čínský rytec s 500 mW laserem, který je při blízkém kontaktu dost nepříjemný. Kromě bezprostředního nebezpečí pro oči se při provozu laseru uvolňují toxické produkty hoření, proto by měl být přístroj umístěn v dobře větraném prostoru a nejlépe izolován od lidí. Jak můžete takové zařízení ovládat? Odpověď na tuto otázku jsem náhodou našel při procházení úložiště OpenWRT v naději, že najdu důstojné využití pro starý router D-Link DIR-320 A2. Pro připojení jsem se rozhodl použít ten, který byl popsán na Habrého dříve. Tunel USB přes IP, ale všechny pokyny pro instalaci ztratily svou relevanci, takže píšu svůj vlastní.

OpenWRT je operační systém, který není třeba představovat, takže jeho instalaci popisovat nebudu. Pro svůj router jsem vzal nejnovější stabilní verzi OpenWrt 19.07.3 a připojil jej k hlavnímu přístupovému bodu Wi-Fi jako klient a vybral režim lan, aby netrápil firewall.

Část serveru

Jednáme podle oficiální pokyny. Po připojení přes ssh nainstalujte potřebné balíčky.

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

Dále připojíme naše zařízení k USB portu routeru (v mém případě zařízení: USB hub, flash disk, na kterém je připojen souborový systém routeru (kvůli nedostatku místa na interním úložišti), a přímo rytec).

Zkusme zobrazit seznam připojených zařízení:

root@OpenWrt:~# usbip list -l

Prázdný.

Vygooglováním byl nalezen viník, ukázalo se, že jde o knihovnu libudev-fbsd.
Ručně vytahujeme nejnovější pracovní verzi z úložiště libudev_3.2-1 z verze OpenWRT 17.01.7 pro vaši architekturu, v mém případě je to libudev_3.2-1_mipsel_mips32.ipk. Pomocí wget/scp jej stáhněte do paměti routeru a znovu jej nainstalujte

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

Zkontrolujeme:

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 připojený k rozbočovači USB obdržel bsuid 1-1.4. Pamatovat si.

Nyní spustíme démona:

root@OpenWrt:~# usbipd -D

a bindim Číňany

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

Zkontrolujeme, zda vše 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

Chcete-li zařízení dále automaticky svázat, proveďte úpravy /etc/rc.localpřidáním před výjezd 0 Následující:

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

Klientská část

Zkusme připojit zařízení k Windows 10 pomocí výše uvedených pokynů z openwrt.org. Hned řeknu: myšlenka je odsouzena k neúspěchu. Za prvé, zvažuje se pouze Windows 7 x64. Za druhé, je uveden odkaz na vlákno na sourceforge.net, které navrhuje stažení ovladače opraveného v roce 2014 z Dropboxu. Když se jej pokusíme spustit pod Windows 10 a připojit se k našemu zařízení, zobrazí se následující chyba:

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

*** ERROR: cannot find device

Důvodem je skutečnost, že klient nepracuje se serverem vytvořeným pro jádro starší než verze 3.14.
Usbip server pro OpenWRT 19.07.3 je postaven na jádře 4.14.180.

Pokračuji v hledání a narážím na aktuální vývoj klienta pro Windows GitHub. Ok, podpora Windows 10 x64 je uvedena, ale klient je pouze testovací klient, takže existuje řada omezení.

Nejprve tedy požádají o instalaci certifikátu a dvakrát. Dobře, dáme to do důvěryhodné kořenové certifikační autority a důvěryhodných vydavatelů.

Dále je třeba uvést operační systém do testovacího režimu. To provádí tým

bcdedit.exe /set TESTSIGNING ON

Poprvé se mi to nepovedlo, překážel jsem zajistit boot. Chcete-li jej zakázat, musíte restartovat UEFI a nastavit zabezpečené spouštění na zakázání. Některé modely notebooků mohou vyžadovat nastavení hesla správce.

Poté spusťte systém Windows a proveďte bcdedit.exe /set ZAPNUTÍ TESTOVÁNÍ
Vinda říká, že je vše v pořádku. Znovu restartujeme a v pravém dolním rohu vidíme slova Test Mode, verze a číslo sestavení OS.

K čemu jsou všechny ty manipulace? Instalace nepodepsaného ovladače USB/IP VHCI. Doporučuje se to provést stažením souborů usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat a spuštěním s právy správce

usbip.exe install

nebo druhou metodou je ruční instalace staršího hardwaru. Zvolil jsem druhou možnost, obdržel jsem upozornění na instalaci nepodepsaného ovladače a souhlasil s ním.

Dále zkontrolujeme, zda se máme možnost připojit ke vzdálenému zařízení USB spuštěním příkazu:

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

dostaneme seznam zařízení:

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: nepodařilo se otevřít databázi usb id Nevěnujeme pozornost, neovlivňuje to práci.

Nyní svážeme zařízení:

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

To je vše, Windows detekoval nové zařízení, nyní s ním můžete pracovat, jako by bylo fyzicky připojeno k notebooku.

S čínským rytcem jsem musel trochu trpět, protože když jsem se pokusil nainstalovat jeho ovladač CH341SER přes instalační program, který byl dodán s rytcem (ano, rytec Arduino), USB/IP VHCI vypustil Windows do BSOD. Instalace ovladače CH341SER na připojení zařízení přes usbip.exe problém vyřešilo.

Sečteno a podtrženo: rytec dělá hluk a kouří v kuchyni s otevřeným oknem a zavřenými dveřmi, proces hoření sleduji z jiné místnosti přes vlastní software, který necítí žádný háček.

Použité zdroje:

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

Zdroj: www.habr.com

Přidat komentář