Evde IP üzerinden USB

Bazen USB üzerinden bağlanan bir cihazı dizüstü bilgisayarınızın yanındaki masanın üzerinde tutmanıza gerek kalmadan onunla çalışmak istersiniz. Cihazım 500 mW'lık lazere sahip Çinli bir gravür makinesidir ve bu, yakın temasta oldukça rahatsız edicidir. Lazer işlemi sırasında gözlere yönelik acil tehlikenin yanı sıra toksik yanma ürünleri de açığa çıkar, bu nedenle cihazın iyi havalandırılan bir alana yerleştirilmesi ve tercihen insanlardan izole edilmesi gerekir. Böyle bir cihazı nasıl kontrol edebilirsiniz? Eski D-Link DIR-320 A2 yönlendiriciye layık bir kullanım bulma umuduyla OpenWRT deposuna göz atarken bu sorunun cevabını yanlışlıkla buldum. Bağlanmak için daha önce Habré'de anlatılanı kullanmaya karar verdim. IP üzerinden USB tüneliancak kurulumla ilgili tüm talimatlar geçerliliğini yitirdi, bu yüzden kendiminkini yazıyorum.

OpenWRT tanıtım gerektirmeyen bir işletim sistemi olduğundan kurulumunu anlatmayacağım. Yönlendiricim için OpenWrt 19.07.3'ün en son kararlı sürümünü aldım ve modu seçerek ana Wi-Fi erişim noktasına istemci olarak bağladım. lanGüvenlik duvarına eziyet etmemek için.

Sunucu bölümü

Ona göre hareket ediyoruz resmi talimatlar. Ssh ile bağlandıktan sonra gerekli paketleri kurunuz.

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

Daha sonra, cihazımızı yönlendiricinin USB bağlantı noktasına bağlarız (benim durumumda cihazlar: bir USB hub'ı, yönlendiricinin dosya sisteminin takılı olduğu bir flash sürücü (dahili depolamada yer olmaması nedeniyle) ve doğrudan oymacı).

Bağlı cihazların bir listesini görüntülemeye çalışalım:

root@OpenWrt:~# usbip list -l

Boş.

Google'da arama yapınca suçlu bulundu, buranın bir kütüphane olduğu ortaya çıktı libudev-fbsd.
En son çalışan sürümü depodan elle çıkarıyoruz libudev_3.2-1 mimariniz için OpenWRT 17.01.7 sürümünden, benim durumumda libudev_3.2-1_mipsel_mips32.ipk. Wget/scp'yi kullanarak yönlendiricinin belleğine indirin ve yeniden yükleyin

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

Kontrol ediyoruz:

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 hub'ına bağlanan Çinli bir adam bir bsuid aldı 1-1.4. Hatırlamak.

Şimdi daemon'u başlatalım:

root@OpenWrt:~# usbipd -D

ve Çinlileri bindim

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

Her şeyin çalışıp çalışmadığını kontrol edelim:

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

Cihazı otomatik olarak daha fazla bağlamak için düzenleme yapalım /etc/rc.localönce ekleyerek çıkış 0 aşağıdaki:

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

İstemci tarafı

Openwrt.org'daki yukarıdaki talimatları kullanarak cihazı Windows 10'a bağlamayı deneyelim. Hemen şunu söyleyeceğim: fikir başarısızlığa mahkumdur. Öncelikle sadece Windows 7 x64 ele alınmıştır. İkinci olarak, sourceforge.net'te Dropbox'tan 2014 yılında yamalanmış bir sürücünün indirilmesini öneren bir konuya bir bağlantı veriliyor. Windows 10 altında çalıştırıp cihazımıza bağlanmaya çalıştığımızda aşağıdaki hatayı alıyoruz:

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

*** ERROR: cannot find device

Bunun nedeni, istemcinin 3.14 sürümünden daha eski bir çekirdek için oluşturulmuş bir sunucuyla çalışmamasıdır.
OpenWRT 19.07.3 için usbip sunucusu 4.14.180 çekirdeği üzerine kurulmuştur.

Araştırmama devam ederken, bir Windows istemcisinin güncel gelişimiyle karşılaştım. github. Tamam, Windows 10 x64 desteği belirtildi, ancak istemci yalnızca bir test istemcisi olduğundan bir takım sınırlamalar var.

Bu nedenle, önce sertifikayı ve iki kez yüklemeyi istiyorlar. Tamam, bunu Güvenilir Kök Sertifika Yetkilisi ve Güvenilir Yayımcılar'a koyalım.

Daha sonra işletim sistemini test moduna almanız gerekir. Bu bir ekip tarafından yapılır

bcdedit.exe /set TESTSIGNING ON

İlk seferde başaramadım, yoluma çıktım önyükleme güvenli. Devre dışı bırakmak için UEFI'yi yeniden başlatmanız ve güvenli önyüklemeyi devre dışı bırakacak şekilde ayarlamanız gerekir. Bazı dizüstü bilgisayar modellerinde yönetici parolasının ayarlanması gerekebilir.

Bundan sonra Windows'a önyükleme yapın ve yapın bcdedit.exe /set TEST İMZALAMA AÇIK
Vinda her şeyin yolunda olduğunu söylüyor. Tekrar yeniden başlatıyoruz ve sağ alt köşede Test Modu, sürüm ve işletim sistemi yapı numarası kelimelerini görüyoruz.

Bütün bu manipülasyonlar ne için? İmzasız bir sürücüyü yüklemek için USB/IP VHCI. Bunun için usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat dosyalarını indirip yönetici haklarıyla çalıştırarak yapmanız önerilir.

usbip.exe install

veya ikinci yöntem, Eski Donanımın manuel olarak kurulmasıdır. İkinci seçeneği seçtim, imzasız bir sürücünün yüklenmesiyle ilgili bir uyarı aldım ve kabul ettim.

Daha sonra, şu komutu yürüterek uzak bir USB cihazına bağlanabildiğimizi kontrol ediyoruz:

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

cihazların bir listesini alıyoruz:

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)

bir hata için usbip: hata: usb kimlik veritabanı açılamadı Dikkat etmiyoruz, işi etkilemiyor.

Şimdi cihazı bağlarız:

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

İşte bu, Windows yeni bir cihaz algıladı, artık onunla sanki dizüstü bilgisayara fiziksel olarak bağlıymış gibi çalışabilirsiniz.

Çinli gravür makinesiyle biraz uğraşmak zorunda kaldım, çünkü CH341SER sürücüsünü gravür makinesiyle birlikte gelen yükleyici (evet, bir Arduino gravür cihazı) aracılığıyla yüklemeye çalıştığımda USB/IP VHCI, Windows'u BSOD'a düşürdü. Ancak CH341SER sürücüsünü yüklemek karşı cihazı usbip.exe aracılığıyla bağlamak sorunu çözdü.

Özetle: gravürcü mutfakta pencere açık ve kapı kapalıyken gürültü yapıyor ve sigara içiyor, yanma sürecini başka bir odadan kendi yazılımım aracılığıyla izliyorum, bu da herhangi bir sorun hissetmiyor.

Kullanılan kaynaklar:

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

Kaynak: habr.com

Yorum ekle