USB през IP у дома

Понякога искате да работите с устройство, свързано чрез USB, без да го държите на масата до вашия лаптоп. Уредът ми е китайски гравьор с 500 mW лазер, който е доста неприятен при близък контакт. В допълнение към непосредствената опасност за очите, по време на работа на лазера се отделят токсични продукти от горенето, така че устройството трябва да се намира на добре проветриво място и за предпочитане изолирано от хора. Как можете да управлявате такова устройство? Случайно намерих отговора на този въпрос, докато разглеждах хранилището на OpenWRT с надеждата да намеря достойно приложение за стария рутер D-Link DIR-320 A2. За да се свържа, реших да използвам описания по-рано в Habré. USB през IP тунел, но всички инструкции за инсталирането му са загубили своята релевантност, така че пиша моите.

OpenWRT е операционна система, която няма нужда от представяне, така че няма да описвам нейната инсталация. За моя рутер взех най-новата стабилна версия на OpenWrt 19.07.3 и го свързах към основната Wi-Fi точка за достъп като клиент, като избрах режима LAN, за да не измъчвате защитната стена.

Сървърна част

Ние действаме според официални инструкции. След като се свържете чрез ssh, инсталирайте необходимите пакети.

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

След това свързваме нашето устройство към USB порта на рутера (в моя случай устройства: USB хъб, флаш устройство, на което е монтирана файловата система на рутера (поради липса на място във вътрешната памет) и директно гравьор).

Нека се опитаме да покажем списък със свързани устройства:

root@OpenWrt:~# usbip list -l

празна.

С гугъл виновникът беше открит, оказа се библиотека libudev-fbsd.
Ние изваждаме най-новата работеща версия от хранилището на ръка libudev_3.2-1 от изданието OpenWRT 17.01.7 за вашата архитектура, в моя случай това е libudev_3.2-1_mipsel_mips32.ipk. Използвайки wget/scp, изтеглете го в паметта на рутера и го инсталирайте отново

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)

Китайец, свързан към USB хъб, получи bsuid 1-1.4. Помня.

Сега нека стартираме демона:

root@OpenWrt:~# usbipd -D

и биндим китайците

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

Нека проверим дали всичко работи:

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

За да обвържем допълнително устройството автоматично, нека редактираме /etc/rc.localкато добавите преди изход 0 следното:

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

Клиентска страна

Нека се опитаме да свържем устройството към Windows 10, като използваме горните инструкции от openwrt.org. Ще кажа веднага: идеята е обречена на провал. Първо, разглежда се само Windows 7 x64. Второ, дадена е връзка към тема на sourceforge.net, която предлага изтегляне на драйвер, коригиран през 2014 г. от Dropbox. Когато се опитаме да го стартираме под Windows 10 и да се свържем с нашето устройство, получаваме следната грешка:

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

*** ERROR: cannot find device

Това се дължи на факта, че клиентът не работи със сървър, създаден за ядро, по-старо от версия 3.14.
Сървърът usbip за OpenWRT 19.07.3 е изграден върху ядро ​​4.14.180.

Продължавайки търсенето си, попадам на текущата разработка на Windows клиент за GitHub. Добре, заявена е поддръжка за Windows 10 x64, но клиентът е само тестов клиент, така че има редица ограничения.

И така, първо те искат да инсталират сертификата и два пъти. Добре, нека го поставим в Trusted Root Certification Authority и Trusted Publishers.

След това трябва да поставите операционната система в тестов режим. Това се прави от екип

bcdedit.exe /set TESTSIGNING ON

Първият път не успях, пречех осигуряване на зареждане. За да го деактивирате, трябва да рестартирате в UEFI и да зададете защитено стартиране на деактивиране. Някои модели лаптопи може да изискват задаване на парола на надзорник.

След това стартирайте Windows и направете bcdedit.exe /set TESTSIGNING ON
Винда казва, че всичко е наред. Рестартираме отново и виждаме в долния десен ъгъл думите Test Mode, версия и номер на компилация на OS.

За какво са всички тези манипулации? За инсталиране на неподписан драйвер USB/IP VHCI. Предлага се да направите това, като изтеглите файловете usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat и стартирате с администраторски права

usbip.exe install

или вторият метод, ръчно инсталиране на Legacy Hardware. Избрах втория вариант, получих предупреждение за инсталиране на неподписан драйвер и се съгласих с него.

След това проверяваме дали имаме възможност да се свържем с отдалечено USB устройство, като изпълним командата:

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

получаваме списък с устройства:

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: грешка: неуспешно отваряне на база данни с USB id Не обръщаме внимание, това не се отразява на работата.

Сега свързваме устройството:

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

Това е всичко, Windows откри ново устройство, сега можете да работите с него, сякаш е физически свързано с лаптопа.

Трябваше да страдам малко с китайския гравьор, защото когато се опитах да инсталирам неговия драйвер CH341SER чрез инсталатора, който дойде с гравера (да, гравьор Arduino), USB/IP VHCI пусна Windows в BSOD. Въпреки това, инсталирането на драйвера CH341SER до свързването на устройството чрез usbip.exe реши проблема.

Извод: гравьорът вдига шум и пуши в кухнята с отворен прозорец и затворена врата, аз наблюдавам процеса на записване от друга стая чрез собствен софтуер, който не усеща уловка.

Използвани източници:

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

Източник: www.habr.com

Добавяне на нов коментар