目的
I-O DATAのUSB-RSAQ2(基板名:PCMX4152)が社内には多量にあるが,Windows 10(64ビット)ではUSB-RSAQ2のドライバーが当たらず, そのままでは使用できない*1.
少なくとも,Windows 7(64ビット),Windows 10(64ビット)および従来社内PC使用していたOS:Windows 7(32ビット)の両方で使用できる方法を記載する.
疑問点および誤りがありましたら,お手数ですがコメント下さい.
結論
使えなくなる原因は,チップメーカーProlificのIC PL-2303(代表となるシンプルな型番名)が外付けされたI2C接続のEEPROMよりVID(ベンダーID)などの情報を読み出し,
USBポートへのUSB-RSAQ2挿入時にそれらの情報でドライバーを当てるため.そのときに,USB-RSAQ2のためのPID(プロダクトID)が04BBであり,それに該当するドライバーがWindows 10(64ビット)では
見つけられない.ただし,デバイスドライバーのプロパティではハードウェア IDとしては正しく,USB\VID_067B&PID_04BB&REV_0001
と表示される.
Windows 10(64ビット)およびWindows 7(32ビット)の両方で使用できる状態にするにあたって,その方法を4つ記載する.
主なメリット・デメリットは大まかに下表のとおりである.EEPROMの設定値のナゾ(👉後述の EEPROM設定値について を参照)を考えると,方法1が一番無難な可能性が高い(従来は方法3を私は推奨していた).Windows 7(32ビット)などUSB-RSAQ2を正常に認識できる環境がすでにない場合,基本的には方法1しか適用できない(方法4は環境さえ揃えば適用できる).私は方法4を結局採用することにした.
なお,EEPROM自体を書換できる環境(およびその周辺知識)がある場合は,VIDとPIDのみを書き換えるため,方法4が最も元々のUSB-RSAQ2に近い状態となる方法である.
# | 主なメリット | 主なデメリット | 備考 |
---|---|---|---|
方法1 | 物理的破断するだけで最もお手軽 | 当てるドライバーのバージョンの考慮が必要 | Prolificデフォルト設定で使用することになるため,暗黙的にUSB-RSAQ2と設定が一部異なる |
方法2 | 物理的破断なくUSB-RSAQ2と同一設定ができる | EEPROM書換ツールが使用できる環境が必要,当てるドライバーのバージョンの考慮が必要,USB-RSAQ2と設定が一部異なる | 物理的破断をしない方法1という位置づけに近い |
方法3 | USB-RSAQ5として使用できる | EEPROM書換ツールが使用できる環境が必要,USB-RSAQ2と設定が一部異なる | 当てるドライバーのバージョンの考慮不要 |
方法4 | USB-RSAQ5として使用できる | EEPROM自体の書換環境が必要 | 当てるドライバーのバージョンの考慮不要 |
方法1:EEPROMのピンを破断してProlific純正ドライバーを使用する
これは,Web上によく記載されている方法である.一番無難な方法.判明している範囲でのメリット・デメリットは以下のとおり:
- メリット
- EEPROMのSDAピンを破断するだけでお手軽!
- Prolific純正のドライバーを使用するので安心?!(※ただし,旧バージョンのドライバー)
- デメリット
- ピンを破断しているので元に戻すのは困難(折り方またはパターンカットの状態に依存).
- 最新のドライバーでは動作しないので旧バージョンのドライバーを探す必要があり,さらにWindows Updateを適用すると最新のドライバーになることがあるので旧バージョンドライバーの当て直しが必要.
- PL-2303デフォルト状態で使用するため,2点の設定がUSB-RSAQ2と異なるようである(方法2参照).
項目名 | USB-RSAQ2の場合 | PL-2303のデフォルト |
---|---|---|
Shutdown Pin Mode | Output HIGH | Output LOW during suspend |
Wake Up Trigger PIN | - | Wake Up Trigger ON RI |
実際の適用手順は以下のとおりである.
- 下記写真のピン(EEPROMのSDA)を破断することにより,原因である外付けEEPROMからの情報を物理的に読み取れなくする(上記PIDが04BBではなく2303にセットされる).
- この状態でWindows 10(64ビット)に挿入するとCOMポートとしては認識および番号割り当てされるが
PL2303HXA PHASED OUT SINCE 2012. PLEASE CONTACT YOUR SUPPLIER
と表示されて使用できない - 秋月電子から旧バージョンのドライバーをダウンロード(2021/04/25現在)して旧バージョンのドライバーをインストールして適用し直す
注意点は単に,旧バージョンのドライバーを適用し直す必要があるということである.Windows Updateを実行すると新バージョンのドライバーになってしまうようなので,都度適用し直す必要があるようである*2.正しく適用できていれば,Prolific Usb-to-Serial Comm Port
という名前になり,使用できるようになる.
方法2:EEPROM書換ツールでEEPROMを書き換えてProlific純正ドライバーを使用する
方法1に近いが,こちらはピンの破断なし,かつ設定項目をUSB-RSAQ2と同一にできる.
ただしWindows 7(32ビット)などのUSB-RSAQ2を拡張ポート(USB-RSAQ2)
として認識できる環境が必要となる.
- メリット
- Prolific純正のドライバーを使用するので安心?!(※ただし,旧バージョンのドライバー)
- 方法1のデメリットに記載した設定の差異をなくすことができる(Shutdown Pin ModeをOutput HIGH,Wake Up Trigger PINを設定なし).
- デメリット
- Windows 7(32ビット)など,USB-RSAQ2を
拡張ポート(USB-RSAQ2)
として認識できる環境が必要. - EEPROMの設定値のナゾ(👉後述の EEPROM設定値について を参照)がある.
- 最新のドライバーでは動作しないので旧バージョンのドライバーを探す必要があり,さらにWindows Updateを適用すると最新のドライバーになることがあるので旧バージョンドライバーの当て直しが必要.
- Windows 7(32ビット)など,USB-RSAQ2を
適用手順は,Windows 7(32ビット)などでの操作は[Win7]と記載することとすると,以下のとおりである.
- [Win7]USB-RSAQ2を
拡張ポート(USB-RSAQ2)
として認識した状態にする. - [Win7]KlaasDC氏のサイト(2021/04/25現在)から
eep-pl2303x_eeprom_writer_v1003_4481.zip
をダウンロードする. - [Win7]そのzipを解凍し
EEWriter.exe
ことPL-2303X EEPROM Writer ver 1.0.0.3を起動する. - [Win7]Read EEPROMをクリックしてUSB-RSAQ2のEEPROMの情報を読み取る.
- [Win7]読み取った情報からDevice Descriptor内の
Product ID (PID)
を04BBから2303に,Function内のSerial Port Outputの設定をDisable output signal during suspendからSet output signals to HIGH during suspendに変更して(👉詳細は後述の EEPROM設定値について を参照),Write EEPROMをクリックしてEEPROMへ情報を書き込む. - この状態でWindows 10(64ビット)に挿入するとCOMポートとしては認識および番号割り当てされるが
PL2303HXA PHASED OUT SINCE 2012. PLEASE CONTACT YOUR SUPPLIER
と表示されて使用できない - 秋月電子から旧バージョンのドライバーをダウンロード(2021/04/25現在)して旧バージョンのドライバーをインストールして適用し直す
注意点は方法1と同じく,単に,旧バージョンのドライバーを適用し直すこと.正しく適用できていれば,Prolific Usb-to-Serial Comm Port
という名前になり,使用できるようになる.
なお,Release No (BCD)はUSB-RSAQ2の読み取りでは0001,Prolificのデフォルト値では0300のようだが,特に動作に影響はしないようである.
方法3:EEPROM書換ツールEEPROMを書き換えてUSB-RSAQ5になりすまして使用する
後継機種USB-RSAQ5になりすまして使用する.Windows 7(32ビット)などのUSB-RSAQ2を拡張ポート(USB-RSAQ2)
として認識できる環境があるのであれば,
これが一番間違いがない方法と思う.というのは,上記方法1または2と異なり,Windows Updateを実施してもドライバーが新しく書き換わることがないため,問題が後々起こりにくいためである.
- メリット
- I-O DATAからドライバーをダウンロードしてくれば,誰でも使えるようになる(変な知識不要).
- Windows 10のアップデートによっていったん使えなくなってしまうことがない.
- デメリット
- Windows 7(32ビット)など,USB-RSAQ2を
拡張ポート(USB-RSAQ2)
として認識できる環境が必要. - EEPROMの設定値のナゾ(👉後述の EEPROM設定値について を参照)がある.
- ベンダーID(VID)とプロダクトID(PID)を無理矢理変更するのは,アリなのか?と心にとまる.
- Windows 7(32ビット)など,USB-RSAQ2を
適用手順は,Windows 7(32ビット)などでの操作は[Win7]と記載することとすると
- [Win7]USB-RSAQ2を
拡張ポート(USB-RSAQ2)
として認識した状態にする. - [Win7]KlaasDC氏のサイト(2021/04/25現在)から
eep-pl2303x_eeprom_writer_v1003_4481.zip
をダウンロードする. - [Win7]そのzipを解凍し
EEWriter.exe
ことPL-2303X EEPROM Writer ver 1.0.0.3を起動する. - [Win7]Read EEPROMをクリックしてUSB-RSAQ2のEEPROMの情報を読み取る.
- 読み取った情報からDevice Descriptor内のVendor ID (VID)を067Bから04BBに,Product ID (PID)を04BBから0A0Eに,Function内のSerial Port Outputの設定をDisable output signal during suspendからSet output signals to HIGH during suspendに変更して(👉詳細は後述の EEPROM設定値について を参照),Write EEPROMをクリックしてEEPROMへ情報を書き込む.このSerial Port Outputの設定を変更しないとCOMポートとしては認識できるが送信ができなくなってしまう.
- I-O DataのUSB-RSAQ5シリーズ サポートソフト(2021/04/25現在)から最新のドライバー(2021/04/25時点ではVer.1.22)をダウンロードして,インストールする
その後,拡張ポート(USB-RSAQ5)
として認識される.
方法4:EEPROM自体を書き換えてUSB-RSAQ5になりすまして使用する
後継機種USB-RSAQ5になりすまして使用する.EEPROM自体を書き換えられる環境があるのであれば,すべての方法の中で最も間違いがない方法である. 上記方法1または2と異なり,Windows Updateを実施してもドライバーが新しく書き換わることがないため,問題が後々起こりにくく,さらに方法2と3にのみ存在するEEPROMの設定値のナゾ(👉後述の EEPROM設定値について を参照)が該当しない.
- メリット
- I-O DATAからドライバーをダウンロードしてくれば,誰でも使えるようになる(変な知識不要).
- Windows 10のアップデートによっていったん使えなくなってしまうことがない.
- "真の状態"でUSB-RSAQ2に近い状態で使用できる(👉後述の EEPROM設定値について を参照).
- デメリット
- EEPROM自体を書き換えられる環境が必要.
- ベンダーID(VID)とプロダクトID(PID)を無理矢理変更するのは,アリなのか?と心にとまる.
適用手順として,ROMライターCH341A MiniProgrammer(2021/05/17現在)とAsProgrammer(2021/05/17現在)を利用して書き換える手順を示す*3.
- USB-RSAQ2のIC3とCH341Aを接続する
- PCにCH341Aを接続し,AsProgrammerを起動して接続をI2C,チップ名を_24C02にしてRead ICを実行する.USB-RSAQ2に方法2または方法3を実施していないデフォルトの状態では以下の値となっているはずである(👉詳細は後述の EEPROM設定値について を参照).
- この状態で,0x00000002~0x00000005番地を順番に,
BB
,04
,0E
,0A
にしてProgramm ICを実行する(必要に応じてその後にVerify ICも実行する). - I-O DataのUSB-RSAQ5シリーズ サポートソフト(2021/05/17現在)から最新のドライバー(2021/05/17時点ではVer.1.22)をダウンロードして,インストールする
その後,拡張ポート(USB-RSAQ5)
として認識される.
その他
PL-2303とその後継ICとWindows OS対応状況
Prolificとして,PL-2303HXAとPL-2303Xという型番のチップはWindows 8,8.1および10では対応しないという方針のため,最新バージョンのドライバーを当てるとPL2303HXA PHASED OUT SINCE 2012. PLEASE CONTACT YOUR SUPPLIER
と表示されてしまうようである.また,このPL-2303という型番末尾にアルファベットが付記されたものは多く存在して,最近ではEEPROMや発振器を外付けしないようになってきているようで,従来(USB-RSAQ2など)の外付けEEPROMのポートはGPIOに代わってきている.Prolificはメーカーとして模倣品の対策にも苦労したようである.
PIDを間違えた場合の修正方法
PIDを一度0609に誤って変えてしまったところ,Windows 10(64ビット)はおろかWindows 7(32ビット)でも,いったん認識しなくなってしまったが,Windows 7で無理矢理USB-RSAQ2のドライバーを当て直すとPIDは実際に異なっているもののUSB-RSAQ2として認識できた.少なくとも拡張ポート(USB-RSAQ2)
またはProlific Usb-to-Serial Comm Port
としてWindowsが認識できていないと,PL-2303X EEPROM Writer ver 1.0.0.3から書換ができなくなってしまうので注意が必要.
破断したEEPROMのSDAピンの状態について
EEPROMのSDAピン破断後のピン状態はどうなっているのかと思って回路パターンを追ってみたところ,R9(4.7kΩ)で電源電圧にプルアップされていると思われる.
現行機種USB-RSAQ6について
I-O DataのUSB-RSAQ5もすでに生産完了とのことでUSB-RSAQ6を販売しているようだが,ドライバーのinfを見た感じでは,こちらは拡張ポート(USB-RSAQ6)
ではなく最初からProlific Usb-to-Serial Comm Port
として認識されると思われる(動作未確認).
EEPROM設定値について
方法2または方法3において,PL-2303X EEPROM Writer ver 1.0.0.3でFunction内のSerial Port Outputの設定をDisable output signal during suspendからSet output signals to HIGH during suspendに変更していないと,デバイスドライバーでProlific Usb-to-Serial Comm Port
または拡張ポート(USB-RSAQ5)
と認識してTera Termで対応するCOMポートを開けるが,PCからデバイスへの送信ができない.
以下,方法3の場合について記載するが(方法2も同等のため),EEPROMの中身を確認したところ0x0000000A番地が00
であるべき箇所が40
となっていた.
一方,Function内のSerial Port Outputの設定をDisable output signal during suspendからSet output signals to HIGH during suspendに変更すると,EEPROMの中身を確認したところ0x0000000A番地が00
であるべき箇所が80
となる.
しかしながら,PL-2303における外付けEEPROM ICの仕様のDCRにおいて,Serial Port Outputや,Disable output signal during suspend,ならびにSet output signals to HIGH during suspendという項目名は存在せず,詳細は結局のところ,判断できなかった.それだけでなく,0x00000009番地のC0
という値は予約ビットであると推測できるが,1が2個連続する予約ビットの仕様が存在しない.これら2点から,参照しているデータシート自体が誤っている可能性が高いが,正確な型番のデータシートを見つけることができなかった.
この点を考慮すると,方法1が最も無難であり,元々のUSB-RSAQ2に近づけた状態にする場合は方法4しか選択肢がない.
興味のある方向け(?)に,EEPROMの値を書き換えた例のスクリーンショットを以下に記載する.
その他
使えるようにして共用備品として取っておいたのに,部署長が変わったら使わないモノは捨てようってことで知らないうちに捨てられてた……
改訂履歴
# | 日付 | 内容 |
---|---|---|
1 | 2021/04/27 | 方法3にて書き直すEEPROM設定をFunctionsのSerial Port OutputをSet output signals to HIGH during suspendを選択しないと,デバイスドライバーで認識していても送信できない状態になる点を追記 |
↑ | ↑ | その他のセクション内の記載内容に見出しを追記 |
2 | 2021/05/17 | 方法1にWindows Update後に再度,旧ドライバーを当てる必要がある(であろう)情報を追記 |
↑ | ↑ | 方法4を追記,誤字の修正 |
↑ | ↑ | EEPROM設定値についてを追記 |
3 | 2021/05/29 | 方法2の5.の図:PIDを2303にしてEEPROMへ書込実行後の画面(Windows 7にて)のVIDの誤記を修正 |
4 | 2022/11/04 | その他の一言コメント追記 |
参考URL
- PL2303を載せたUSBシリアル変換ケーブルのドライバをwindows7/8(x64)に対応させる(2021/04/25現在)
- Windows Vista/Windows 7/Windows 8 で動く、USB-RS232C変換ケーブル情報(2021/04/25現在)
- Modify PL2303 PID & VID(2021/04/25現在)
- PL2303 データシート(PDF) 7 Page - List of Unclassifed Manufacturers(2021/04/25現在)
- PL-2303HXD Datasheet(2021/04/25現在)
- Windows7 64bit で動かない古いUSBシリアル変換アダプタ USB-RSAQ2,Q3の修正(2021/04/25現在)
- Win10で、USB-RSAQ2を使う(2021/04/25現在)
- ELECOMのUC-SGTをWindows10で使う(2021/04/25現在)