第二次 Ubuntu環境のBluetoothの不安定さをどうにかするべく戦った
症状
PCにbluetoothのドングルを刺し、マウスとbluetooth接続しようとしている。一度は接続できるのだが、スリープになったり再起動すると接続できなくなるという問題が生じていた。
経緯
Windowsにおいてはbluetoothのドングルの電力が省電力を理由に勝手に消されることが要因だった。
ではbluezとbluemanの最新版をビルドして入れたことで解決したかに見えたが、そうではなかった。
しばらくするとなぜか再発したのだ。
しかしなんとなくWindowsとは別の理由の気がする。
Ubuntu 18.04に上げる
それまでUbuntu 16.04だったのをUbuntu 18.04に上げてみた。これで治らないかなぁ?とおもったが治らない。
Ask Ubuntuに投げる
そろそろお手上げだったので
質問を投げたが、回答が来なかった。
udevの設定を書く
Bluetooth ヘッドセット - ArchWiki#自動接続の設定
を参考に、/etc/udev/rules.d/10-local.rules
に
# Set bluetooth power up ACTION=="add", SUBSYSTEM=="bluetooth", KERNEL=="hci[0-9]*", RUN+="/usr/bin/hciconfig %k up"
を記述し、再起動した。しばらくはうまく行ったが、いつのまにか動かなくなった。というかなぜかjournalctl
にhci69
はない、とか言われた。しかもbluetoothctl
で手動接続しようとすると
Failed to connect: org.bluez.Error.Failed
とかいわれ、またjournalctl
にhci69
はない、とか言われた。
Bluezの最新版をビルドして入れる
Ubuntuを上げたときに前にビルドしたのは消えたのでもう一度Bluezのみやり直した。すなわち、
$ sudo apt install libical-dev libreadline-dev python-gi-dev cython cython3 libdbus-1-dev libudev-dev python3-pip $ wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.50.tar.xz $ tar -xf bluez-5.50.tar.xz $ wget https://ftp.osuosl.org/pub/blfs/conglomeration/bluez/bluez-5.50-obexd_without_systemd-1.patch $ cd bluez-5.50 $ patch -Np1 -i ../bluez-5.50-obexd_without_systemd-1.patch $ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-library $ make -j4 $ sudo porg -lD make install
して再起動した。しかしうまくいかない。
Kernel Patchを当てる
何気なくubuntu 18.04 bluetoothctl
で検索したところ、
がヒットした。
カーネル2.6.11から4.13までで貢献度の高い上位3人の開発者の一人であるTakashi Iwai氏のパッチ
をあてろ、というものだった。指示通り
$ git clone https://github.com/jeremyb31/newbtfix-4.15.git $ sudo dkms add ./newbtfix-4.15 $ sudo dkms install btusb/4.0
して、再起動したところ、一回目の再起動では成功した。
しばらく様子を見てみたい。またひょっこりマウスが動かなくなるかもしれないからな。