家庭 USB over IP

有时您希望使用通过 USB 连接的设备,而不将其放在笔记本电脑旁边的桌子上。 我的设备是一台中国雕刻机,配有 500 mW 激光,近距离接触时相当不愉快。 除了对眼睛造成直接危险外,激光操作期间还会释放有毒燃烧产物,因此设备应放置在通风良好的区域,并最好与人隔离。 如何控制这样的设备? 我在浏览 OpenWRT 存储库时意外找到了这个问题的答案,希望为旧的 D-Link DIR-320 A2 路由器找到一个有价值的用途。 为了进行连接,我决定使用哈布雷之前描述的那个。 USB over IP 隧道然而,所有安装说明都失去了相关性,所以我正在编写自己的说明。

OpenWRT是一个不需要介绍的操作系统,所以我不会描述它的安装。 对于我的路由器,我采用了 OpenWrt 19.07.3 的最新稳定版本,并将其作为客户端连接到主 Wi-Fi 接入点,选择模式 局域网,以免折磨防火墙。

服务器部分

我们按照 官方说明。 通过 ssh 连接后,安装必要的软件包。

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 集线器的中国人收到了 bsuid 1-1.4。 记住。

现在让我们启动守护进程:

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

客户端

让我们尝试使用 openwrt.org 中的上述说明将设备连接到 Windows 10。 我马上就说:这个想法注定会失败。 首先,仅考虑 Windows 7 x64。 其次,提供了一个链接到 sourceforge.net 上的一个线程,建议从 Dropbox 下载 2014 年修补的驱动程序。 当我们尝试在 Windows 10 下运行它并连接到我们的设备时,我们收到以下错误:

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

*** ERROR: cannot find device

这是因为客户端无法与为早于 3.14 版本的内核构建的服务器一起使用。
OpenWRT 19.07.3 的 usbip 服务器基于内核 4.14.180 构建。

继续我的搜索,我发现了 Windows 客户端的当前开发 github上。 好的,声明了对 Windows 10 x64 的支持,但客户端只是测试客户端,因此存在一些限制。

因此,他们首先要求安装证书,然后安装两次。 好吧,我们把它放在受信任的根证书颁发机构和受信任的发布者中。

接下来,您需要将操作系统置于测试模式。 这是由一个团队完成的

bcdedit.exe /set TESTSIGNING ON

我第一次没成功,我碍事了 安全启动。 要禁用它,您需要重新启动到 UEFI 并将安全启动设置为禁用。 某些笔记本电脑型号可能需要设置管理员密码。

之后,启动进入 Windows 并执行 bcdedit.exe / 设置 TESTSIGNING ON
维达说一切都好。 我们再次重新启动,我们会在右下角看到“测试模式”、“版本”和“操作系统版本号”等字样。

所有这些操纵是为了什么? 安装未签名的驱动程序 USB/IP VHCI。 建议通过下载文件 usbip.exe、usbip_vhci.sys、usbip_vhci.inf、usbip_vhci.cer、usbip_vhci.cat 并以管理员权限运行来执行此操作

usbip.exe install

或第二种方法,手动安装旧硬件。 我选择了第二个选项,收到有关安装未签名驱动程序的警告并同意它。

接下来,我们通过运行以下命令检查是否能够连接到远程 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 已检测到一个新设备,现在您可以使用它,就像它物理连接到笔记本电脑一样。

我在使用中国雕刻机时遇到了一些麻烦,因为当我尝试通过雕刻机(是的,一个 Arduino 雕刻机)附带的安装程序安装其 CH341SER 驱动程序时,USB/IP VHCI 使 Windows 陷入 BSOD。 但是,安装CH341SER驱动程序 通过 usbip.exe 连接设备解决了问题。

底线:雕刻师在厨房里开着窗户、关着门时发出噪音和烟雾,我通过我自己的软件从另一个房间观看燃烧过程,该软件没有感觉到卡住。

使用的来源:

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

来源: habr.com

添加评论