USB over IP derhjemme

Nogle gange vil du gerne arbejde med en enhed tilsluttet via USB uden at have den på bordet ved siden af ​​din bærbare computer. Min enhed er en kinesisk gravør med en 500 mW laser, hvilket er ret ubehageligt ved tæt kontakt. Ud over den umiddelbare fare for øjnene frigives giftige forbrændingsprodukter under laserdrift, så enheden bør placeres i et godt ventileret område og helst isoleret fra mennesker. Hvordan kan du styre sådan en enhed? Jeg fandt ved et uheld svaret på dette spørgsmål, mens jeg gennemsøgte OpenWRT-depotet i håbet om at finde en værdig brug for den gamle D-Link DIR-320 A2-router. For at forbinde, besluttede jeg at bruge den, der er beskrevet på Habré tidligere. USB over IP-tunnel, dog har alle instruktionerne til at installere det mistet deres relevans, så jeg skriver min egen.

OpenWRT er et operativsystem, der ikke behøver nogen introduktion, så jeg vil ikke beskrive dets installation. Til min router tog jeg den seneste stabile udgivelse af OpenWrt 19.07.3 og sluttede den til det primære Wi-Fi-adgangspunkt som en klient ved at vælge tilstanden lan, for ikke at plage firewallen.

Server del

Vi handler efter officielle instruktioner. Efter tilslutning via ssh skal du installere de nødvendige pakker.

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

Dernæst tilslutter vi vores enhed til routerens USB-port (i mit tilfælde enheder: en USB-hub, et flashdrev, hvorpå routerens filsystem er monteret (på grund af pladsmangel på det interne lager), og direkte gravør).

Lad os prøve at få vist en liste over tilsluttede enheder:

root@OpenWrt:~# usbip list -l

Tom.

Ved at google den skyldige blev fundet, viste det sig at være et bibliotek libudev-fbsd.
Vi trækker den seneste arbejdsversion ud af lageret i hånden libudev_3.2-1 fra OpenWRT 17.01.7-udgivelsen til din arkitektur, i mit tilfælde er det libudev_3.2-1_mipsel_mips32.ipk. Brug wget/scp, download det til routerens hukommelse og geninstaller det

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

Vi tjekker:

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)

En kinesisk mand tilsluttet en USB-hub modtog et bsuid 1-1.4. Husk.

Lad os nu starte dæmonen:

root@OpenWrt:~# usbipd -D

og bindim kineserne

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

Lad os tjekke, at alt fungerer:

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

Lad os redigere for yderligere at binde enheden automatisk /etc/rc.localved at tilføje før Afslut 0 følgende:

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

Kundedel

Lad os prøve at forbinde enheden til Windows 10 ved hjælp af ovenstående instruktioner fra openwrt.org. Jeg siger med det samme: ideen er dømt til at mislykkes. For det første tages kun Windows 7 x64 i betragtning. For det andet er der givet et link til en tråd på sourceforge.net, som foreslår at downloade en driver, der blev patchet i 2014 fra Dropbox. Når vi forsøger at køre det under Windows 10 og oprette forbindelse til vores enhed, får vi følgende fejl:

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

*** ERROR: cannot find device

Dette skyldes, at klienten ikke arbejder med en server bygget til en kerne ældre end version 3.14.
Usbip-serveren til OpenWRT 19.07.3 er bygget på kerne 4.14.180.

Idet jeg fortsætter min søgning støder jeg på den aktuelle udvikling af en Windows-klient til github. Ok, support til Windows 10 x64 er angivet, men klienten er kun en testklient, så der er en række begrænsninger.

Så først beder de om at installere certifikatet, og to gange. Ok, lad os placere det i Trusted Root Certification Authority og Trusted Publishers.

Dernæst skal du sætte operativsystemet i testtilstand. Dette gøres af et team

bcdedit.exe /set TESTSIGNING ON

Det lykkedes ikke første gang, jeg kom i vejen sikre boot. For at deaktivere det, skal du genstarte i UEFI og indstille sikker opstart til at deaktivere. Nogle bærbare modeller kræver muligvis indstilling af en supervisor-adgangskode.

Derefter skal du starte op i Windows og gøre det bcdedit.exe /set TESTSIGNING TIL
Vinda siger, at alt er ok. Vi genstarter igen, og vi ser i nederste højre hjørne ordene Test Mode, version og OS build-nummer.

Hvad er alle disse manipulationer til? For at installere en usigneret driver USB/IP VHCI. Det foreslås at gøre dette ved at downloade filerne usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat og køre med administratorrettigheder

usbip.exe install

eller den anden metode, installering af Legacy Hardware manuelt. Jeg valgte den anden mulighed, modtog en advarsel om installation af en usigneret driver og accepterede det.

Dernæst kontrollerer vi, at vi har mulighed for at oprette forbindelse til en ekstern USB-enhed ved at køre kommandoen:

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

vi får en liste over enheder:

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)

for en fejl usbip: fejl: kunne ikke åbne usb-id-database Vi er ikke opmærksomme, det påvirker ikke arbejdet.

Nu binder vi enheden:

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

Det er det, Windows har opdaget en ny enhed, nu kan du arbejde med den, som om den var fysisk forbundet til den bærbare computer.

Jeg måtte lide lidt med den kinesiske graver, for da jeg forsøgte at installere dens CH341SER driver gennem installationsprogrammet, der fulgte med graveren (ja, en Arduino gravør), droppede USB/IP VHCI Windows i BSOD. Installation af CH341SER-driveren til tilslutning af enheden via usbip.exe løste problemet.

Nederste linje: gravøren larmer og ryger i køkkenet med vinduet åbent og døren lukket, jeg ser brændeprocessen fra et andet rum gennem min egen software, som ikke mærker en fangst.

Brugte kilder:

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

Kilde: www.habr.com

Tilføj en kommentar