Il-kompitu tal-konnessjoni ta 'apparat USB ma' PC remot permezz ta 'netwerk lokali jqum regolarment. Taħt il-qatgħa hemm l-istorja tat-tfittxijiet tiegħi f'din id-direzzjoni, u t-triq għal soluzzjoni lesta bbażata fuq proġett open-source
L-ewwel parti, storika
Jekk il-magna hija virtwali, dan kollu huwa faċli. Il-funzjonalità tal-USB forwarding mill-host għall-magna virtwali dehret f'VMWare 4.1. Iżda fil-każ tiegħi, iċ-ċavetta tas-sigurtà, identifikata bħala WIBU-KEY, kellha tkun imqabbda ma 'magni differenti f'ħinijiet differenti, u mhux biss dawk virtwali.
L-ewwel rawnd ta 'tfittxija lura fl-2009 wasslitni għal biċċa hardware imsejħa
Pros:
- kultant anke jaħdem
Cons:
- mhux dejjem jaħdem. Ejja ngħidu li ċ-ċavetta tal-protezzjoni Guardant Stealth II ma tibdax minnha, u taħlef bl-iżball "l-apparat ma jistax jinbeda."
- Is-softwer għall-ġestjoni (aqra: immuntar u żarmament ta 'tagħmir USB) huwa estremament fqir. Swiċċijiet tal-linja tal-kmand, awtomazzjoni - le, ma smajnax. Kollox isir b'idejk. Ħmar il-lejl.
- Is-softwer tal-kontroll ifittex il-ħardwer innifsu fuq in-netwerk billi jxandar, għalhekk jaħdem biss f'segment wieħed tax-xandir tan-netwerk. Ma tistax tispeċifika l-indirizz IP tal-biċċa tal-ħardwer manwalment. Il-biċċa tal-ħardwer tinsab fuq subnet differenti? Imbagħad għandek problema.
- L-iżviluppaturi rrinunzjaw fuq l-apparat, li tibgħat rapporti ta 'bug hija inutli.
It-tieni rawnd ġara fi żmien mhux daqshekk imbiegħed, u wassalni għas-suġġett tal-artikolu -
It-tieni parti, server-Linux
Server USB/IP li jaqsam apparati USB fuq netwerk jista 'jiġi installat biss f'OS ibbażat fuq Linux. Ukoll, Linux huwa Linux, installa Debian 8 fuq il-magna virtwali f'konfigurazzjoni minima, moviment standard tal-idejn:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip
Stabbilit. Imbagħad l-Internet jissuġġerixxi li għandek bżonn tniżżel il-modulu usbip, iżda - bonjour, l-ewwel rake. M'hemm l-ebda modulu bħal dan. Dan minħabba li ħafna mill-manwali fuq in-netwerk jirreferu għall-fergħa l-antika 0.1.x, u fl-aħħar 0.2.0 il-moduli usbip għandhom ismijiet differenti.
Għalhekk:
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip
Ukoll, ejja nżidu l-linji li ġejjin ma '/etc/modules biex tgħabbihom awtomatikament meta tibda s-sistema:
usbip-core
usbip-host
vhci-hcd
Ejja nibdew is-server usbip:
sudo usbipd -D
Barra minn hekk, l-għerf universali jgħidilna li l-usbip jiġi bi skripts li jippermettulna namministraw is-server - uri liema apparat se jaqsam man-netwerk, ara l-istatus, eċċ. Hawnhekk tistenniena għodda oħra tal-ġnien - dawn l-iskripts fil-fergħa 0.2.x, għal darb'oħra, ġew isimhom mill-ġdid. Tista 'tikseb lista ta' kmandi bl-użu
sudo usbip
Wara li taqra d-deskrizzjoni tal-kmandi, jidher ċar li sabiex taqsam l-apparat USB meħtieġ, usbip trid issir taf l-ID tal-Bus tagħha. Għeżież telespettaturi, rake numru tlieta fl-arena: il-Bus ID li se tagħtina lsusb (jidher l-aktar mod ovvju) - ma jixirqilha! Il-fatt hu li l-usbip jinjora l-ħardwer bħal USB hubs. Għalhekk, se nużaw il-kmand inkorporat:
user@usb-server:~$ sudo usbip list -l
- busid 1-1 (064f:0bd7)
WIBU-Systems AG : BOX/U (064f:0bd7)
Nota: hawn u aktar fil-listi ser niddeskrivi kollox billi tuża l-eżempju taċ-ċavetta USB speċifika tiegħi. L-isem tal-ħardwer tiegħek u l-par VID:PID jistgħu u se jkunu differenti. Mini jissejjaħ Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.
Issa nistgħu naqsmu l-apparat tagħna:
user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete
Ħura, sħabi!
user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
- localhost
1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
: /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
: Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)
Tliet cheers, sħabi! Is-server qasam il-ħardwer fuq in-netwerk, u nistgħu nqabbduh! Kulma jibqa' huwa li żżid l-awtostart tad-daemon usbip f'/etc/rc.local
usbipd -D
It-tielet parti, min-naħa tal-klijent u konfuża
Immedjatament ippruvajt nikkonnettja l-apparat kondiviż fuq in-netwerk ma' magna li taħdem Debian fuq l-istess server, u kollox konness perfettament:
sudo usbip attach --remote=localhost --busid=1-1
Ejja ngħaddu għall-Windows. Fil-każ tiegħi kien Windows Server 2008R2 Standard Edition. Il-manwal uffiċjali jgħidlek biex tinstalla s-sewwieq l-ewwel. Il-proċedura hija deskritta perfettament fil-readme inkluż mal-klijent Windows, nagħmlu kollox kif miktub, kollox jaħdem. Taħdem ukoll fuq XP mingħajr ebda diffikultajiet.
Wara li żppakkjaw il-klijent, nippruvaw inarmaw iċ-ċavetta tagħna:
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Oh oh. Xi ħaġa marret ħażin. Ejja nużaw il-ħila tal-Google. Hemm isemmi frammentari li xi ħaġa ħażina mal-kostanti fil-parti tas-server, l-iżviluppaturi bidlu l-verżjoni tal-protokoll meta ċċaqilqu għall-verżjoni 0.2.0, iżda fil-klijent Win insew jagħmlu dan. Is-soluzzjoni proposta hija li tinbidel il-kostanti fil-kodiċi tas-sors u terġa 'tinbena l-klijent.
Imma verament ma rridx inniżżel Visual Studio għal din il-proċedura. Imma għandi l-qadim Hiew tajjeb. Fil-kodiċi tas-sors, il-kostanti hija ddikjarata bħala kelma doppja. Ejja nfittxu 0x00000106 fil-fajl, tibdilha b'0x00000111. Tinsiex, l-ordni tal-byte hija inversa. Ir-riżultat huwa żewġ logħbiet, aħna garża:
[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11
Aaaand... iva!
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1
Dan seta’ kien it-tmiem tal-istorja, iżda l-mużika ma dametx għal żmien twil. Wara li rebooting is-server, skoprejt li l-apparat fuq il-klijent ma kienx immuntat!
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Dak kollox. Anki l-Google li jaf kollox ma setax iwieġeb dan għalija. U fl-istess ħin, il-kmand biex jintwerew l-apparati disponibbli fuq is-server juri b'mod pjuttost korrett - hawnhekk hija, iċ-ċavetta, tista 'timmontaha. Nipprova mmunta mill-Linux - jaħdem! X'jiġri jekk nippruvaw issa mill-Windows? Oh orrur - taħdem!
L-aħħar rake: xi ħaġa ma kinitx miktuba fil-kodiċi tas-server. Meta taqsam apparat, ma jaqrax in-numru ta 'deskritturi USB minnu. U meta twaħħal apparat minn Linux, dan il-qasam jimtela. Sfortunatament, jien familjari mal-iżvilupp tal-Linux fil-livell "make && make install". Għalhekk, il-problema ġiet solvuta bl-użu ta 'hack pjuttost maħmuġ - li żżid ma' /etc/rc.local
usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00
Parti finali
Wara xi prova, taħdem. Inkiseb dak mixtieq, issa ċ-ċavetta tista 'tiġi mmuntata fuq kwalunkwe PC (u mhux immuntata, ovvjament, ukoll), inkluż barra s-segment tax-xandir tan-netwerk. Jekk trid, tista 'tagħmel dan billi tuża script tal-qoxra tal-kmand. X'inhu sabiħ huwa li l-pjaċir huwa assolutament b'xejn.
Nittama li l-esperjenza tiegħi tgħin lill-hackers jduru r-rake li huwa stampat fuq forehead tiegħi. Grazzi tal-attenzjoni tiegħek!
Sors: www.habr.com