Arduino nano互換機を認識させる方法

久しぶりにArduino nanoを繋げたら、FTDIのドライバーが純正品チップしか認識しなくなった問題のあおりを受けて、うちの1台も認識しなくなっていました。 やっぱ、これは互換チップだったのね。
で、再認識させるまでの道のりを、忘れないように記録しておきます。
そもそもの原因は、正規品のFT232Rチップの場合、PCから見えるUSBデバイスのベンダーIDとプロダクトIDが
VID=0403
PID=6001
となっているのが正解のようで、互換チップだと
VID=0403
PID=0000
に見えるため、ドライバーが探し当てられなくて認識できなく、COMポートに割り当てられないという現象らしいです。認識されないUSBデバイスのプロパティを開いて、「詳細」タブの「プロパティ」で「ハードウェアID」を選択すると、私のArduino nano互換機では以下の2行が出てきました。
USB\VID_0403&PID_0000&REV_0600
USB\VID_0403&PID_0000
なぜ2行なのかがよくわかりません。正規品は1行だけのようです。
で、ドライバが読み込まれてしまえば、問題ないわけで、そのためにドライバのINFファイルを改造して
VID=0403
PID=0000
の組み合わせでも読み込むようにしてしまえばいいわけで。この改造はINFファイルをテキストエディタで修正すればいいのですが、どういうふうに書き換えればいいかを探していたら、以下のフォーラムに改造されたドライバセットがありました。
http://www.arexx.com/forum/viewtopic.php?f=9&t=2579
この書き込みの中に
http://www.arexx.com/downloads/CDMv2.10.00__PID_FIX.zip

があるのでダウンロードして展開しておきます。
互換品のプロパティでドライバを削除し、もう一度、ダウンロードしたドライバを指定して読み込ませます。
すると、ドライバ署名がないだとか改造されている類のエラーがでてインストールに失敗します。
Windows 8から署名のほかにINFファイルの改造もチェックされるらしく、次はこれを切り抜けます。
方法はここに紹介されていますが、要するに、このドライ署名のチェックを一時的にOFFにする機能があるようで、「スタートアップ設定」で再起動すると、7番に無効にするオプションが出てくるので、これを選んで起動します。
起動したら互換品をUSBに挿して、先に展開しておいた改造ドライバを指定して読み込ませると、「ドライバーソフトウェアの発行元を検証できません」という画面が出るので、これを無視してインストールすると成功します。
USB Serial Convertor PID 0
という名前のデバイス名で認識されて、このままにしておいてもいいのですが、PID=0000をPID=6001にすれば正規品と同じになるので、FTDIChipのHPに公開されているUSBデバイスのEEPROMを書き換えるツールを使って正規品と同じVID,PIDにします。
http://www.ftdichip.com/Support/Utilities.htm
このページにあるFT_PROGというツールをダウンロードしてきて、互換品を接続したままスキャンすると、Product ID:0000のデバイスが見つかるので、それを6001に書き換えて「Program device」を実行すると書き込まれます。
この正規品と同じIDになったArduino nanoを差し込むと、改造したドライバではなく、正規品と同じドライバが読み込まれて、デバイス名はUSB Serial Portとして認識されます。
とまあ、こんな道のりなわけですが、互換品って面倒ですねぇ。安いArduinoに気をつけましょう。