Prolific社のUSBシリアルチップPL2303シリーズのWindows10/Windows11非対応問題


USBシリアルアダプタに以前はよく使われていたProlific社のPL2303シリーズ。

ある時期から偽物チップが登場して、上手く動く動かない、という話になったりして、Prolific社がキレて古いチップをまとめてEOS(End of Support)なので、EOS以後にリリースしたWindows10以降で使えなくする、なんてことがあった。

この互換性問題で信頼性を求めるとFTDI社FT232シリーズ、安さを追求するとWCH社のCH340シリーズなど他社のUSBシリアルが採用されがちになってる。

で・・・Prolific社の公式表明として、2012年2月に、PL-2303HX, PL-2303Xシリーズを廃盤として、PL-2303TAを後継とするアナウンスを出している。これの影響でPL-2303HXA,PL-2303XAおよびそれより古いPL2303シリーズがWindows8以降で使えなくなった。

で・・・2019年12月にその後継とされたPL-2303TA含めて、PL2303HXD, PL2303RA,PL2303EA, PL2303SAがEOSとなった。

この時点では特に問題なかったのだが、どうやらWindows11ではこのPL-2303TA採用チップなどがNOT SUPPORTとして使えなくなっているらしい。

スマホをゲーム機っぽくするGameSir X3 Type-C接続版が届いた


aliexpressでGameSir X3が$187.49 なんて値段で売ってるのを発見

あれ?いつのまに発売されてたの?と調べて見ると、Indiegogoでクラウドファンディングをやっていた。

GameSir X3 Type-C-The Ultimate Mobile Controller

GameSir X2と比べて背面に冷却用ファンが追加された、という違いのようだ。

GameSir X2はタイミング逃して買わず、原神をプレイしだしてからGameSir T6miniをやってみたけど、こいつだけGameSirのマッピングアプリ非対応で使えないとか縁がなかったけど

$69 ならちょうどいいか?と1口購入

ちなみに5/12になったらaliexpressの販売ページは $99.97に値下がっていました。

驚いたのは「June 2022」という予定だったものが、 5/20に発送連絡が来たということ。

まあ、5/24に発送手法変更ということでトラッキング番号が再発行になりましたが、5/25に中国を出て5/29に到着という快速具合でした。

で・・・到着

中身

で・・・手持ちのスマホを入れてみる

Androidの「設定」画面で「その他の設定」などにある「OTG接続」を有効化しないと認識できないのですが、Qualcomm/スナップドラゴン SoCのスマホでは認識しましたが、MediaTek SoCのスマホでは認識できませんでした。

動作確認はGameSirアプリを使って行います。GameSirアプリは https://github.com/gamesir123/app/blob/master/readme_en.md から入手します。apkをインストールすると下記の様にGoogle Playが文句を言ってきます。

2022/06/07追記: Google Playストア配布版 でも動く、という話を聞いて試したところ、原神、PS Remote Playで使って見たところ特に問題なく動作しています。

これは「キー入力と画面操作を乗っ取るなんて悪いやつに違いない」ということで警告を出しているというわけです。どうにもならないのでコレは無視します。(Android の今後のバージョンでこういう機能が完全に使えなくされる可能性もあります)

GameSirアプリをインストールして、必要ないろいろな設定をしてから「Gamepas testing」にてボタンの反応を確認します。

動作に問題がなければゲームで遊んで見ます。


StreamLinkだとそのままコントローラとして認識してくれます。

「プレイ開始」を選んでパソコンと接続するとこんな感じ

この「BACKを長押ししてリモートセッションを制御します」というのは、左上の「G」ボタンを長押しする、という意味になります。

とりあえずライザのアトリエを起動してみたところ、まあ普通に動きました。


続いて今回のメイン目的の原神ですが、原神はコントローラに対応していないため、GameSirアプリを入れてマッピング機能を有効にしないと使えません。

また、OPPOスマホの場合、OSの省電力設定の影響で画面上にGameSirアプリのアイコン群は表示されるけど、キーマップ動作はしない、という面倒くさい状態になっていました。

これは原神などの重いソフトを動かすと、他のアプリを強制終了させる、という機能によるものでした。

これを解消するにはOS設定画面からアプリ情報の「GameSir」を選択し、「省エネ」から「バックグラウンド実行を許可する」を選択して、強制終了されないようにする必要がありました。

必要な設定を行ったあと、GameSirアプリを起動して、GameSirアプリ内のMy Gamesに「原神」「StreamLink」などGameSir X3を使って操作したいアプリを登録します。

この場合、「原神」をクリックすると原神用のマッピング設定で起動します。

「StreamLink」をクリックするとマッピング設定を無効化してからStreamLinkが起動します。マッピングをしないからといってStreamLinkを登録しないでいると、原神で遊んだあとStreamLinkを起動すると原神用のマッピング設定のまま動いてしまう形になるので注意が必要です。

