Armadilloフォーラム

Suspend復帰後にUSBLTEモジュールとのUSBシリアル通信ができなくなることがある

m_k.makino

2021年7月1日 16時48分

牧野と申します。
お世話になります。

suspend-to-idle状態から復帰後に、USB接続されたLTEモジュールにATコマンドを数回送信しているのですが、
十数回に1回程度の割合で、ATコマンドでの通信ができなくなる(反応が遅くなる、応答が返ってこないなど)症状が発生しております。

ログを確認しましたが、suspendから復帰後にUSBのデバイスがdisconnectされている様子は見られませんでした。
また、USBシリアルに使用しているttyUSB3もArmadillo側から認識されておりました。

使用デバイス:armadillo-610
Linuxバージョン:linux-v4.14-at27
LTEモジュール:Quectel EC21-J

過去のArmadillo-IoT G3LのHWのOSアップデート時にarmadilloのautosuspend機能によってUSBデバイスが認識されなくなった
というような記載もあり、autosuspend機能やsuspend-to-idleからの復帰時にトラブルが起きているのではないかと考えております。

そこで、お手数ですがsuspendモードからの復帰時にUSBの通信が不安定になるといった症状に心当たりがございましたら
回避策をご教示いただけませんでしょうか。
また、autosuspend機能をoffにする方法についても併せてご教示いただけましたら幸いです。

お手数お掛け致しますが、よろしくお願い致します。

コメント

アットマークテクノの古賀です。

牧野さん:
>suspend-to-idle状態から復帰後に、USB接続されたLTEモジュールにATコマンドを数回送信しているのですが、
>十数回に1回程度の割合で、ATコマンドでの通信ができなくなる(反応が遅くなる、応答が返ってこないなど)症状が発生しております。

この症状について確認ですが、症状が発生した場合、reboot コマンドなどで Linux を再起動するまで症状が解消しないでしょうか?

>ログを確認しましたが、suspendから復帰後にUSBのデバイスがdisconnectされている様子は見られませんでした。
>また、USBシリアルに使用しているttyUSB3もArmadillo側から認識されておりました。
>
>使用デバイス:armadillo-610
>Linuxバージョン:linux-v4.14-at27
>LTEモジュール:Quectel EC21-J

症状とは直接関係ない質問で恐縮ですが、Quectel EC21-J を Armadillo-610 でお使いとのことで、この LTE モジュールを Armadilo-610 の拡張ボード経由で USB 接続していらっしゃるという認識で合っているでしょうか?

>過去のArmadillo-IoT G3LのHWのOSアップデート時にarmadilloのautosuspend機能によってUSBデバイスが認識されなくなった
>というような記載もあり、autosuspend機能やsuspend-to-idleからの復帰時にトラブルが起きているのではないかと考えております。

おっしゃっているのは、2020年7月の製品アップデートにける、Linux カーネル v3.14-x1-at23 での修正のことだという認識で、合っているでしょうか?
https://armadillo.atmark-techno.com/news/20200720/software-update-aiotg…

>そこで、お手数ですがsuspendモードからの復帰時にUSBの通信が不安定になるといった症状に心当たりがございましたら
>回避策をご教示いただけませんでしょうか。

こちらについては、今のところ、特にありません。ごめんなさい。

>また、autosuspend機能をoffにする方法についても併せてご教示いただけましたら幸いです。

実際に試したことはないのですが、/sys/bus/usb/devices/<device ID>/power/autosuspend_delay_ms に負の値を設定することで、off にできるかも知れません。
https://www.kernel.org/doc/Documentation/usb/power-management.txt

linux-4.14-at のソースで言うと、ここが該当するかと思います:
https://github.com/atmark-techno/linux-4.14-at/blob/99140ad4386245db939…
https://github.com/atmark-techno/linux-4.14-at/blob/99140ad4386245db939…

以上、もし参考になりましたら幸いです。

古賀様 

お世話になっております。
牧野です。ご回答いただきましてありがとうございます。

> >suspend-to-idle状態から復帰後に、USB接続されたLTEモジュールにATコマンドを数回送信しているのですが、
> >十数回に1回程度の割合で、ATコマンドでの通信ができなくなる(反応が遅くなる、応答が返ってこないなど)症状が発生しております。
> この症状について確認ですが、症状が発生した場合、reboot コマンドなどで Linux を再起動するまで症状が解消しないでしょうか?
はい、発生後はATコマンドを送信していたシリアルポートを占有された状態となっているため、
デバイスのunbind→bindなどの対応を行いましたが、シリアルポートは開放されませんでした。

> 症状とは直接関係ない質問で恐縮ですが、Quectel EC21-J を Armadillo-610 でお使いとのことで、この LTE モジュールを Armadilo-610 の拡張ボード経由で USB 接続していらっしゃるという認識で合っているでしょうか?
通常時は、弊方で開発中の基板上でArmadilloのUSBのポートとEC21-Jを接続して使用していますが、
Armadilo-610 拡張ボード経由でEC21-J miniPCIeの評価基板とUSB接続した状態でも同様の症状が発生することを確認しております。

> >過去のArmadillo-IoT G3LのHWのOSアップデート時にarmadilloのautosuspend機能によってUSBデバイスが認識されなくなった
> >というような記載もあり、autosuspend機能やsuspend-to-idleからの復帰時にトラブルが起きているのではないかと考えております。
>
> おっしゃっているのは、2020年7月の製品アップデートにける、Linux カーネル v3.14-x1-at23 での修正のことだという認識で、合っているでしょうか?
> https://armadillo.atmark-techno.com/news/20200720/software-update-aiotg…
はい、そうです。

> >そこで、お手数ですがsuspendモードからの復帰時にUSBの通信が不安定になるといった症状に心当たりがございましたら
> >回避策をご教示いただけませんでしょうか。
> こちらについては、今のところ、特にありません。ごめんなさい。
承知しました。調査いただきまして、ありがとうございます。
LTEモジュール側の問題の可能性もありますので、弊方で引き続き確認いたします。
不明点ありましたら、再度質問させていただきます。

> >また、autosuspend機能をoffにする方法についても併せてご教示いただけましたら幸いです。
> 実際に試したことはないのですが、/sys/bus/usb/devices/<device ID>/power/autosuspend_delay_ms に負の値を設定することで、off にできるかも知れません。
> https://www.kernel.org/doc/Documentation/usb/power-management.txt
>
> linux-4.14-at のソースで言うと、ここが該当するかと思います:
> https://github.com/atmark-techno/linux-4.14-at/blob/99140ad4386245db939…
> https://github.com/atmark-techno/linux-4.14-at/blob/99140ad4386245db939…
ご教示いただきありがとうございます。
動作確認してみます。

以上です、宜しくお願い致します。