Armadilloフォーラム

IoTG3におけるPL2303ドライバーの利用

hi

2023年11月27日 6時44分

Armadillo-IoT G3でGPSモジュールであるBU-353Nを利用しようとしています。
当該デバイスのlsusbの結果は Bus 001 Device 002: ID 067b:23a3 Prolific Technology, Inc. です。
linuxのpl2303ドライバーのソースコードから https://github.com/torvalds/linux/blob/master/drivers/usb/serial/pl2303…
#define PL2303_VENDOR_ID 0x067b
#define PL2303_PRODUCT_ID_GC 0x23a3
が存在しており、認識しそうに思います。
そこで、貴社のサイトに基づいてカーネルのconfigで pl2303を有効にしてuImageを作り、本体に焼きこみました。
実機でも
root@armadillo:~# dmesg| grep 2303
[ 4.423785] usbcore: registered new interface driver pl2303
[ 4.428115] usbserial: USB Serial support registered for pl2303
とでており、ドライバーは組み込まれているようです。
ただし、当該機器をUSB接続しても
usb 1-1: USB disconnect, device number 2
usb 1-1: new full-speed USB device number 3 using ci_hdrc
と表示されるだけで認識している様子はありません。

上記の作業において認識間違え、およびチェックすべきポイントはありますでしょうか?

コメント

花田です。

> Armadillo-IoT G3でGPSモジュールであるBU-353Nを利用しようとしています。
> 当該デバイスのlsusbの結果は Bus 001 Device 002: ID 067b:23a3 Prolific Technology, Inc. です。
> linuxのpl2303ドライバーのソースコードから https://github.com/torvalds/linux/blob/master/drivers/usb/serial/pl2303…
> #define PL2303_VENDOR_ID 0x067b
> #define PL2303_PRODUCT_ID_GC 0x23a3
> が存在しており、認識しそうに思います。

はい、そちらのカーネルにはプロダクトID=0x23a3となる対応が含まれています。
もともとのPL2303はプロダクトID=0x2303のものでして、0x23a3を名乗る新しいデバイスへの対応が追加されたのは(stableになったバージョンでいうと)linux-5.10.y以降になります。

> そこで、貴社のサイトに基づいてカーネルのconfigで pl2303を有効にしてuImageを作り、本体に焼きこみました。
> 実機でも
> root@armadillo:~# dmesg| grep 2303
> [ 4.423785] usbcore: registered new interface driver pl2303
> [ 4.428115] usbserial: USB Serial support registered for pl2303
> とでており、ドライバーは組み込まれているようです。
> ただし、当該機器をUSB接続しても
> usb 1-1: USB disconnect, device number 2
> usb 1-1: new full-speed USB device number 3 using ci_hdrc
> と表示されるだけで認識している様子はありません。

Armadillo-IoT G3をお使いいただいているということで、v4.9-atで試されていると思うのですが、前述した通りこちらにはまだ0x23a3への対応が入っていません。
以下が当初の対応パッチとなるのですが…

[v8] USB: serial: pl2303: Add new PID to support PL2303HXN (TYPE_HXN) - Patchwork
https://patchwork.kernel.org/project/linux-usb/patch/20190924121400.149…

linux-5.10.yを見ると、この後にもいくつかpl2303ドライバへの修正が入っております。

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/dr…
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/dr…

このバージョンまでの修正分をv4.9-atにバックポートしてみました(「pl2303: switch to ->get_serial()」を除く)。
同等デバイスが手元にないので動作は未検証ですが、ビルドに関しては問題なく通ることを確認しました。
パッチを当てて「USB Prolific 2303 Single Port Serial Driver」を有効化してビルドし、そちらのカーネルイメージで実動作をお試しください。

ファイル ファイルの説明
linux-4.9-at_pl2303-update.diff linux-4.9-at向けPL2303ドライバパッチ(v5.10.202相当)

花田です。

> このバージョンまでの修正分をv4.9-atにバックポートしてみました(「pl2303: switch to ->get_serial()」を除く)。

すみません、ひとつだけlinux-4.9では余計な修正が含まれていたのに気づいたので、パッチを修正しました。
(「USB: serial: only set sysrq timestamp for consoles」に関する1行のみrevertしました。実際の動作は元のと変わらないかもしれません)
念のため、こちらをお使いください。

ファイル ファイルの説明
linux-4.9-at_pl2303-update2.diff linux-4.9-at向けPL2303ドライバパッチ(v5.10.202相当)修正版