yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

Ubuntu環境のBluetoothの不安定さをどうにかするべく戦った

状況

yumetodo.hateblo.jp

でマウスのbluetooth化をした。しかし

intron.cocolog-nifty.com

と同じように、毎回起動後に一回デバイスを消して再セットアップしないとつながらない病が発生していた。bluemanを入れてうまく行ったと思ったのは気のせいだった。

  • ELECOM LBT-UAN05C2/N
  • ELECOM M-XGM10BB

を使用している。

前提

  • Ubuntu 16.04
  • porgはすでに入っている。
  • gccとかpython3もある

pip更新

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py 

aptで入れたもの

すにでaptからblueman入れちゃったからよくわかんないけど追加で入れたのは

$ sudo apt install libical-dev libreadline-dev python-gi-dev cython cython3

bluezのビルド

$ wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.50.tar.xz
$ tar -xf bluez-5.50.tar.xz
$ wget http://www.linuxfromscratch.org/patches/blfs/svn/bluez-5.49-obexd_without_systemd-1.patch
$ cd bluez-5.50
$ patch -Np1 -i ../bluez-5.49-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

gnome-bluetoothとの衝突防止にbluez-5.49向けに出ているパッチを当てる。

READMEには--enable-libraryのことが書かれていないが、つけないとlibbluetooth-dev相当がビルドされない。

bluemanのビルド

$ wget https://github.com/blueman-project/blueman/releases/download/2.1.alpha2/blueman-2.1.alpha2.tar.xz
$ tar -xf blueman-2.1.alpha2.tar.xz
$ cd blueman-2.1.alpha2
$ ./configure
$ make -j4
$ sudo porg -lD make install

結果

再起動するとマウスが使えるようになった。やったね。

しかしbluemanは立ち上がらない。gnome-bluetoothは生きている。

$ blueman-services
Traceback (most recent call last):
  File "/usr/local/bin/blueman-services", line 17, in <module>
    from blueman.Functions import set_proc_title, setup_icon_path, create_logger, create_parser
ImportError: cannot import name 'create_logger'

$ blueman-applet --version
Traceback (most recent call last):
  File "/usr/local/bin/blueman-applet", line 15, in <module>
    from blueman.Functions import create_logger, create_parser, set_proc_title
ImportError: cannot import name 'create_logger'

$ sudo systemctl status bluetooth
● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since 木 2018-07-19 15:23:44 JST; 1min 15s ago
     Docs: man:bluetoothd(8)
 Main PID: 1161 (bluetoothd)
   Status: "Running"
    Tasks: 1
   Memory: 1.6M
      CPU: 11ms
   CGroup: /system.slice/bluetooth.service
           └─1161 /usr/libexec/bluetooth/bluetoothd

 7月 19 15:23:44 yumetodo-desktop bluetoothd[1161]: Bluetooth management interface 1.10 initialized
 7月 19 15:23:44 yumetodo-desktop bluetoothd[1161]: Failed to set privacy: Rejected (0x0b)
 7月 19 15:23:44 yumetodo-desktop systemd[1]: Started Bluetooth service.
 7月 19 15:23:48 yumetodo-desktop bluetoothd[1161]: Endpoint registered: sender=:1.42 path=/MediaEndpoint/A2DPSource
 7月 19 15:23:48 yumetodo-desktop bluetoothd[1161]: Endpoint registered: sender=:1.42 path=/MediaEndpoint/A2DPSink
 7月 19 15:24:00 yumetodo-desktop bluetoothd[1161]: Endpoint registered: sender=:1.74 path=/MediaEndpoint/A2DPSource
 7月 19 15:24:00 yumetodo-desktop bluetoothd[1161]: Endpoint registered: sender=:1.74 path=/MediaEndpoint/A2DPSink
 7月 19 15:24:00 yumetodo-desktop bluetoothd[1161]: RFCOMM server failed for Headset Voice gateway: rfcomm_bind: Address already in use (98)
 7月 19 15:24:11 yumetodo-desktop bluetoothd[1161]: Endpoint unregistered: sender=:1.42 path=/MediaEndpoint/A2DPSource
 7月 19 15:24:11 yumetodo-desktop bluetoothd[1161]: Endpoint unregistered: sender=:1.42 path=/MediaEndpoint/A2DPSink

bluetoothdも微妙にコケてる。

まあいいっか、動けば。

なんというかbluezだけビルドすればよかった気もするが、もうこれに労力を割きたくない。