บางครั้งคุณต้องการทำงานกับอุปกรณ์ที่เชื่อมต่อผ่าน USB โดยไม่ต้องวางอุปกรณ์ไว้บนโต๊ะข้างแล็ปท็อป อุปกรณ์ของฉันเป็นช่างแกะสลักชาวจีนที่มีเลเซอร์ 500 มิลลิวัตต์ ซึ่งค่อนข้างไม่เป็นที่พอใจเมื่อต้องสัมผัสใกล้ชิด นอกจากอันตรายที่เกิดขึ้นทันทีต่อดวงตาแล้ว ผลิตภัณฑ์จากการเผาไหม้ที่เป็นพิษจะถูกปล่อยออกมาในระหว่างการใช้เลเซอร์ ดังนั้น อุปกรณ์ควรอยู่ในบริเวณที่มีการระบายอากาศดี และควรแยกจากผู้คน คุณจะควบคุมอุปกรณ์ดังกล่าวได้อย่างไร? ฉันพบคำตอบสำหรับคำถามนี้โดยบังเอิญขณะเรียกดูที่เก็บ OpenWRT ด้วยความหวังว่าจะพบการใช้งานที่คุ้มค่าสำหรับเราเตอร์ D-Link DIR-320 A2 รุ่นเก่า เพื่อเชื่อมต่อ ฉันตัดสินใจใช้อันที่อธิบายไว้ในHabréก่อนหน้านี้ USB ผ่านอุโมงค์ IPอย่างไรก็ตาม คำแนะนำในการติดตั้งทั้งหมดสูญเสียความเกี่ยวข้อง ดังนั้นฉันจึงเขียนด้วยตัวเอง
OpenWRT เป็นระบบปฏิบัติการที่ไม่จำเป็นต้องมีการแนะนำ ดังนั้น ฉันจะไม่อธิบายการติดตั้ง สำหรับเราเตอร์ของฉัน ฉันใช้ OpenWrt 19.07.3 เวอร์ชันเสถียรล่าสุด และเชื่อมต่อกับจุดเข้าใช้งาน Wi-Fi หลักในฐานะไคลเอ็นต์ โดยเลือกโหมด แลนเพื่อไม่ให้ทรมานไฟร์วอลล์
ส่วนเซิร์ฟเวอร์
เราปฏิบัติตาม
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-client
ต่อไปเราเชื่อมต่ออุปกรณ์ของเราเข้ากับพอร์ต USB ของเราเตอร์ (ในกรณีของฉันคืออุปกรณ์: ฮับ USB, แฟลชไดรฟ์ที่ติดตั้งระบบไฟล์ของเราเตอร์ (เนื่องจากไม่มีพื้นที่ในที่จัดเก็บข้อมูลภายใน) และโดยตรง ช่างแกะสลัก)
ลองแสดงรายการอุปกรณ์ที่เชื่อมต่อ:
root@OpenWrt:~# usbip list -l
ว่างเปล่า.
เมื่อค้นกูเกิลแล้วพบว่าคนร้ายกลายเป็นห้องสมุด libudev-fbsd.
เราดึงเวอร์ชันการทำงานล่าสุดออกจากพื้นที่เก็บข้อมูลด้วยมือ libudev_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 ได้รับข้อความแจ้ง 1-1.4. จดจำ.
ตอนนี้เรามาเริ่ม daemon กันดีกว่า:
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 ซึ่งแนะนำให้ดาวน์โหลดไดรเวอร์ที่ได้รับแพตช์ในปี 2014 จาก Dropbox เมื่อเราพยายามเรียกใช้งานภายใต้ Windows 10 และเชื่อมต่อกับอุปกรณ์ของเรา เราได้รับข้อผิดพลาดต่อไปนี้:
c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip for windows ($Id$)
*** ERROR: cannot find device
นี่เป็นเพราะว่าไคลเอนต์ไม่ทำงานกับเซิร์ฟเวอร์ที่สร้างขึ้นสำหรับเคอร์เนลที่เก่ากว่าเวอร์ชัน 3.14
เซิร์ฟเวอร์ usbip สำหรับ OpenWRT 19.07.3 สร้างขึ้นบนเคอร์เนล 4.14.180
เมื่อค้นหาต่อไป ฉันพบการพัฒนาไคลเอ็นต์ Windows ในปัจจุบัน
ก่อนอื่นพวกเขาขอให้ติดตั้งใบรับรองและสองครั้ง ตกลง เราจะใส่ไว้ใน Trusted Root Certification Authority และผู้เผยแพร่ที่เชื่อถือได้
ถัดไปคุณต้องทำให้ระบบปฏิบัติการเข้าสู่โหมดทดสอบ นี้จะกระทำโดยทีมงาน
bcdedit.exe /set TESTSIGNING ON
ฉันไม่ประสบความสำเร็จในครั้งแรกฉันขวางทาง บูตที่ปลอดภัย. หากต้องการปิดใช้งาน คุณต้องรีบูตเข้าสู่ UEFI และตั้งค่าการบูตแบบปลอดภัยเป็นปิดใช้งาน แล็ปท็อปบางรุ่นอาจจำเป็นต้องตั้งรหัสผ่านของผู้ควบคุม
หลังจากนั้นให้บูตเข้าสู่ Windows แล้วทำ bcdedit.exe / ตั้งค่าการทดสอบการลงชื่อเข้าใช้
วินดาบอกว่าทุกอย่างโอเค เรารีบูตอีกครั้ง และเราจะเห็นคำว่า 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 ช่วยแก้ปัญหาได้
ประเด็นสำคัญ: ช่างแกะสลักส่งเสียงดังและสูบบุหรี่ในห้องครัวโดยที่เปิดหน้าต่างและประตูปิด ฉันดูกระบวนการเผาไหม้จากห้องอื่นผ่านซอฟต์แวร์ของตัวเอง ซึ่งไม่รู้สึกถึงสิ่งที่จับได้
แหล่งที่มาที่ใช้:
ที่มา: will.com