从Windows 10转发USB端口以进行远程工作

当一个人在沙坑中挖了多年并在那里储存食物时,如果需要沙坑,他必须经历深刻的道德满足。他会很高兴地说:“而我又说又il!”同样的情况也适用于那些在食品储藏室中存储食物的人,而今天每个人都是在商店中购买的。但是,有了我们的Redd远程工作中心,我就不会感到高兴。它设计用于和平时期的偏远地区。它早在来自中国的第一条新闻之前就被使用了。

很长一段时间我都没有写任何关于他的东西。其他项目分散了人们的注意力,而根据最新发表的文章的评级来衡量,人们的兴趣已经下降。准备一篇文章需要花费大量的精力,并且只有在足够多的读者需要的情况下才有意义。

但是由于现在每个人都垂涎三尺,因此渴望分享一件可以帮助某人的事情。这不是我们的开发,而是作为全硬件调试板进行远程工作的一部分,我进行了研究。现在,我将在此描述他们的结果。USB / IP项目是众所周知的。但是它早已被作者所限制。最新的驱动程序在WIN7下。今天,我将描述在何处下载WIN10选件,并展示如何测试它。此外,现代模拟产品的开发人员确保他们不仅制造Windows客户端,而且制造Windows服务器(尽管在这种模式下,我没有进行测试:该任务不需要这样做)。但是对于某人来说,这也可能有用。




介绍


首先,简短介绍一下USB / IP是什么。这是一组程序,可让您通过网络转发USB设备。设备本身已连接到服务器。客户端位于另一台计算机上。同时,客户端计算机上有一个完全不适合与网络一起使用的应用程序。它需要一个真正的USB设备。并且它接收到该设备已连接的信息。在该设备上安装了标准驱动程序。通常,客户端认为它可以与本地USB设备一起使用。

有人抛出安全密钥。我们检查了远程访问JTAG适配器的可能性。

USB / IP项目一直在积极发展,直到2013年。然后Windows分支停止了。通常,甚至会发布二进制签名司机。但是它在Windows 7下。Linux分支继续开发,并且该服务已内置在操作系统本身中。至少,它肯定是内置在Debian版本中的。而且,对于Linux,既有客户端又有服务器,而对于Windows,仅最初是客户端。Windows下的服务器未制作。在Habré上

一篇很好的文章,既可以用作使用此服务的参考,也可以用作有关使用它的提示。

Windows当前版本的选项


但是,无论Windows 7多么出色,它已经死了。作为全硬件工作的一部分,我们考虑了解决其中一个问题的各种选择,而我们只需要根据“合适-不合适”检查许多备选方案。花很多工时检查是不可能的。在Windows 10下更改驱动程序本身可能会拖累。因此,在网络上进行了搜索,从而使usbip-win赢得了该项目。在发现新版本时,新版本的日期为2020年2月23日,即该项目正在进行中。它可以在WIN7和WIN10下构建。另外,与原始项目不同,不仅可以构建Windows客户端,而且可以构建Windows服务器。

我检查了一下,该项目已完美组装和安装,因此他进行了进一步的工作。在自述文件中 对于那些不想自己构建的人,有指向现成的二进制代码的链接。

检查的可悲部分:服务器端


首先,我将告诉您验证是如何作为我们项目的一部分进行的。那里的结局不是很好。我们已经检查了在Redd组件情况下安装的ST-LINK适配器,因为我已经注意到该组件使用Debian程序集的Linux OS,并且该程序集包含内置的USB / IP服务。

根据文章,安装服务:

sudo apt-get update 
sudo apt-get upgrade 
sudo apt-get install usbip

本文的其余部分详细介绍了如何自动执行加载服务的过程。据我了解Linux,我已经写过很多遍了。不精通。我没有习惯以聪明的面孔引用别人的文本,对本质的理解很差。因此,我将再次回忆起一篇精彩的文章的链接,其中介绍了所有内容,并向我展示了自己在每个OS刚开始时所做的事情(幸运的是,只需要进行验证就可以了):

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo usbipd -D

上面咒语中前两个的目的对我来说是未知的,但是没有它们,就不会创建某些目录,没有这些目录,就不会导出USB端口。仅在重新启动系统之前创建目录。因此,您需要每次创建它们。第三行-一切都变得清晰起来,它启动了服务。

现在我们看一下设备的名称:

user@redd:~$ sudo usbip list -l
- busid 1-3 (046d:082d)
   Logitech, Inc. : HD Pro Webcam C920 (046d:082d)

 - busid 1-4 (1366:0101)
   SEGGER : J-Link PLUS (1366:0101)

 - busid 1-5.1 (067b:2303)
   Prolific Technology, Inc. : PL2303 Serial Port (067b:2303)

 - busid 1-5.4.1.1 (0483:5740)
   STMicroelectronics : STM32F407 (0483:5740)

 - busid 1-5.4.1.3 (0483:3748)
   STMicroelectronics : ST-LINK/V2 (0483:3748)
