Понякога искате да работите с устройство, свързано чрез USB, без да го държите на масата до вашия лаптоп. Уредът ми е китайски гравьор с 500 mW лазер, който е доста неприятен при близък контакт. В допълнение към непосредствената опасност за очите, по време на работа на лазера се отделят токсични продукти от горенето, така че устройството трябва да се намира на добре проветриво място и за предпочитане изолирано от хора. Как можете да управлявате такова устройство? Случайно намерих отговора на този въпрос, докато разглеждах хранилището на OpenWRT с надеждата да намеря достойно приложение за стария рутер D-Link DIR-320 A2. За да се свържа, реших да използвам описания по-рано в Habré. USB през IP тунел, но всички инструкции за инсталирането му са загубили своята релевантност, така че пиша моите.
OpenWRT е операционна система, която няма нужда от представяне, така че няма да описвам нейната инсталация. За моя рутер взех най-новата стабилна версия на OpenWrt 19.07.3 и го свързах към основната Wi-Fi точка за достъп като клиент, като избрах режима LAN, за да не измъчвате защитната стена.
Сървърна част
Ние действаме според
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 клиент за
И така, първо те искат да инсталират сертификата и два пъти. Добре, нека го поставим в 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 реши проблема.
Извод: гравьорът вдига шум и пуши в кухнята с отворен прозорец и затворена врата, аз наблюдавам процеса на записване от друга стая чрез собствен софтуер, който не усеща уловка.
Използвани източници:
Източник: www.habr.com