カーネル3.7.10以降でUSB自動サスペンドを無効にする方法は?

カーネル3.7.10以降でUSB自動サスペンドを無効にする方法は?

カーネルでHTPCを更新しました。3.7.10到着3.10.7そうだCONFIG_USB_SUSPENDこれでカーネルオプションから消え、PMに含まれます。

私が直面している主な問題は、外付けハードドライブがあり、HTPCを一時停止して目覚めたときにシステムがそれを使用できないことです。 HDDが目を覚ますが(再び回転する音が聞こえます)、マウントポイントにアクセスしようとすると、次のエラーが発生します。

ZOTAC ~ # ls /media
ls: reading directory /media: Input/output error

dmesgから:

[  253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading   directory block (ino 2, block 0)

以前のカーネルでは、HDDが独自に休止状態を処理し、マウントポイントに常にアクセスできたため、CONFIG_USB_SUSPEND = Nを設定すると問題が解決されました。 HDDがスリープモードで、HTPCがHDDマウントポイントで何かを要求すると、HDD自体が目覚め、正常に動作します。

今私は成功せず、次のことを試しました。

  1. 手動変更/sys/bus/USB/devices/USB*/電源/制御到着「存在する」変える「自動車」
  2. 手動変更/sys/bus/usb/devices/usb*/power/自動一時停止到着「-1」変える「0」

ただし、HTPCが再び起動すると、マウントポイントにアクセスできなくなります。回避策としてマウントポイントをアンマウントしてから再マウントすると、問題なく再びうまく機能しますが、OSがUSB自動一時停止を処理しないようにする方法が必要であると確信しています。

カーネル3.7.10以降でUSB自動サスペンドを無効にする方法をご存知ですか?

答え1

~のためUbuntuそしてダーバンusbcoreカーネルにコンパイルされるため、/etc/modprobe.dエントリはwillで作成されます。いいえ働く代わりに、カーネルブートパラメータを変更する必要があります。

/etc/default/grubファイルを編集して行を変更してオプションをGRUB_CMDLINE_LINUX_DEFAULT追加しますusbcore.autosuspend=-1

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"

quiet splashオプションはすでに存在します。だから別のオプションを開いておいてください。

ファイルを保存したら、grubを更新します。

sudo update-grub

そして再起動

ここでautosuspend値を確認してください。

cat /sys/module/usbcore/parameters/autosuspend

が表示されます-1

追加情報

カーネル文書には、このパラメータが将来autosuspend_delay_ms(代わりに)に変更されることが示されていますが、現在はまだ同じ名前です。autosuspend

この値のドキュメントは-1カーネルソースファイルにありますdrivers/usb/core/hub.c

1808:    * - If user has indicated to prevent autosuspend by passing
1809:    *   usbcore.autosuspend = -1 then keep autosuspend disabled.

答え2

~によるとカーネルツリードキュメントautosuspend、自動サスペンドアイドル遅延時間はのモジュールパラメータによって制御されますusbcore。初期デフォルトアイドル遅延を-1に設定すると、USBデバイスが自動的に一時停止するのを防ぎます。選択したデバイスに対して自動サスペンドを有効にできます。

usbcore.autosuspendモジュールを手動でロードするときにカーネルパラメータを設定できます。

$ modprobe usbcore autosuspend=-1

または、設定ファイルに次の行を追加します/etc/modprobe.d

options usbcore autosuspend=-1

usbcoreカーネルにコンパイルされている場合は、カーネルコマンドラインに以下を追加してパラメータを調整できます。

usbcore.autosuspend=-1

最後に、このオプションは次のように実行して実行時に調整できます。

echo -1 >/sys/module/usbcore/parameters/autosuspend

この変更はすべての新しいUSBデバイスに影響します。既存の機器は影響を受けません。

答え3

同様の問題がありますMicrosoftホイールマウス光USBおよびPS / 2と互換性がありますアップグレード後Linux Mint Debian Editionシステムからカーネルへ3.10-2-amd64。カーネルの不適切な自動一時停止USB電源管理疑われている。 Debian では、usbcoreカーネルにモジュールとしてコンパイルされます。

コマンドラインから次のコマンドを実行して、この設定を永久に変更できます。

sudo echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf > /dev/null

ただし、一部のカーネルではこれを要求する場合がありますautosuspend=0

システムでを使用している場合initrd(おそらくそうである)、カーネル用に再構築してくださいinitrd

たとえば、

uname -r
sudo dpkg-reconfigure linux-image-3.10-2-amd64

再起動して確認してください。

cat /sys/module/usbcore/parameters/autosuspend

これで結果が生成されるはずです-1

関連情報