Armadilloフォーラム

device descriptor read エラーの対処について

f-wada

2020年4月16日 17時06分

和田と申します。
いつもお世話になっております。

Armadillo-640にUSB機器を接続してシステムを構築しているのですが、
USB機器側が不調の際、カーネル起動時に以下のようなエラーが発生しています。

[ 17.038051] usb 1-1: device descriptor read/64, error -110
[ 31.848059] VDD_SD2: disabling
[ 32.398043] usb 1-1: device descriptor read/64, error -110
[ 32.668038] usb 1-1: new full-speed USB device number 3 using ci_hdrc
[ 47.918046] usb 1-1: device descriptor read/64, error -110
[ 63.278047] usb 1-1: device descriptor read/64, error -110
[ 63.398084] usb usb1-port1: attempt power cycle
[ 63.888035] usb 1-1: new full-speed USB device number 4 using ci_hdrc
[ 68.971114] usb 1-1: device descriptor read/8, error -110
[ 74.171110] usb 1-1: device descriptor read/8, error -110
[ 74.438040] usb 1-1: new full-speed USB device number 5 using ci_hdrc
[ 79.531108] usb 1-1: device descriptor read/8, error -110
[ 84.731112] usb 1-1: device descriptor read/8, error -110
[ 84.848094] usb usb1-port1: unable to enumerate USB device

USB機器を再起動するなどすれば解決できる問題なのですが、
この状態になってしまうとシステムが約90秒ほど固まる状態になってしまい、
フリーズしているように見えるため、改善したいと考えています。

上記のエラーが起きた際でも数秒程度で処理を抜ける方法や、
このエラーが発生しなくなる設定などご存知であれば教えていただきたいと思います。

過去ログを確認した所、似たような問い合わせを見つけました。
https://armadillo.atmark-techno.com/forum/armadillo/3959
"/sys/module/usbcore/parameters/old_scheme_first" を設定することで改善するのでしょうか?
ただ、カーネル起動時に有効にする方法が分からないため、
そちらもご存知であれば教えていただきたいと思います。
カーネルは at-debian-builder を使って構築しています。

コメント

at_makoto.sato

2020年4月16日 17時30分

佐藤です。

現象発生時のカーネル起動ログ全体を添付してもらえますでしょうか。

> "/sys/module/usbcore/parameters/old_scheme_first" を設定することで改善するのでしょうか?
> ただ、カーネル起動時に有効にする方法が分からないため、
> そちらもご存知であれば教えていただきたいと思います。
保守モードで起動し、ubootのコマンドラインで有効にできます。

=> setenv optargs usbcore.old_scheme_first=1 
=> boot

Armadilloを再起動すると上記設定は消えてしまいます。
保存する手順やデフォルト設定に戻す手段は製品マニュアルをご確認ください。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

f-wada

2020年4月17日 10時45分

和田です。
いつもお世話になっております。

返答ありがとうございます。
>現象発生時のカーネル起動ログ全体を添付してもらえますでしょうか。
起動ログを添付させていただきます。
該当のエラーは225行目から表示されています。

>保守モードで起動し、ubootのコマンドラインで有効にできます。
> => setenv optargs usbcore.old_scheme_first=1
> => boot
こちらを試しましたが、現象は改善しませんでした。

なお、添付したログはold_scheme_first を未設定の状態のものになります。

ファイル ファイルの説明
linux起動ログ.txt 現象発生時のカーネル起動ログ

at_makoto.sato

2020年4月17日 10時58分

佐藤です。

> 起動ログを添付させていただきます。
> 該当のエラーは225行目から表示されています。
ログのほうありがとうございました。

> なお、添付したログはold_scheme_first を未設定の状態のものになります。
すいません。お手数ですが、設定した場合のログもいただけますでしょうか。

f-wada

2020年4月17日 11時20分

和田です。
いつもお世話になっております。

> なお、添付したログはold_scheme_first を未設定の状態のものになります。
>すいません。お手数ですが、設定した場合のログもいただけますでしょうか。

setenv optargs usbcore.old_scheme_first=1 を設定した際のログを添付します。
お手数をおかけしますが確認をお願いします。

ファイル ファイルの説明
linux起動ログ_old_scheme_first.txt 現象発生時のカーネル起動ログ_old_scheme_first設定後

at_makoto.sato

2020年4月17日 15時02分

佐藤です。

> 上記のエラーが起きた際でも数秒程度で処理を抜ける方法や、
接続しているUSB機器を認識できずにタイムアウトしているので、
タイムアウト時間を短くするとよいかもしれません。
ubootのコマンドラインで変更して試してみてください。

=> setenv optargs usbcore.initial_descriptor_timeout=1000
=> boot

例として1000(ms)にしてますが、この値に根拠はありませんのでご注意ください。
デフォルト値は5000(ms)です。

> このエラーが発生しなくなる設定などご存知であれば教えていただきたいと思います。
こちらに関してはUSB機器側で解決していただく必要があります。

f-wada

2020年4月17日 16時13分

和田です。
いつもお世話になっております。

>タイムアウト時間を短くするとよいかもしれません。
>ubootのコマンドラインで変更して試してみてください。
> => setenv optargs usbcore.initial_descriptor_timeout=1000
> => boot

こちらを試したところ、タイムアウト時間が減り期待していた動作になりました。
対応いただきありがとうございます。

なお、
[ 2.008181] usb 1-1: device descriptor read/64, error -110
こちらのログではタイムアウトをほぼ無くすことができましたが、
[ 9.051130] usb 1-1: device descriptor read/8, error -110
こちらは5秒程度の待ち時間は発生するようです。
もう少しこちらでも検証してみますが、
現状でもかなり改善ができているので、このまま進めることも検討しています。

>こちらに関してはUSB機器側で解決していただく必要があります。
了解しました。ご検証ありがとうございます。