USB melalui IP di rumah

Kadangkala anda ingin bekerja dengan peranti yang disambungkan melalui USB tanpa menyimpannya di atas meja di sebelah komputer riba anda. Peranti saya ialah pengukir Cina dengan laser 500 mW, yang agak tidak menyenangkan apabila bersentuhan rapat. Sebagai tambahan kepada bahaya serta-merta kepada mata, produk pembakaran toksik dilepaskan semasa operasi laser, jadi peranti itu harus diletakkan di kawasan pengudaraan yang baik, dan sebaik-baiknya diasingkan daripada orang. Bagaimanakah anda boleh mengawal peranti sedemikian? Saya secara tidak sengaja menemui jawapan kepada soalan ini semasa menyemak imbas repositori OpenWRT dengan harapan untuk mencari penggunaan yang sesuai untuk penghala D-Link DIR-320 A2 yang lama. Untuk menyambung, saya memutuskan untuk menggunakan yang diterangkan pada HabrΓ© sebelum ini. USB melalui terowong IP, bagaimanapun, semua arahan untuk memasangnya telah kehilangan kaitannya, jadi saya menulis sendiri.

OpenWRT ialah sistem pengendalian yang tidak memerlukan pengenalan, jadi saya tidak akan menerangkan pemasangannya. Untuk penghala saya, saya mengambil keluaran stabil terkini OpenWrt 19.07.3, dan menyambungkannya ke pusat akses Wi-Fi utama sebagai pelanggan, memilih mod lan, supaya tidak menyeksa tembok api.

Bahagian pelayan

Kami bertindak mengikut arahan rasmi. Selepas menyambung melalui ssh, pasang pakej yang diperlukan.

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

Seterusnya, kami menyambungkan peranti kami ke port USB penghala (dalam kes saya, peranti: hab USB, pemacu denyar di mana sistem fail penghala dipasang (kerana kekurangan ruang pada storan dalaman), dan, secara langsung, pengukir).

Mari cuba paparkan senarai peranti yang disambungkan:

root@OpenWrt:~# usbip list -l

kosong.

Dengan googling pelakunya ditemui, ternyata ia adalah sebuah perpustakaan libudev-fbsd.
Kami mengeluarkan versi kerja terkini dari repositori dengan tangan libudev_3.2-1 daripada keluaran OpenWRT 17.01.7 untuk seni bina anda, dalam kes saya ia adalah libudev_3.2-1_mipsel_mips32.ipk. Menggunakan wget/scp, muat turun ke dalam memori penghala dan pasang semula

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

Kami menyemak:

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)

Seorang lelaki Cina yang disambungkan ke hab USB menerima bsuid 1-1.4. Ingat.

Sekarang mari kita mulakan daemon:

root@OpenWrt:~# usbipd -D

dan bindim orang Cina

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

Mari periksa sama ada semuanya berfungsi:

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

Untuk mengikat peranti secara automatik, mari edit /etc/rc.localdengan menambah sebelum jalan keluar 0 yang berikut:

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

Pihak pelanggan

Mari cuba sambungkan peranti ke Windows 10 menggunakan arahan di atas daripada openwrt.org. Saya akan katakan dengan segera: idea itu ditakdirkan untuk gagal. Pertama, hanya Windows 7 x64 dipertimbangkan. Kedua, pautan diberikan kepada benang di sourceforge.net, yang mencadangkan muat turun pemacu yang ditambal pada 2014 daripada Dropbox. Apabila kami cuba menjalankannya di bawah Windows 10 dan menyambung ke peranti kami, kami mendapat ralat berikut:

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

*** ERROR: cannot find device

Ini disebabkan oleh fakta bahawa klien tidak berfungsi dengan pelayan yang dibina untuk kernel yang lebih lama daripada versi 3.14.
Pelayan usbip untuk OpenWRT 19.07.3 dibina pada kernel 4.14.180.

Meneruskan carian saya, saya menemui perkembangan semasa klien Windows untuk github. Ok, sokongan untuk Windows 10 x64 dinyatakan, tetapi klien hanyalah klien ujian, jadi terdapat beberapa batasan.

Jadi, pertama mereka meminta untuk memasang sijil, dan dua kali. Ok, mari letakkannya dalam Pihak Berkuasa Pensijilan Akar Dipercayai dan Penerbit Dipercayai.

Seterusnya, anda perlu meletakkan sistem pengendalian ke dalam mod ujian. Ini dilakukan oleh satu pasukan

bcdedit.exe /set TESTSIGNING ON

Saya tidak berjaya pada kali pertama, saya menghalang but selamat. Untuk melumpuhkannya, anda perlu but semula ke UEFI dan tetapkan but selamat untuk dilumpuhkan. Sesetengah model komputer riba mungkin memerlukan penetapan kata laluan penyelia.

Selepas itu, boot ke Windows dan lakukan bcdedit.exe /set UJIAN HIDUPKAN
Vinda berkata semuanya ok. Kami but semula, dan kami melihat di sudut kanan bawah perkataan Mod Ujian, versi dan nombor binaan OS.

Untuk apa semua manipulasi ini? Untuk memasang pemacu yang tidak ditandatangani USB/IP VHCI. Adalah dicadangkan untuk melakukan ini dengan memuat turun fail usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat dan berjalan dengan hak pentadbir

usbip.exe install

atau kaedah kedua, memasang Perkakasan Legacy secara manual. Saya memilih pilihan kedua, menerima amaran tentang memasang pemandu yang tidak ditandatangani dan bersetuju dengannya.

Seterusnya, kami menyemak sama ada kami mempunyai keupayaan untuk menyambung ke peranti USB jauh dengan menjalankan arahan:

usbip.exe list -r <ip вашСго Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π°>

kami mendapat senarai peranti:

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)

untuk kesilapan usbip: ralat: gagal membuka pangkalan data id usb Kami tidak memberi perhatian, ia tidak menjejaskan kerja.

Sekarang kami mengikat peranti:

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

Itu sahaja, Windows telah mengesan peranti baharu, kini anda boleh bekerja dengannya seolah-olah ia disambungkan secara fizikal ke komputer riba.

Saya terpaksa menderita sedikit dengan pengukir Cina, kerana apabila saya cuba memasang pemacu CH341SER melalui pemasang yang disertakan dengan pengukir (ya, pengukir Arduino), USB/IP VHCI menjatuhkan Windows ke BSOD. Walau bagaimanapun, memasang pemacu CH341SER kepada menyambungkan peranti melalui usbip.exe menyelesaikan masalah.

Intinya: pengukir membuat bising dan merokok di dapur dengan tingkap terbuka dan pintu tertutup, saya menonton proses pembakaran dari bilik lain melalui perisian saya sendiri, yang tidak merasakan tangkapan.

Sumber terpakai:

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

Sumber: www.habr.com

Tambah komen