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相当)修正版

はじめまして。 木村と申します。

当方、「Armadillo-IoTゲートウェイ A6」にて同様の問題に直面しております。
linux-v4.14-at65 向けのパッチは存在しますでしょうか?

花田です。

> linux-v4.14-at65 向けのパッチは存在しますでしょうか?

このバージョンのPL2303ドライバの内容を確認し、v5.10.231で採用されている差分をバックポートいたしました。

2024-10-17 USB: serial: pl2303: add device id for Macrosilicon MS3020 Junhao Xie 1 -0/+1
2021-03-04 USB: serial: pl2303: fix line-speed handling on newer chips Johan Hovold 1 -1/+7
2019-10-23 USB: serial: pl2303: add support for PL2303HXN Charles Yeh 1 -23/+101
2019-04-03 USB: serial: pl2303: fix tranceiver suspend mode Johan Hovold 1 -4/+29
2019-04-03 USB: serial: pl2303: fix non-supported xon/xoff Johan Hovold 1 -5/+20
2018-05-22 USB: serial: pl2303: add support for tx xon/xoff flow control Florian Zumbiehl 1 -1/+15

添付のlinux-4.14-at_pl2303-update.diffに、この6つ分が含まれております。
当該デバイスが手元にないため動作確認まではできておりませんが、ビルドは問題なく通っています。こちらを適用の上でお試しください。

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

花田様

早々にパッチ提供いただきありがとうございました!!
データ送受信の確認はこれからになりますが、無事 ttyUSB0 で認識されましたのでご一報まで。。。