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 -tv
Dellにどの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に関する詳細はなく、上記の文書だけを見ると、次のようになります。
- 検索するのに長い間電源が入っていましたが、他のデバイスとのペアリングプロセスを完了する前に自動的に中断されたUSB Bluetoothデバイスがあります。
- 正常にペアリングされましたが、アダプターがスリープ状態になり、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