マッピング設定を有効にする場合、GameSirアプリでの有効化の他に、GameSir X3側での操作が必要となります。

原神が起動したあと左上の「G」ボタンを、右下の「Home」ボタンを同時に押すと緑丸内の上側のLED1が緑色の点灯に変わり、マッピング機能が有効化されます。

押したあと、下記の様な「GameSirに Gamesir-X3 Type-Cへのアクセスを許可しますか?」というダイアログが表示された場合は「OK」を選択します。

これでアナログキーでの操作ができるようになります。

LED1が緑にならなかったりした場合は、もう1回 G+Homeボタンを押して様子を見てください。

さて、原神の操作をしてみたところ標準で設定されているマッピングはPS4ユーザにとってちょっと使いにくいので、変更しようと思ったのですが、どこで設定変更できるかがよく分かりませんでした。

あ・・・ローディング画面で何かが見える・・・

ということで、下記の赤丸の部分がGameSirアプリのマッピング設定を変更するためのアイコンでした。

ここをタップして設定変更を行います。

割り当てるキーがタップするあたりを設定していきます。

設定完了したら×ボタンタップのあと「Save to accessory」で保存します。

こんなあたりで大丈夫かと思います。


PS4 Proを遊ぶのにSONY純正PS Remote Playというのがありますが、これはコントローラ非対応なので、GameSirアプリでマッピングして遊べます。

スクリーンショットはPS Remote Playアプリ側の制限で撮れませんでした・・・


で・・・GameSir X3ですが、でかいファンがついているのですが、これ、ファン専用Type-Cコネクタにケーブルを繋いで電源供給しない限りファンがまわらないので、かなり面倒くさいんですよね・・・

ファン専用バッテリーとか内蔵してくれればよかったかも?という感じがしなくもないです。

ADAPTEX R90を使って他社用コントローラでPS4を動かす


PS4 Proを使って原神をやっているのだが、1年もやっているとDualshockの動作が怪しくなってきた。

そこで新しいコントローラを探してみたのだが、PS4用とうたって販売しているやつが怪しいものばかりなのに嫌気がさした。

1年前にPS5風のPS4コントローラなんてものを買ってみたりもしたのだが、1ヶ月ぐらいでボタンがおかしくなり使用不可に。それを考えると似たような価格帯のPS4用は期待できないな、というのもあった。

さて、そんな探している中で、BIGBIG WON RAINBOWという商品を発見した。

説明書きを読むと別売りの変換アダプター ADAPEX R90とセットにするとPS4でも使えるとのこと

なお、このメーカでは他にBluetooth接続の変換アダプターADAPEX R100ADAPTEX R100 Proというのも扱っている。

有線のR90にするか、無線のR100/R100 Proにするか悩んだのだが、無線だと他の機種につなげるつなげなおす時にペアリングをやりなおさないとならないのが面倒だなぁ、というのがあったので、今回はR90とRAINBOWコントローラをセットで購入してみた。

大阪の倉庫から1日で東京までお届け完了

中身はこんな感じでした。

長いmicroUSBケーブルが添付されていました。

さて、PS4に繋いで見ます。

PS4上のボタン動作は、純正DualShockのボタン配置に相当する場所にあるものがその動作をする、という感じでした。

ちなみに初期設定ではこんな感じで光ります。

光り方は背面中央にある「Fn」ボタンを2連続で押すとモードが変更され、何回かモード変更すると消灯モードに切り替わります。

しばらく原神で遊んで見ましたが、ちょっと重く感じる、というのと、コントローラにオーディオ出力っぽい端子があるけど動かない、という点以外は特に問題無く使用できています。

背面にあるマクロ登録可能なボタンについてはまだ使って見ていません。

さて、変換アダプターADAPTEX R90の対応表を見ると任天堂スイッチのProコンがサポート対象に入っています。

そんなわけで、PS4 ProにR90経由でProコンを接続してみました。

こちらもトクに問題なく動作していました。

ホームボタンはPSボタンとして動作していました。

なお、任天堂純正ではないスイッチ用コントローラやWindows汎用コントローラをつなげてみましたが、それらは無反応でした。

R90 firmwareのバージョンアップとかできないのかなぁ?

RAINBOWコントローラ自体はBluetooth接続が可能です。

専用アプリBIGBIG WONからfirmwareアップデートや光り方の制御が行えます。

Bluetooth接続するとアプリ内に「Rainbow」コントローラが登録されます。

「新築配置」から設定可能です。

まずは光り方の制御設定

ボタン感度や振動の強さ制御

また、ゲーム内設定でアナログジョイスティックの操作反転ができない場合にコントローラ側で対応できるような設定もあります。

また、firmwareアップデートに関する項目もあります。

