btusb.enable_autopens=nは実際に何をしますか?

btusb.enable_autopens=nは実際に何をしますか?

LinuxのBluetoothはめちゃくちゃです。数時間ブルートゥースをオンにしようとした後、グラブにブルートゥースを追加することで問題が解決し、現在どのデバイスともペアリングされませんが、少なくともオンになります。

私はGRUBの以前のバージョンを再構成して/etc/default/grub追加しました。

GRUB_CMDLINE_LINUX_DEFAULT=btusb.enable_autosuspend=n

しかし、これが実際に何をしているのか、なぜそれがうまくいくのか教えてくれる人はいますか?

私の考えでは、Bluetoothが自動的に一時停止しないように指示するようですが、アーチデバイスの電源を入れたときにBluetoothが最初にこれを行うのはなぜですか?

Intel Centrum 1000 NがインストールされているDellでArch Linuxを使用しています。

答え1

まず、実際に持っているBluetoothアダプタが何であるかを見てみましょう。 Intel Centrino WirelessN 1000アダプタのネットワーク仕様を考慮するBluetoothをサポートしていませんこれはPCIeハーフミニカード、上記のbtusbパラメータが設定に影響を与える場合は、出力を見て、lsusb -tvDellにどのUSB Bluetoothアダプタがインストールされているかを確認する必要があります。使用していないことを確認してください。btusb.enable_autosuspend設定に関係なく、さまざまな一時停止と再開の問題があることが知られている偽のBarrot 8041A02レプリカ

最新の安定カーネル(作成時のv5.12)では、btusb.enable_autosuspendブールカーネルパラメータが呼び出されるusb_enable_autosuspendかどうかに影響します。btusbデバイスを検出した場合

に記録されているようにUSB電源管理カーネル文書:

ドライバは次のコマンドを呼び出して、デバイスの自動一時停止を有効にできます。

usb_enable_autosuspend(struct usb_device *udev);

彼らprobe()デバイスが正しく一時停止して再開できることがわかっている場合は、ルーチンを実行できます。これはautoデバイスのプロパティを作成するのとまったく同じですpower/control。同様に、ドライバーは以下を呼び出して自動一時停止を無効にできます。

usb_disable_autosuspend(struct usb_device *udev);

onこれはプロパティを作成するのとまったく同じですpower/control

場合によっては、ドライバは自動サスペンド中にリモートウェイクアップを有効にする必要があります。たとえば、ユーザーがキーボードを入力してキーボードをリモートで起動できない場合、キーボードを自動的に中断することはあまり意味がありません。ドライバが1に設定されていてリモートintf->needs_remote_wakeupウェイクが利用できない場合、カーネルはデバイスを自動的に中断しません。 (ただし、デバイスが自動的に一時停止している場合、このフラグを設定してもカーネルは自動的に再起動しません。通常、ドライバは検出方法でこのフラグを設定してデバイスが自動的に一時停止しないようにします。)

あなたのDellに関する詳細はなく、上記の文書だけを見ると、次のようになります。

  1. 検索するのに長い間電源が入っていましたが、他のデバイスとのペアリングプロセスを完了する前に自動的に中断されたUSB Bluetoothデバイスがあります。
  2. 正常にペアリングされましたが、アダプターがスリープ状態になり、HIDキーボード/マウスがアダプターを再起動できません。

grep . /sys/bus/usb/devices/*/power/wakeup出力と出力を比較して、lsusb -tv出力がBluetoothアダプタに/sys/bus/usb/devices/${Bus}-${Port}/power/wakeup適していることを確認する必要があります。enabled次のコマンドを使用すると、カーネルブートパラメータを調整または再起動せずに、テスト目的ですべてのUSBデバイスでウェイクオンを有効にできます。

echo enabled | sudo tee -a /sys/bus/usb/devices/*/power/wakeup

関連情報