USB IP-ի միջոցով տանը

Երբեմն ցանկանում եք աշխատել USB-ի միջոցով միացված սարքի հետ՝ առանց այն պահելու ձեր նոութբուքի կողքին գտնվող սեղանին: Իմ սարքը չինական փորագրիչ է՝ 500 մՎտ լազերային հզորությամբ, որը բավականին տհաճ է սերտ շփման ժամանակ։ Աչքերին անմիջական վտանգից բացի, լազերային շահագործման ընթացքում արտանետվում են թունավոր այրման արտադրանք, ուստի սարքը պետք է տեղակայվի լավ օդափոխվող տարածքում և գերադասելի է մեկուսացված լինի մարդկանցից: Ինչպե՞ս կարող եք կառավարել նման սարքը: Ես պատահաբար գտա այս հարցի պատասխանը OpenWRT պահեստը զննարկելիս՝ հին D-Link DIR-320 A2 երթուղիչի համար արժանի կիրառություն գտնելու հույսով: Միանալու համար ես որոշեցի օգտագործել Habré-ում ավելի վաղ նկարագրվածը: USB-ի միջոցով IP թունել, այնուամենայնիվ, այն տեղադրելու բոլոր հրահանգները կորցրել են իրենց արդիականությունը, ուստի ես գրում եմ իմ սեփականը:

OpenWRT-ն օպերացիոն համակարգ է, որը ներածման կարիք չունի, ուստի ես չեմ նկարագրի դրա տեղադրումը: Իմ երթուղիչի համար ես վերցրեցի OpenWrt 19.07.3-ի վերջին կայուն թողարկումը և որպես հաճախորդ միացրի այն հիմնական Wi-Fi մուտքի կետին՝ ընտրելով ռեժիմը: LAN, որպեսզի չտանջեն firewall-ը։

Սերվերի մաս

Մենք գործում ենք ըստ պաշտոնական հրահանգներ. ssh-ի միջոցով միանալուց հետո տեղադրեք անհրաժեշտ փաթեթները։

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

Այնուհետև մենք մեր սարքը միացնում ենք երթուղիչի USB պորտին (իմ դեպքում՝ սարքեր՝ USB հանգույց, ֆլեշ կրիչ, որի վրա տեղադրված է երթուղիչի ֆայլային համակարգը (ներքին պահեստում տեղ չունենալու պատճառով), և ուղղակիորեն՝ փորագրիչ):

Փորձենք ցուցադրել միացված սարքերի ցանկը.

root@OpenWrt:~# usbip list -l

Դատարկ.

Գուգլի միջոցով հայտնաբերվել է մեղավորը, պարզվել է, որ այն գրադարան է լիբուդև-ֆբսդ.
Մենք պահոցից ձեռքով հանում ենք վերջին աշխատանքային տարբերակը լիբուդև_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. Հիշիր.

Հիմա եկեք սկսենք deemon-ը.

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-ում գտնվող թեմային, որն առաջարկում է Dropbox-ից ներբեռնել 2014 թվականին կարկատված դրայվերը։ Երբ մենք փորձում ենք այն գործարկել Windows 10-ով և միանալ մեր սարքին, ստանում ենք հետևյալ սխալը.

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

*** ERROR: cannot find device

Դա պայմանավորված է նրանով, որ հաճախորդը չի աշխատում 3.14 տարբերակից ավելի հին միջուկի համար ստեղծված սերվերի հետ։
OpenWRT 19.07.3-ի usbip սերվերը կառուցված է միջուկի վրա 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, version և OS build number բառերը:

Ինչի՞ համար են այս բոլոր մանիպուլյացիաները։ Չստորագրված դրայվեր տեղադրելու համար 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

Source: www.habr.com

Добавить комментарий