<...>

事实证明,我们需要一个等于1-5.4.1.3的设备和企业标识。

我们给出命令:

sudo usbip bind --busid=1-5.4.1.3

一切就绪,服务器已准备就绪。

检查的可悲部分:客户部分


我们在Windows上安装驱动程序(仅执行一次,然后将始终安装该驱动程序)。为此,代表管理员运行带有参数installusbip.exe文件usbip.exe install 现在,我们查看设备是否对我们可用:





usbip.exe list --remote=192.168.10.123

我们确保它在列表中。好吧,并连接它:

usbip.exe attach --remote=192.168.10.123 --busid=1-5.4.1.3

设备管理器中出现了一个新的USB设备,Keil对此非常满意

将一个小程序倒入闪存驱动器约一分钟。每行的尝试时间从5到20秒。这是无法接受的。在暂停期间,每秒大约50 kb的流量会双向传播。漫长而沉思。

老实说,时间的限制使我只能猜测为什么一切都那么糟糕。我怀疑网络中正在运行JTAG通信。而且他在两个方向上都以小包形式奔跑,因此出现了问题。因此,研究完成,结果是:“不适合该项目。”

有趣的部分:准备


即使在那时,我仍然想到,在我的眼角之外,我仍然看到在CMSIS DAP JTAG适配器中,USB用于发送的不是纯JTAG通信,而是命令。 JTAG流量本身已经在适配器内部形成。我很想检查一下,但我的手没伸开。大量传输到远程站点迫使它这样做(出现了问题)。什么是CMSIS DAP?这是ARM为Cortex-M控制器推荐的JTAG适配器。不同控制器的源代码发布在GitHub上,您可以基于其中的任何一个焊接适配器。我现在将提供指向适用于Blue Pill面包板的项目的克隆的链接:https : //github.com/x893/CMSIS-DAP,但是搜索引擎还可以显示官方的ARM帐户。

为了避免在服务器上花费一整台PC,为了进行验证,我制作了一种Yelloww复合物(完全由外壳的塑料颜色决定):



服务器角色由安装了Raspbian OS的Raspberry Pi扮演(这与Debian相同,这意味着有所需的服务器) )其中一个蓝色药片充当CMSIS DAP适配器,第二个充当调试设备。

我们以相同的方式设置和配置服务。除非此处允许导出的设备列表更为适中:

pi@raspberrypi:~ $ sudo usbip list -l
 - busid 1-1.1 (0424:ec00)
   Standard Microsystems Corp. : SMSC9512/9514 Fast Ethernet Adapter (0424:ec00)

 - busid 1-1.4 (c251:f001)
   Keil Software, Inc. : unknown product (c251:f001)

显然,这里我们导出和导入设备busid = 1-1.4。

在这里,特别是对于CMSIS DAP,我经常遇到一个小问题。在设备管理器中,我看到了这样的麻烦:



让我提醒您,该文章是根据“更好,但今天比理想,但是明天”原则编写的。远程工作问题现在正在出现。我希望在可预见的将来它们将不再重要。同时,它们是相关的-我展示了如何手动绕过此问题。首先,我关闭设备:



然后立即打开:



它开始正常工作。在Keil中,我们将调试器更改为CMSIS DAP:



这是:



在本地网络上工作时,一切都会顺利进行。但是很明显,没有人对本地网络感兴趣。我试图在家中转发设备端口,然后远程登录工作中的计算机并从那里路由“固件”。在我的家庭服务提供商处的连接非常非常慢,特别是-从我的外部。控制器的闪烁速度比直接连接到USB时慢三倍。跟踪...好吧,每行大约一秒钟,完全没有了。一般来说,可以忍受。有了好的供应商,我希望情况会更好。

结论


usbip-win项目是USB / IP项目的现代替代品。他生活和发展。同时,它不仅提供Windows的客户端功能,还提供服务器功能。与Linux版本的兼容性已保存。

远程USB设备的稳定性出乎意料的惊人。我确定会发生超时。也许它们会出现在某个地方,但是对于JTAG适配器,没有一个单一的故障。不幸的是,由于最终系统的速度较慢,因此并非所有USB设备都可以通过网络转发。但是,对于JTAG适配器,您可以考虑其他方法。特别是,CMSIS-DAP代替了ST-LINK。

可以从GitHub以源代码的形式下载这两个审阅的项目(usbip-win和CMSIS-DAP)。

如果这可以帮助某人组织对设备的远程访问,我将很高兴。使用Raspberry Pi将使您可以将设备放置在任意位置。

All Articles