今回届いたRAINBOWコントローラのfirmwareは4257のようです。

過去のバージョン一覧を見てみると2021/11/15付け3843から2週間で4257ってめっちゃバージョンアップしすぎでは?

まあ、更新をしっかりやってくれそうなのは安心な点ですね。

さて、しばらく使って見ますかね

LILYGO TTGO T-Watch-2020が届いたので開発環境を作って動かしてみた


LILYGO TTGOからT-Watch-2020が登場。

販売ページ「LILYGO® TTGO T-Watch-2020 ESP32 Main Chip 1.54 Inch Touch Display Programmable Wearable Environmental Interaction
資料「https://github.com/Xinyuan-LilyGO/TTGO_TWatch_Library

発売直後に注文入れたのですが、発送される前に値下がりしてたり、中継地点のシンガポールにつくまで1ヶ月以上音沙汰がなかったりと、約2ヶ月かかるとは思いませんでした。

画像
画像

中身は本体とmicroUSBケーブルだけでした。

初代T-WatchはType-Cコネクタでしたが、microUSBだとは・・・

画像

横についているボタンを押しても電源が入らなかったので、microUSBで電源供給してみたところテストプログラムが実行されました。

画像

とりあえずは問題ないようです。

では、開発環境を作って書き換えましょう。

ドキュメントとして「https://github.com/Xinyuan-LilyGO/TTGO_TWatch_Library」と「T-Watch Document」が書かれていますが、後者の記述は微妙なので無視ですね。

初期設定

(1) Arduino IDEをインストール

Arduino IDEをダウンロードしてインストール。うちの環境はWindows10なので Microsoft Storeからインストールしました。

(2) TTGO_TWatch_Library ライブラリをインストール

https://github.com/Xinyuan-LilyGO/TTGO_TWatch_Library の「Clone or download」から「Download Zip」を選択してzipファイルをダウンロード。

Arduino IDEの[スケッチ]-[ライブラリをインクルード]-[ZIP形式のライブラリをインストール]にてダウンロードしたzipファイルを指定してインストール。

追加が成功すると画面下部に以下が表示されます。

また「ドキュメント\Arduino\libraries」に「TTGO_TWatch_Library-master」が作成されます。

(3) Arduino IDE Boards Managerにespressif社のURLを登録

Arduino IDEの[ファイル]-[環境設定]の「追加ボードマネージャのURL」に「https://dl.espressif.com/dl/package_esp32_index.json」を追加する。

(3) T-Watchを選択する

Arduino IDEの[ツール]-[ボード]-[ESP32 Arduino]-[TTGO T-Watch]を選択する。(下の方に登録されている)

(4) スケッチ例からSimple Watchを呼び出す

Arduino IDEの[ファイル]-[スケッチ例]-[TTGO T-Watch]-[lvgl]-[Simple Watch]を選択する。

(5-1) Simple WatchをT-Watch-2020用に書き換える(2020/06/28以降のTWatch_Libraryの場合)

2020/06/28以降のlvgl 7.0.0対応のTWatch_Libraryの場合、SimpleWatchを選択した場合にタブで表示される「config.h」にて使用するT-Watchのバージョンを選択するようになった。
T-Watch-2020を使用する場合は、下記の様に「//define LILYGO_WATCH_2020_V1」のコメントを削除する。

// => Hardware select
// #define LILYGO_WATCH_2019_WITH_TOUCH     // To use T-Watch2019 with touchscreen, please uncomment this line
// #define LILYGO_WATCH_2019_NO_TOUCH          // To use T-Watch2019 Not touchscreen , please uncomment this line
#define LILYGO_WATCH_2020_V1             //To use T-Watch2020, please uncomment this line


// => Function select
#define LILYGO_WATCH_LVGL                   //To use LVGL, you need to enable the macro LVGL

#include <LilyGoWatch.h>

(5-2) Simple WatchをT-Watch-2020用に書き換える(2020/06/28より前のTWatch_Libraryの場合)

2020/06/28より前のTWatch_Libraryの場合、「SimpleWatch」のファイル冒頭に「// #define LILYGO_TWATCH_2020_V1 // If you are using T-Watch-2020 version, please open this macro definition」とあるように、T-Watch-2020を使う場合はここのコメントを外す必要がある。

/*
Copyright (c) 2019 lewis he
This is just a demonstration. Most of the functions are not implemented.
The main implementation is low-power standby. 
The off-screen standby (not deep sleep) current is about 4mA.
Select standard motherboard and standard backplane for testing.
Created by Lewis he on October 10, 2019.
*/

#define LILYGO_TWATCH_2020_V1        // If you are using T-Watch-2020 version, please open this macro definition

#include <TTGO.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/timers.h"
<以下略>

こんな感じに書き換える。

(6) Simple Watchを日本時間対応にする

