web-dev-qa-db-ja.com

特定のFTDIデバイスドライバーをzadigに置き換えます(同様のデバイスはそのままにします)

このトピックに関連する質問を見つけましたが、この特定の質問に対する回答は見つかりませんでした(少なくとも解決策はありません)。

同じPC(Windows 8/Windows 10)で2種類のUSB /シリアルアダプターを使用しています。アダプターの1つにはFT245Rが内蔵されており、もう1つにはFT232Rが搭載されています(FTDIのFT_Progツールでデバイス情報を読み取るとわかります)。

私がやりたいのは、「標準」のFTDI VCPドライバーを備えたアダプターの1つと、libuskおよびpython(libftdi)を介した2番目のアダプター)を使用することです。

そのため、最初にFTDIシリアルドライバーをインストールし、次に1つのデバイスを取り外し、ZADIGツールを使用して残りのアダプターのドライバーをlibuskKに変更しました。

問題は、デバイスマネージャーを調べて、2番目のデバイスを再度接続すると、2番目のデバイス(ドライバーを変更しなかったもの)もlibusbkデバイスとして表示されることです。

これは、前述の両方のFTDIチップが同じPID 0x6001を使用しているためだと思います(ところで、PIDは、特定のデバイスに対してドライバーが選択される唯一のプロパティですか?)

(いずれかのアダプターのPIDを手動で変更せずに)問題のクリーンな解決策は何ですか?

2
Junius

特定のデバイスに対してドライバーが選択される唯一のプロパティはPIDです。

Windowsは、VID:PIDペアを使用して、使用するドライバーを検出します。これらは、これらのinfファイルで参照されます。

デバイスに別のドライバーが必要な場合は、PIDを変更する必要があります。

Zadigでは、回避策(一種)が可能です。libusb_win32フィルタードライバーを手動でインストールします。これにより、ドライバーを再インストールせずにlibusbKと通常のCOMポート操作を切り替えることができますが、同じVID:PIDペアを持つ他のすべてのデバイスに影響します。

1
Turbo J

ユースケースによっては、別のドライバーをインストールする必要のない解決策がある場合があります。 Pythonにlibftdiを使用するとおっしゃいました。私はあなたがいくつかのMPSSE機能を使いたいと思っていると仮定しています。この場合、FTDIがctypes pythonモジュールを介して提供するネイティブMPSSEdllを使用することもできます。ドライバーの交換は私にとって最適ではなかったため、このソリューションになります。いくつかあります。 MPSSE-SPIおよびMPSSE-I2Cのいくつかの例を含むネイティブDLLを使用するためのctypesの使用法を示すソース(例:「mpsseI2C ctypespython」の検索)。

0
Christian B.