USB li ser IP-ê li malê

Carinan hûn dixwazin bi amûrek ku bi USB-yê ve girêdayî ye bixebitin bêyî ku wê li ser maseya li kêleka laptopa xwe bihêlin. Amûra min gravurek çînî ye bi lazerek 500 mW, ku di têkiliya nêzîk de pir ne xweş e. Digel xetera tavilê ya li ser çavan, hilberên şewitandina jehrîn di dema xebata lazerê de têne berdan, ji ber vê yekê pêdivî ye ku amûr li deverek baş-hewakirî were danîn, û bi tercîh ji mirovan were veqetandin. Çawa hûn dikarin amûrek weha kontrol bikin? Min bi şaşî bersiva vê pirsê dît dema ku li depoya OpenWRT gerîyam bi hêviya ku bikaribim ji bo routerê kevn D-Link DIR-320 A2 bikarbînim. Ji bo girêdanê, min biryar da ku ya ku berê li Habré hatî diyar kirin bikar bînim. USB ser tunela IP, Lêbelê, hemî rêwerzên ji bo sazkirina wê girîngiya xwe winda kirine, ji ber vê yekê ez ya xwe dinivîsim.

OpenWRT pergalek xebitandinê ye ku hewcedariya wê tune ye, ji ber vê yekê ez ê sazkirina wê venabêjim. Ji bo routerê xwe, min serbestberdana herî paşîn a OpenWrt 19.07.3 girt, û ew wekî xerîdar bi xala gihîştina Wi-Fi ya sereke ve girêda, modê hilbijart lan, ji bo ku dîwarê agir neêşînin.

Beşa serverê

Em li gorî tevdigerin talîmatên fermî. Piştî ku bi ssh ve girêdayî ye, pakêtên pêwîst saz bikin.

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

Dûv re, em cîhaza xwe bi porta USB ya routerê ve girêdidin (di rewşa min de, cîhazên: navendek USB, ajokerek flash ku pergala pelê ya routerê li ser hatî danîn (ji ber kêmbûna cîhê li ser hilanîna hundurîn), û rasterast, gravurkar).

Ka em hewl bidin navnîşek cîhazên girêdayî nîşan bidin:

root@OpenWrt:~# usbip list -l

Vala.

Bi googlê sûcdar hat dîtin, derket holê ku pirtûkxane ye libudev-fbsd.
Em guhertoya xebatê ya herî dawî bi destê xwe ji depoyê derdixin libudev_3.2-1 ji serbestberdana OpenWRT 17.01.7 ji bo mîmariya we, di doza min de ew libudev_3.2-1_mipsel_mips32.ipk e. Wget/scp bikar bînin, wê di bîra routerê de dakêşin û ji nû ve saz bikin

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

Em kontrol dikin:

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)

Zilamek çînî ku bi navendek USB ve girêdayî ye bsuid wergirt 1-1.4. Bîrveanîn.

Naha em dest bi daemon bikin:

root@OpenWrt:~# usbipd -D

û çînî bindim

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

Ka em kontrol bikin ku her tişt dixebite:

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

Ji bo ku amûrê bixweber bêtir girêdin, em biguherînin /etc/rc.localbi zêdekirina berê derketina 0 jêrîn:

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

Aliyê xerîdar

Ka em hewl bidin ku amûrê bi Windows 10-ê ve bi karanîna rêwerzên jorîn ji openwrt.org ve girêdin. Ez ê di cih de bêjim: raman mehkûmî têkçûnê ye. Pêşîn, tenê Windows 7 x64 tête hesibandin. Ya duyemîn, lînkek ji mijarek li ser sourceforge.net re tê dayîn, ku pêşniyar dike ku ajokerek ku di sala 2014-an de hatî paç kirin ji Dropbox-ê dakêşin. Dema ku em hewl didin ku wê di bin Windows 10-ê de bimeşînin û bi cîhaza xwe ve girêdin, em xeletiya jêrîn digirin:

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

*** ERROR: cannot find device

Ev ji ber vê yekê ye ku xerîdar bi serverek ku ji bo kernelek ji guhertoya 3.14 kevntir hatî çêkirin re kar nake.
Pêşkêşkara usbip ji bo OpenWRT 19.07.3 li ser kernel 4.14.180 hatî çêkirin.

Di berdewamkirina lêgerîna xwe de, ez li pêşkeftina heyî ya xerîdarek Windows-ê têm github. Ok, piştgirî ji bo Windows 10 x64 tête diyar kirin, lê xerîdar tenê xerîdarek ceribandinê ye, ji ber vê yekê hejmarek sînor hene.

Ji ber vê yekê, pêşî ew dipirsin ku sertîfîkayê saz bikin, û du caran. Ok, bila em wê têxin nav Desthilatdariya Sertîfîkaya Root a pêbawer û Weşanxaneyên pêbawer.

Piştre, hûn hewce ne ku pergala xebitandinê têxin moda ceribandinê. Ev ji hêla tîmek ve tê kirin

bcdedit.exe /set TESTSIGNING ON

Ez cara ewil bi ser neketim, ez ketim rê boot ewle. Ji bo neçalakkirina wê, hûn hewce ne ku hûn UEFI-ê ji nû ve bidin destpêkirin û boota ewledar ji bo neçalakkirinê saz bikin. Dibe ku hin modelên laptopê hewceyê danîna şîfreyek çavdêriyê bikin.

Piştî wê, li Windows-ê boot bikin û bikin bcdedit.exe /set TESTSIGNING ON
Vinda dibêje her tişt baş e. Em dîsa ji nû ve dest pê dikin, û em di quncika jêrîn a rastê de peyvan Mode Test, guherto û jimareya avakirina OS-ê dibînin.

Ev hemû manîpulasyon ji bo çi ne? Ji bo sazkirina ajokerek bê îmze USB / IP VHCI. Tête pêşniyar kirin ku hûn vê yekê bi dakêşana pelên usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat bikin, û bi mafên rêveberiyê bixebitin.

usbip.exe install

an rêbaza duyemîn, sazkirina Legacy Hardware bi destan. Min vebijarka duyemîn hilbijart, hişyariyek li ser sazkirina ajokerek bê îmze wergirt û pê razî bû.

Dûv re, em kontrol dikin ku em dikarin bi rêvekirina fermanê ve bi amûrek USB-ya dûr ve girêdayî bin:

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

em navnîşek cîhazan digirin:

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)

ji bo xeletiyek usbip: xelet: vekirina databasa nasnama usb têk çû Em guh nadin, bandorê li kar nake.

Naha em amûrê girêdidin:

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

Ew e, Windows-ê amûrek nû tespît kiriye, naha hûn dikarin pê re bixebitin mîna ku ew bi fizîkî bi laptopê ve girêdayî be.

Ez neçar bûm ku ez piçek bi gravkera Chineseînî re cefayê bikişînim, ji ber ku gava ku min hewl da ku ajokera wê ya CH341SER bi navgîniya sazkerê ku bi gravkerê re hatî (erê, gravkerek Arduino) saz bikim, USB / IP VHCI Windows xist BSOD. Lêbelê, ajokera CH341SER saz dike ber girêdana amûrê bi rêya usbip.exe pirsgirêk çareser kir.

Rêzeya jêrîn: gravur di mitbaxê de bi pencereya vekirî û derî girtî deng derdixe û cixarê dikişîne, ez pêvajoya şewitandinê ji jûreyek din bi navgîniya nermalava xweya xwe temaşe dikim, ya ku girtina wê hîs nake.

Çavkaniyên bi kar anîn:

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

Source: www.habr.com

Add a comment