USB qua IP tại nhà

Đôi khi bạn muốn làm việc với một thiết bị được kết nối qua USB mà không cần đặt nó trên bàn cạnh máy tính xách tay của mình. Máy của tôi là máy khắc Trung Quốc có tia laser 500 mW, khá khó chịu khi tiếp xúc gần. Ngoài mối nguy hiểm trước mắt đối với mắt, các sản phẩm đốt độc hại sẽ được giải phóng trong quá trình hoạt động của tia laser, vì vậy thiết bị phải được đặt ở khu vực thông thoáng và tốt nhất là cách ly với mọi người. Làm thế nào bạn có thể điều khiển một thiết bị như vậy? Tôi vô tình tìm thấy câu trả lời cho câu hỏi này khi duyệt kho OpenWRT với hy vọng tìm được cách sử dụng xứng đáng cho bộ định tuyến D-Link DIR-320 A2 cũ. Để kết nối, tôi quyết định sử dụng cái được mô tả trên Habré trước đó. Đường hầm USB qua IP, tuy nhiên, tất cả các hướng dẫn cài đặt nó đã không còn phù hợp nữa, vì vậy tôi đang viết hướng dẫn của riêng mình.

OpenWRT là một hệ điều hành không cần giới thiệu nên tôi sẽ không mô tả cách cài đặt nó. Đối với bộ định tuyến của mình, tôi đã sử dụng bản phát hành ổn định mới nhất của OpenWrt 19.07.3 và kết nối nó với điểm truy cập Wi-Fi chính với tư cách là máy khách, chọn chế độ lan, để không làm khổ tường lửa.

Phần máy chủ

Chúng tôi hành động theo hướng dẫn chính thức. Sau khi kết nối qua ssh, hãy cài đặt các gói cần thiết.

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

Tiếp theo, chúng tôi kết nối thiết bị của mình với cổng USB của bộ định tuyến (trong trường hợp của tôi là các thiết bị: bộ chia USB, ổ đĩa flash nơi gắn hệ thống tệp của bộ định tuyến (do thiếu dung lượng trên bộ nhớ trong) và trực tiếp là thợ khắc).

Hãy thử hiển thị danh sách các thiết bị được kết nối:

root@OpenWrt:~# usbip list -l

Trống rỗng.

Bằng cách tìm kiếm trên Google, người ta đã tìm ra thủ phạm, hóa ra đó là một thư viện libudev-fbsd.
Chúng tôi lấy phiên bản làm việc mới nhất từ ​​kho lưu trữ bằng tay libudev_3.2-1 từ bản phát hành OpenWRT 17.01.7 cho kiến ​​trúc của bạn, trong trường hợp của tôi đó là libudev_3.2-1_mipsel_mips32.ipk. Sử dụng wget/scp, tải nó vào bộ nhớ của bộ định tuyến và cài đặt lại

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

Chúng tôi kiểm tra:

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)

Một người đàn ông Trung Quốc kết nối với hub USB đã nhận được bsuid 1-1.4. Nhớ.

Bây giờ hãy bắt đầu daemon:

root@OpenWrt:~# usbipd -D

và ràng buộc người Trung Quốc

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

Hãy kiểm tra xem mọi thứ có hoạt động không:

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

Để tự động liên kết thiết bị hơn nữa, hãy chỉnh sửa /etc/rc.localbằng cách thêm vào trước thoát 0 như sau

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

Phía khách hàng

Hãy thử kết nối thiết bị với Windows 10 bằng hướng dẫn trên từ openwrt.org. Tôi sẽ nói ngay: ý tưởng này chắc chắn sẽ thất bại. Thứ nhất, chỉ Windows 7 x64 được xem xét. Thứ hai, một liên kết được cung cấp cho một chủ đề trên sourceforge.net, gợi ý tải xuống trình điều khiển được vá vào năm 2014 từ Dropbox. Khi chúng tôi cố gắng chạy nó trong Windows 10 và kết nối với thiết bị của mình, chúng tôi gặp phải lỗi sau:

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

*** ERROR: cannot find device

Điều này là do máy khách không hoạt động với máy chủ được xây dựng cho kernel cũ hơn phiên bản 3.14.
Máy chủ usbip cho OpenWRT 19.07.3 được xây dựng trên kernel 4.14.180.

Tiếp tục tìm kiếm, tôi phát hiện ra sự phát triển hiện tại của một ứng dụng khách Windows dành cho github. Được rồi, hỗ trợ dành cho Windows 10 x64 đã được nêu nhưng ứng dụng khách này chỉ là ứng dụng khách thử nghiệm nên có một số hạn chế.

Vì vậy, đầu tiên họ yêu cầu cài đặt chứng chỉ và hai lần. Ok, hãy đặt nó vào Cơ quan chứng nhận gốc đáng tin cậy và Nhà xuất bản đáng tin cậy.

Tiếp theo, bạn cần đưa hệ điều hành vào chế độ thử nghiệm. Việc này được thực hiện bởi một đội

bcdedit.exe /set TESTSIGNING ON

Tôi đã không thành công ngay lần đầu tiên, tôi đã cản đường khởi động an toàn. Để tắt nó, bạn cần khởi động lại vào UEFI và đặt chế độ khởi động an toàn thành tắt. Một số mẫu máy tính xách tay có thể yêu cầu đặt mật khẩu người giám sát.

Sau đó, khởi động vào Windows và làm bcdedit.exe /set ĐĂNG KÝ KIỂM TRA
Vinda nói mọi thứ đều ổn. Chúng tôi khởi động lại và thấy ở góc dưới bên phải có dòng chữ Chế độ kiểm tra, phiên bản và số bản dựng hệ điều hành.

Tất cả những thao tác này để làm gì? Để cài đặt trình điều khiển chưa được ký USB/IP VHCI. Bạn nên thực hiện việc này bằng cách tải xuống các tệp usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat và chạy với quyền quản trị viên

usbip.exe install

hoặc phương pháp thứ hai, cài đặt Phần cứng kế thừa theo cách thủ công. Tôi chọn phương án thứ hai, nhận được cảnh báo về việc cài đặt trình điều khiển không có chữ ký và đồng ý với nó.

Tiếp theo, chúng tôi kiểm tra xem chúng tôi có khả năng kết nối với thiết bị USB từ xa hay không bằng cách chạy lệnh:

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

chúng tôi nhận được một danh sách các thiết bị:

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)

vì một sai lầm usbip: lỗi: không mở được cơ sở dữ liệu id usb Chúng tôi không chú ý, nó không ảnh hưởng đến công việc.

Bây giờ chúng tôi liên kết thiết bị:

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

Thế là xong, Windows đã phát hiện một thiết bị mới, bây giờ bạn có thể làm việc với nó như thể nó được kết nối vật lý với máy tính xách tay.

Tôi đã phải chịu đựng một chút với máy khắc Trung Quốc, vì khi tôi cố gắng cài đặt trình điều khiển CH341SER của nó thông qua trình cài đặt đi kèm với máy khắc (vâng, một máy khắc Arduino), USB/IP VHCI đã đưa Windows vào BSOD. Tuy nhiên, cài đặt trình điều khiển CH341SER để kết nối thiết bị qua usbip.exe đã giải quyết được vấn đề.

Điểm mấu chốt: máy khắc tạo ra tiếng ồn và hút thuốc trong bếp khi cửa sổ mở và cửa đóng, tôi theo dõi quá trình đốt cháy từ phòng khác thông qua phần mềm của riêng mình và không cảm nhận được gì.

Nguồn đã sử dụng:

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

Nguồn: www.habr.com

Thêm một lời nhận xét