Linux MintでBluetoothが起動しなくなったときにやったこと
起動時にBluetoothが起動しなかったことがあったので、その時のことを書きます。
環境
使用OSはLinux Mint 20 Ulyana です。
といってもUbuntu系なのでおそらく対応はUbuntuと同じ対応になると思います。
起こったこと
- OSが立ち上がった後に本来なら自動的にBluetoothも起動するのに、Bluetooth接続しているデバイスが動かない。
- Bluetoothのserviceそのものは動いているけど、デバイス検知ができなくなっていた。
- 再起動してみたが治らず。
解決までにやったこと
サービスの生存確認
bluetoothのサービスが生きているかをsystemctl status bluetooth
コマンドで確認をしました。
$ systemctl status bluetooth
● bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-04-09 21:18:36 JST; 8min ago
Docs: man:bluetoothd(8)
Main PID: 1087 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 47282)
Memory: 1.5M
CGroup: /system.slice/bluetooth.service
└─1087 /usr/lib/bluetooth/bluetoothd
結果としては**Status: "Running"**と表示されているので、サービスはちゃんと生きている模様。
Bluetoothアダプタの状態確認
とりあえずサービスは生きてそうですが、デバイス認識は出来ない状態。
なので今度はhciconfig -a
コマンドでBluetoothアダプタの状態を確認します。
$ hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
DOWN
RX bytes:0 acl:0 sco:0 events:0 errors:0
TX bytes:4 acl:0 sco:0 commands:1 errors:0
Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Packet type: DM1 DH1 HV1
Link policy:
Link mode: SLAVE ACCEPT
結果の3行目がDOWNとなっているのでアダプタが無効になっています。
そのため、BDAddressも取れていない状態なのがわかりました。
なのでまずはhciconfig up
コマンドでアダプタを有効にしてみました。
sudo
をつけて、アダプタ名のhci0
も指定して有効にします。
$sudo hciconfig hci0 up
再度、hciconfig -a
コマンドでBluetoothアダプタの状態を確認
hci0: Type: Primary Bus: USB
BD Address: 78:2B:46:4D:E1:66 ACL MTU: 1021:4 SCO MTU: 96:6
UP RUNNING
RX bytes:19465 acl:0 sco:0 events:3117 errors:0
TX bytes:769488 acl:0 sco:0 commands:3116 errors:0
Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: SLAVE ACCEPT
Name: ''
Class: 0x000000
Service Classes: Unspecified
Device Class: Miscellaneous,
HCI Version: 5.1 (0xa) Revision: 0x100
LMP Version: 5.1 (0xa) Subversion: 0x100
Manufacturer: Intel Corp. (2)
UP RUNNING
と表示されたのでとりあえずはアダプタは起動しました。
ただ、結局これだけではデバイスの認識しませんでした。
最終的にやったこと
さきほどのとおり、結局アダプタを起動しただけではダメです。
UP RUNNING
と表示されていますが、最終的にはUP RUNNING PSCAN ISCAN INQUIRY
と表示されている必要が有ります。
あとから調べたらPSCAN ISCAN INQUIRY
をhciconfig
コマンドでそれぞれ有効にすることも出来たのですが、
手っ取り早くbtusb
の読み込み直しする方法でやりました。
btusb
はBluetoothアダプタをLinuxカーネルが操作するためのドライバーになります。
- まずはアダプタを無効化します。
sudo hciconfig hci0 down
- つぎに
btusb
をカーネルからアンロードします。
sudo rmmod btusb
-
btusb
をカーネルに再ロードします。
sudo modprobe btusb
- 最後にアダプタを再度有効にします。
sudo hciconfig hci0 up
-
hciconfig -a
コマンドでBluetoothアダプタの状態を確認
$ hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: 78:2B:46:4D:E1:66 ACL MTU: 1021:4 SCO MTU: 96:6
UP RUNNING PSCAN ISCAN INQUIRY
RX bytes:2839440 acl:105640 sco:0 events:148407 errors:0
TX bytes:127591828 acl:148080 sco:0 commands:200 errors:0
Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: SLAVE ACCEPT
Name: '(PCにつけてる名前)'
Class: 0x1c010c
Service Classes: Rendering, Capturing, Object Transfer
Device Class: Computer, Laptop
HCI Version: 5.1 (0xa) Revision: 0x100
LMP Version: 5.1 (0xa) Subversion: 0x100
Manufacturer: Intel Corp. (2)
まとめ
Bluetooth製品を多く使ってると、いきなり繋がらなくなると仕事にならないこともあるので復旧方法は要しておかないとと思いました。
(今回トラックボール使えなくなってめちゃくちゃ困った・・・・)
手っ取り早く治すのはカーネルリロードのが楽かもですが、hciconfig
コマンドだけでなんとかなったかもしれないです。
もし、次回同じ現象起きたらためしてみようかなと思います。
Discussion