SimpleWatchの「gui.cpp」というタブ内で、時刻表示が「CST-8」と設定されているので、それを「JST-9」に書き換えます。

<略>
#include "FS.h"
#include "SD.h"

#define RTC_TIME_ZONE   "JST-9"


LV_FONT_DECLARE(Geometr);
<略>

こんな感じです。

また、「gui.cpp」ではNTPサーバの接続先も設定されています。標準は「pool.ntp.org」ですが、日本国内の「ntp.jst.mfeed.ad.jp」(INTERNET MULTIFEED運営)や「ntp.nict.jp」(NICT運営)に書き換えてください。

(7) T-Watch-2020をパソコンにつなげます

microUSBケーブルを使ってT-Watch-2020をつなげます。

USBシリアルCP2104用のドライバがインストールされていない場合は https://t-watch-document-en.readthedocs.io/en/latest/download/index.htmlCP2104の公式ページなどからSilicon Labs Virtual COM Port (VCP) Universal Driverを入手してインストールします。

(8) T-Watch-2020が接続されたCOMポートを指定します。

Arduino IDEの[ツール]-[シリアルポート]にてCOMポートを指定します。

Arduino IDEの[ツール]-[Upload Speed]は「1152000」と指定しています。この速度はT-Watchのサンプルコードのシリアル入出力で見かける速度指定なので使っています。

それ以外の項目は特に変えていません。

ちなみに「PortPop」というアプリをインストールしておくと、デバイスをつなぎWindows上でCOMポートとして認識した時点で、何番として認識されたのかを教えてくれるので便利です。

(9) コンパイルと書き込み

Arduino IDEの[スケッチ]-[マイコンボードに書き込み]を選択して、コンパイルと書き込みを実行します。

(10) 完成

WiFiをスキャンしてSSID一覧を作り、そこから接続先を選択し、キーを入力することで、ネットワークに接続し、NTPサーバから時刻同期を行う、ということが可能となりました。

画像
画像
画像

Simple Watchの操作は「画面タッチ」です。横の丸ボタンは画面ON/OFFのみのようです。

また、WiFi以外に「Settings」「SDcard」「Camera」などのメニューがありますが、現状未実装です。押しても何も発生しません。

次に作るものは、と製品紹介ページに載っている下記画像を実現できるソースコードを探してみたところ・・・

画像

LilyGoGui」でした。

画像

が・・・時間が変わらないのでおかしいな、とソースを見てみると、画面表示のサンプルなだけで、全てが固定表示だったという・・・

そっか・・・時計実装は自前でやらなきゃならないのか・・・

aliexpressでBT5.0と称するBluetoothアダプタを買ってみたら4.0でしか動かなかった


aliexpressにてとても安いBluetooth 5.0アダプタがあったので2種類買ってみた。

2個あわせて4.52ドルというお値段なので、BT5.0ってほんとなの?と思いつつ発注。

画像

届いたので、Windows10 1909にさして、Microsoftの「PC に搭載されている Bluetooth のバージョンを確認する」に書かれている通りに確認してみると・・・

画像

LMPはどちらも6.x

画像

ということで、LMP6.xなのでBluetooth 4.0とのこと。

パッケージに書かれているURL https://launchstudio.bluetooth.com/ListingDetails/75270 を見てみると、Barrot というメーカのBR80xx系のチップを使っているらしい。

チップとしてはBluetooth 5.0で動いてもよさそうな雰囲気はあるものの、「Supported Layers  4.0 Host Controller Interface」って5.0で設定されてないのでは?疑惑。

そもそも製造メーカが「Barrot」じゃなくて「Cambridge Silicon Radio」として認識されるのおかしくない?

Ubuntuにさしてみると、どっちもUSBデバイスとして認識するが、Bluetoothが動作しない。

画像

hciconfig hci1 upとかやっても起動してくれない。

調べて見ると「Unable to power up Bluetooth dongle」「Bug 60824 – [PATCH][regression] Cambridge Silicon Radio, Ltd Bluetooth Dongle unusable」Linuxでの動作はいろいろ問題を抱えているらしい。

いろいろ調べて見ると同じような見た目だけどBluetooth 5.0として認識されている事例を発見

拆解$19的Bluetooth 5.0 Dongle」(下記画像は引用したもの)

うちの小さい方のパッケージと同じで、中身がでっかい方と同じに見える、というもの。

これは「HCI 9.2064 / LMP 9.8978」で認識されているようだ。そして、デバイス名が「CSR8510 A10」で認識されている。

私のデバイスの「HCI 6.12576 / LMP 6/8891」でデバイス名は「BT DONGLE10」で認識されている。

書かれているfirmware的なものが違うんだろうか?

とりあえず、aliexpressには払い戻し申請中です。

追記…いろいろ苦労しましたが返金に成功しました。