2013-06-04 22 views
3

我們在C++代碼中(使用Java前端)使用libusb v1.0.9.0。我們正在多個版本的Windows和多臺機器上測試它,以獲得各種USB控制器,我們發現了一些非常糟糕的問題。在Windows上,libusb無法看到一些端口

在Windows   7上,它看不到「Intel USB 3.0 Extensible Host Controller」平臺上的任何端口。

在Windows Server 2008上,它無法看到USB 2.0和3.0控制器上的某些端口。 2.0集線器上的某些端口可以工作,3.0集線器上的某些端口可以工作,但其他端口對同一設備和任何設備都是不可見的。

第一個可能只是一個特定的控制器特性,很快就會得到支持,但第二個特別令我們擔憂。這種行爲是否共同?我們如何解決它?

我們使用libusb_get_device_list()libusb_open_device_with_vid_pid()

+0

更正:這是主流的libusb v1.0.9.0。 (不是libusbx。有人在項目中輸入了錯誤的格式字符串。) –

回答

1

我在某些USB 3.0端口上也遇到了一些麻煩,儘管它可能與您的情況有所不同。所以我不太確定我能否幫助你,我相信它更多與硬件問題有關。但請記住以下事實:

USB 3.0硬件尚未建立(仍在開發中) - 有些端口在這段時間內失去功能,尤其是那些相當便宜的端口(主板上的內置端口帶有英特爾芯片組)。由於目前通過USB 3.0提供的電流和數據速率遠遠高於USB 2.0,因此這些由廉價線路斷開的端口很容易就不是奇蹟。

即使使用不同的電纜也會產生差異,而不是談論集線器 - 它們似乎仍然是原型,至少是我用過的。

請定期查找您的xHCI的最新驅動程序。內部經常會修復一些令人討厭的錯誤。

最後但並非最不重要的,會改變發送到您的xHCI的數據包大小。實際上,首選大小爲64   KB,因此將您的數據拆分爲此大小的塊。這與大數據包引起的中斷問題有關。對於某些xHCIs來說,這已經是投降的理由(特別是如果你在USB 2.0下運行!)。

總而言之,不同xHCIs(Renesas,Intel,..)的行爲差異很大。這主要是令人討厭的,因爲原因並不明顯。

最後一條建議:嘗試類似USBlyzer的工具。最後一個選項是Voyager M3i(協議分析器),如果你願意花費大約30,000美元左右。

相關問題