繁体   English   中英

Windows 和 Linux 上的 USB 设备/PyUSB 表现不同

[英]USB Device/PyUSB on Windows and LInux behaving differently

我有一个带 USB 接口的设备,我可以连接到我的 Ubuntu 18.04 机器和我的 Windows 10 机器。 在 Windows 10 上,我必须安装 CP210x 驱动程序并手动将其附加到设备(否则 Windows 会尝试查找设备制造商的驱动程序 - 它是 CP210x 串行芯片),并在 Linux 中将 vendorID 和 productID 写入 cp210x 驱动程序以允许它连接到 ttyUSB0。 这工作正常。

Windows 驱动程序来自 SiliconLabs——设备中 UART-USB 芯片的制造商。

所以在 Windows 上它连接到 COM5,Linux 连接到 ttyUSB0(Ubuntu、Raspbian)

使用 Wireshark 我可以在两个操作系统上成功监听 USB 总线。

USB 设备通过 USB 总线定期发送数据,在Windows 上使用 Wireshark 我可以将这种通信视为“URB_INTERRUPT in”消息,最后几个字节实际上包含我需要的数据。

在 Linux 上,设备似乎已连接,但这次使用 Wireshark 我只能看到 URB_BULK 数据包。 使用 pyusb 检查端点我发现没有 URB_Interrupt 端点只有 URB_Bulk。

在 Linux 上使用 pyusb 库似乎唯一可用的端点是 URB_BULK。

问题主要是我如何告诉 Linux 让设备通过中断传输机制发送,就像 Windows 似乎做的那样。 我在 pyusb 的 set_configuration 中没有看到执行此操作的方法(因为没有出现中断传输端点)并且在制造商的规范中没有找到任何内容。

如果做不到这一点,当然,我可以在 Windows 上窥探配置消息,但是这里一定有我遗漏的东西吗?

不管这一点,最后的答案很简单:Windows 正在将总线上的设备地址重新分配给不同的设备。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM