在Windows上,libusb看不到某些端口。
On Windows, libusb can't see some ports
我们在c++代码中使用libusb v1.0.9.0(带有Java前端)。我们在多个版本的Windows和多台机器上针对不同的usb 2.0/3.0控制器进行了测试,发现了几个非常严重的问题。
在Windows 7上,它看不到"英特尔USB 3.0可扩展主机控制器"平台上的任何端口。
在Windows Server 2008上,它无法看到USB 2.0和3.0控制器上的某些端口。2.0集线器上的一些端口可以工作,3.0集线器上的一些端口可以工作,但其他端口对同一设备,对任何设备都是不可见的。
第一个可能只是一个特定的控制器特性,很快就会被支持,但第二个确实让我们担心。这种行为常见吗?我们如何解决这个问题?
我们使用libusb_get_device_list()
或libusb_open_device_with_vid_pid()
我在某些USB 3.0端口方面也遇到了一些麻烦,尽管它可能与您的情况略有不同。所以我不太确定我是否能帮到你,我相信这更像是一个硬件问题。但请记住以下事实:
USB 3.0硬件还没有很好地建立(仍在开发中)-随着时间的推移,一些端口正在失去它们的功能,特别是这些相当便宜的(带有英特尔芯片组的主板内置端口)。因为USB 3.0提供的电流和数据速率远高于USB 2.0,所以这些由廉价电线制成的端口容易断裂并不是奇迹。
即使使用不同的电缆也会产生差异,更不用说集线器了-它们似乎仍然是原型,至少我使用的那些。
请定期查找xHCI的最新驱动程序。
最后,但并非最不重要的是,改变发送到xHCI的数据包的大小。实际上,首选的大小是64kb,因此将数据分割成这样大小的块。这与由大数据包引起的中断问题有关。对于一些xhci来说,这已经是放弃的理由了(特别是如果你在usb2.0下运行!)。
总而言之,不同xhci(瑞萨,英特尔,…)的行为差异很大。最恼人的是原因根本不明显。
最后一个建议:试试USBlyzer之类的工具。最后一个选择是类似旅行者M3i(协议分析器)的东西,如果你愿意花大约3万美元的话。
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 看不到文件'SDL2.lib'
- WSL 看不到环境变量
- 为什么我的 FreeRTOS 任务看不到类成员?
- Google Colab 看不到 .so 文件
- 派生类看不到基类成员
- 为什么我看不到字符串?
- CMake 看不到SDL2_PATH环境变量 (Windows)
- OpenMP 任务看不到共享变量的更改
- handleMessage看不到我的类和函数
- 为什么 connect() 函数看不到插槽?
- 模板类看不到继承的模板成员
- 为什么即使链接器找到目标文件,我的程序也看不到函数定义?
- 将 somedialog.h 包含在项目的其他部分中会使编译器看不到 ui_somedialog.h
- 找不到 windows.winmd – 如果指定了路径,错误会乘以
- SFML - 代码::块看不到 sfml 图形(等)文件
- CMake 看不到源文件,找不到 #includes
- ifstream在OSX上看不到新内容
- 在Windows上,libusb看不到某些端口。
- Windows上的c++ Qt 5.0.2 QFileSystemWatcher看不到目录更改