2013-06-04 5 views
3

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

КОРРЕКЦИЯ: Это mainstream libusb v1.0.9.0. (Не libusbx. Кто-то ввел в проект ошибочную строку формата.) –

ответ

1

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

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

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

Продолжайте регулярно просматривать последние версии драйверов вашего xHCI. Внутри исправляются ошибки.

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

В целом, поведение разных xHCI (Renesas, Intel, ..) различается довольно много. Это в основном раздражает, потому что причина совершенно не очевидна.

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

 Смежные вопросы

  • Нет связанных вопросов^_^