CP210xシリーズのCOM番号とUSBハブ上の差し込みポートを紐づける


はじめに

USBシリアル変換のICとしてすっかり定着したCP210xシリーズですが、Windowsで使う時にUSBハブ上の物理的な位置とCOM番号の関係を知りたいことはないでしょうか。

方法は簡単なのですがweb上であまり情報を見ないのでここにまとめてみました。

COM番号とシリアル番号の関係

CP210x自体に固有のシリアル番号が書き込まれている場合はそれを利用しますが書き込まれていない場合Windowsが勝手に仮のシリアル番号を割り振りますのでそれを使います。

PowerShellにて次のコマンドを実行してください。太字部分は、CP210xのベンダーIDとプロダクトIDを示しています。

Get-CimInstance Win32_PnPEntity | Where-Object{$_-like”VID_10C4&PID_EA60“} | Select-Object Caption,DeviceID

実行結果は次のようになり、COM番号とシリアル番号との関係がわかります。

Silicon Labs CP210x USB to UART Bridge (COM4) USB\VID_10C4&PID_EA60\7A5DAA776F1FEE11A7CA8157024206E6

この場合Windowsが勝手に割り振った
7A5DAA776F1FEE11A7CA8157024206E6
というシリアル番号がCOM4と紐づいていることがわかりました。

シリアル番号とUSBハブ上でのポート番号の関係

次のコマンドを実行してください。

reg query “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_10C4&PID_EA60\7A5DAA776F1FEE11A7CA8157024206E6” /v “LocationInformation”

結果は次のようになります。

LocationInformation REG_SZ Port_#0003.Hub_#0002

これでこのシリアル番号の個体は末端のハブ上でポート3に繋がってることがわかりました。

以上の操作で必要な紐づけは把握することができました。

COM番号が増えていく現象について

デバイスに固有のシリアル番号が書き込まれている場合にはこの現象は起きないのですが、多くの場合デフォルトの0001になっています。同一のシリアル番号を持つ別の個体が接続された時、Windowsが新しく仮のシリアル番号をレジストリ上に持つので、その時にCOM番号が増える現象が起こります。

シリアル番号を変更する方法

Silicon Labsのサイトからツールをダウンロードし、Serialという項目を書き換えると変更が可能です。個体ごとに固有のSerialを割り付ければ、COMの無限増殖は防げます。

Silicon Labsのサイトにて、見つけにくいので
AN721: CP210x/CP211x Device Customization Guide
を検索してください。

応用

たとえばCP210xを使った複数の機器を使用するとき、機器ごとにハブのどの位置に差し込むかを決めておくことで各COM番号を知ることができます。シリアル番号を割り当てておけば、さらに応用が広がります。

まとめ

本稿で紹介した方法はニッチですが一部に需要があるのではないでしょうか。たとえば検査治具を作る場合などにその一助となれば幸いです。

Back To Top
© Cerevo Inc.