В Windows libusb не видит некоторые порты

Мы используем libusb v1.0.9.0 в коде C ++ (с внешним интерфейсом Java). Мы тестируем его на нескольких версиях Windows и на нескольких компьютерах для различных контроллеров USB 2.0 / 3.0, и мы обнаружили пару очень серьезных проблем.

В 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(),

3

Решение

У меня были некоторые проблемы с некоторыми портами USB 3.0, хотя, возможно, это немного отличалось от вашей ситуации. Так что я не совсем уверен, смогу ли я вам чем-то помочь, я считаю, что это больше связано с аппаратной проблемой. Но имейте в виду следующие факты:

Аппаратное обеспечение USB 3.0 еще не очень хорошо развито (все еще находится в стадии разработки) — некоторые порты со временем теряют свою функциональность, особенно эти довольно дешевые (встроенные порты на материнских платах с чипсетом Intel). Поскольку ток подается через USB 3.0, а скорость передачи данных намного выше, чем через USB 2.0, не удивительно, что эти порты, сделанные из дешевых проводов, легко обрываются.

Даже использование другого кабеля имеет значение, не говоря уже о концентраторах — они, похоже, все еще являются прототипами, по крайней мере, теми, которые я использовал.

Регулярно ищите последние версии драйверов вашего xHCI. Внутри часто фиксируются неприятные ошибки.

И последнее, но не менее важное: изменяйте размер пакетов, отправляемых на ваш xHCI. На самом деле, предпочтительный размер составляет 64 КБ, поэтому разделите ваши данные на блоки такого размера. Это связано с проблемой прерываний, вызванных огромными пакетами. Для некоторых xHCI это уже повод сдаться (особенно если вы работаете под USB 2.0!).

В общем, поведение разных xHCIs (Renesas, Интел ..) отличается довольно сильно. Это главным образом раздражает, потому что причина не очевидна вообще.

Последнее предложение: попробуйте такие инструменты, как USBlyzer. Последний вариант будет что-то вроде Voyager M3i (анализатор протокола), если вы готовы потратить около 30 000 долларов США или около того ..

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]