Замените определенный драйвер устройства FTDI на zadig (оставив подобные устройства нетронутыми)
Я нашел связанные вопросы по этой теме, но не ответил на этот конкретный вопрос (по крайней мере, ни один из них не является решением).
Я использую два вида USB/ последовательных адаптеров на одном компьютере (Windows 8 / Windows 10). Один из адаптеров имеет FT245R внутри, другой - FT232R (я вижу это, читая информацию об устройстве с помощью инструмента FT_Prog из FTDI).
Я хочу использовать один из адаптеров со "стандартным" драйвером FTDI VCP и второй адаптер через libusk и python (libftdi).
Поэтому я сначала установил драйверы последовательного порта FTDI, затем отключил одно устройство и использовал инструмент ZADIG, чтобы изменить драйвер оставшегося адаптера на libuskK.
Проблема в том, что, когда я заглядываю в диспетчер устройств и снова подключаю второе устройство, второе устройство (для которого я НЕ менял драйвер) отображается как устройство libusbk.
Я подозреваю, что это связано с тем, что оба упомянутых чипа FTDI используют один и тот же PID 0x6001 (кстати: PID - единственное свойство, для которого выбран драйвер для данного устройства?)
Что является чистым решением проблемы (без изменения вручную PID одного из адаптеров)?
2 ответа
является PID единственным свойством, на котором драйвер выбран для данного устройства
Windows использует пару VID:PID, чтобы определить, какой драйвер следует использовать. inf
файлы.
Когда вы хотели другой драйвер для устройства, вы должны изменить PID.
Zadig допускает обходной путь (своего рода): вручную установите драйвер фильтра libusb_win32. Это позволяет переключаться между libusbK и нормальной работой COM-порта без переустановки драйвера, но влияет на все другие устройства с той же парой VID:PID.
В зависимости от вашего варианта использования может быть решение без необходимости установки разных драйверов. Вы упомянули, что вы используете libftdi для python. Я просто делаю предположение, что вы хотите использовать некоторые функциональные возможности MPSSE. В этом случае альтернативой может быть использование собственных библиотек MPSSE, предоставляемых FTDI через модуль Python ctypes. Я в конечном итоге с этим решением, так как замена драйвера была неоптимальным вариантом для меня. Есть несколько источников, показывающих использование ctypes для использования собственных DLLS, включая некоторые примеры для MPSSE-SPI и MPSSE-I2C (например, поиск "mpsse I2C ctypes python").