USB per IP hejme

Kelkfoje vi volas labori kun aparato konektita per USB sen teni ĝin sur la tablo apud via tekkomputilo. Mia aparato estas ĉina gravuristo kun 500 mW lasero, kio estas sufiĉe malagrabla kiam en proksima kontakto. Krom la tuja danĝero por la okuloj, toksaj brulproduktoj estas liberigitaj dum lasera operacio, do la aparato devas esti lokita en bone ventolita areo, kaj prefere izolita de homoj. Kiel vi povas kontroli tian aparaton? Mi hazarde trovis la respondon al ĉi tiu demando foliumante la OpenWRT-deponejon esperante trovi indan uzon por la malnova D-Link DIR-320 A2-enkursigilo. Por konekti, mi decidis uzi tiun priskribitan ĉe Habré antaŭe. tunelo USB super IP, tamen ĉiuj instrukcioj por instali ĝin perdis sian gravecon, do mi skribas mian propran.

OpenWRT estas operaciumo, kiu ne bezonas enkondukon, do mi ne priskribos ĝian instaladon. Por mia enkursigilo, mi prenis la plej novan stabilan eldonon de OpenWrt 19.07.3, kaj konektis ĝin al la ĉefa Wi-Fi-alirpunkto kiel kliento, elektante la reĝimon. lan, por ne turmenti la fajroŝirmilon.

Servila parto

Ni agas laŭ oficialaj instrukcioj. Post konektiĝi per ssh, instalu la necesajn pakaĵojn.

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

Poste, ni konektas nian aparaton al la USB-haveno de la enkursigilo (en mia kazo, aparatoj: USB-nabo, poŝmemoro sur kiu estas muntita la dosiersistemo de la enkursigilo (pro manko de spaco sur la interna stokado), kaj, rekte, la gravuristo).

Ni provu montri liston de konektitaj aparatoj:

root@OpenWrt:~# usbip list -l

Malplena.

Guglinte la kulpulo estis trovita, ĝi montriĝis biblioteko libudev-fbsd.
Ni eltiras mane la lastan funkciantan version el la deponejo libudev_3.2-1 de la eldono de OpenWRT 17.01.7 por via arkitekturo, en mia kazo ĝi estas libudev_3.2-1_mipsel_mips32.ipk. Uzante wget/scp, elŝutu ĝin en la memoron de la enkursigilo kaj reinstalu ĝin

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

Ni kontrolas:

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)

Ĉino konektita al USB-nabo ricevis bsuid 1-1.4. Memoru.

Nun ni komencu la demonon:

root@OpenWrt:~# usbipd -D

kaj bindim la ĉinoj

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

Ni kontrolu, ke ĉio funkcias:

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

Por plu ligi la aparaton aŭtomate, ni redaktu /etc/rc.localaldonante antaŭe eliro 0 jeno:

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

Klienta parto

Ni provu konekti la aparaton al Windows 10 uzante la suprajn instrukciojn de openwrt.org. Mi tuj diros: la ideo estas kondamnita al fiasko. Unue, nur Vindozo 7 x64 estas konsiderata. Due, ligo estas donita al fadeno sur sourceforge.net, kiu sugestas elŝuti pelilon flikitan en 2014 de Dropbox. Kiam ni provas ruli ĝin sub Windows 10 kaj konekti al nia aparato, ni ricevas la jenan eraron:

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

*** ERROR: cannot find device

Ĉi tio estas pro la fakto, ke la kliento ne funkcias kun servilo konstruita por kerno pli malnova ol versio 3.14.
La usbip-servilo por OpenWRT 19.07.3 estas konstruita sur kerno 4.14.180.

Daŭrigante mian serĉon, mi trovas la nunan evoluon de Vindoza kliento por GitHub. Bone, subteno por Windows 10 x64 estas deklarita, sed la kliento estas nur testa kliento, do ekzistas kelkaj limigoj.

Do, unue ili petas instali la atestilon, kaj dufoje. Bone, ni metu ĝin en la Trusted Root Certification Authority kaj Trusted Publishers.

Poste, vi devas meti la operaciumon en provan reĝimon. Ĉi tio estas farita de teamo

bcdedit.exe /set TESTSIGNING ON

Mi ne sukcesis la unuan fojon, mi enbaris sekura boto. Por malŝalti ĝin, vi devas rekomenci en UEFI kaj agordi sekuran lanĉon por malŝalti. Iuj tekokomputilaj modeloj povas postuli agordi pasvorton de kontrolisto.

Post tio, ekfunkciigu Vindozon kaj faru bcdedit.exe /agordi TESTSIGNING ON
Vinda diras, ke ĉio estas en ordo. Ni rekomencas, kaj ni vidas en la malsupra dekstra angulo la vortojn Test Mode, version kaj OS-konstrunumero.

Por kio estas ĉiuj ĉi manipuladoj? Por instali nesubskribitan pelilon USB/IP VHCI. Oni rekomendas fari tion elŝutante la dosierojn usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, kaj funkciante kun administranto-rajtoj

usbip.exe install

aŭ la dua metodo, instali Legacy Hardware permane. Mi elektis la duan opcion, ricevis averton pri instalo de nesubskribita pelilo kaj konsentis kun ĝi.

Poste, ni kontrolas, ke ni havas la kapablon konekti al fora USB-aparato rulante la komandon:

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

ni ricevas liston de aparatoj:

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)

pro eraro usbip: eraro: malsukcesis malfermi usb-id datumbazon Ni ne atentas, ĝi ne influas la laboron.

Nun ni ligas la aparaton:

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

Jen ĝi, Vindozo detektis novan aparaton, nun vi povas labori kun ĝi kvazaŭ ĝi estus fizike konektita al la tekkomputilo.

Mi devis iom suferi kun la ĉina gravurilo, ĉar kiam mi provis instali ĝian CH341SER-ŝoforon per la instalilo kiu venis kun la gravurilo (jes, Arduino-gravurilo), USB/IP VHCI faligis Vindozon en BSOD. Tamen instalante la ŝoforon CH341SER por konekti la aparaton per usbip.exe solvis la problemon.

Fundo: la gravuristo bruas kaj fumas en la kuirejo kun la fenestro malfermita kaj la pordo fermita, mi rigardas la brulprocezon de alia ĉambro per mia propra programaro, kiu ne sentas kaptaĵon.

Uzitaj fontoj:

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

fonto: www.habr.com

Aldoni komenton