首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模仿特定的USB设备

模仿特定的USB设备
EN

Stack Overflow用户
提问于 2018-03-13 10:01:41
回答 1查看 193关注 0票数 1

最近,我得到了一个锻炼设备,它有一个USB到PC接口,并记录在一个糟糕的Windows应用程序的锻炼。我的意图是读出USB并构建一个自定义应用程序来显示这些数据。

当连接到linux机器时,/dev/ttyUSB0中的设备寄存器可以用lsusbstty报告其他信息中的波德率。我用stty设置启动minicom,一旦启动,设备就会发送41个字节。

我假设这些字节表示对PC接口的通知。

我想做的是模仿锻炼设备,并将这41个字节发送到个人电脑界面,以查看PC端在启动时做了些什么。有没有一种方法来模仿这个设备,以便PC软件能够识别它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 15:10:21

如果设备是/dev/ttyUSB0,那么它很可能实现一个虚拟COM端口,这就是。

操作系统知道必须加载什么驱动程序/内核模块,因为当您在USB协议描述符中插入设备时(设备将其设备描述符发送到主机,据此主机加载驱动程序/内核模块),您可以在lsusb -v中看到此信息。具体而言,设备向主机发送以下描述符:设备描述符、配置描述符、接口描述符、端点描述符:http://www.beyondlogic.org/usbnutshell/usb1.shtml

为了模拟设备,您必须在MCU上使用精确的这些描述符以及标识符(供应商id )和PID (产品id )编写固件。

您接收到的41个字节在虚拟COM端口上流动,因此在RS-232协议中(您可以使用minicom接收它们),因此它们高于USB级别,但是它们是USB数据包中有效负载的一部分。如果在windows中的设备的windows中有一个专有驱动程序,那么这41个字节很可能寻址到驱动程序(这是您很可能没有的源代码.)。这是非常常见的,有具有RS-232接口的万用表,必须发送D = 44 (hex) = 01000100 (bin)才能接收任何data。

因此,您可以尝试使用RS-232嗅探器(即https://www.eltima.com/rs232-sniffer.html )直接嗅探虚拟COM端口( RS-232协议)。

或者,您可以尝试使用wireshark (或linux中的usbmon )嗅探底层USB流量,并从USB数据包中提取有效负载,以记录windows驱动程序与其他设备之间的通信。

https://ask.wireshark.org/question/36/how-to-capture-usb-packets-please/

https://www.youtube.com/watch?v=EfkC7kmIMt8 ( Wireshark中的USB )

https://www.kernel.org/doc/Documentation/usb/usbmon.txt

( https://www.kernel.org/doc/html/v4.13/driver-api/usb/URB.html )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49253222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档