Bluez 5.47からBluetooth Meshのサポートが追加されたようなのでMeshが使えるBluezをビルドしてみる。
ビルドに先立ちネットで調査してみたところ、Bluetooth公式ブログでRaspberry Pi 3を対象のビルド方法(ココ)を見つけた。他にも調べてみたところRaspberry Pi 2,3(arm v7)向けにビルドした情報は多々あるが、Raspbery Pi 1, zero(arm v6)向けにビルドした情報が現状(2019-01-23)で部分的にしかなかった。今回は情報が少ないarm v6向けのバイナリを作成して進めることにする。
今回のターゲット
- Raspberry Pi 1 B+
- Kernel 4.14.79+
- Raspbian
JessieStretch
必要なものをapt-getでインストール
1 |
sudo apt-get install git bc libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev autoconf libjson-c-dev |
ellをインストール
1 2 3 4 5 6 7 8 |
mkdir ~/bluez-work cd ~/bluez-work wget https://mirrors.edge.kernel.org/pub/linux/libs/ell/ell-0.17.tar.xz tar -xvf ell-0.17.tar.xz cd ell-0.17 ./configure --prefix=/usr make sudo make install |
Bluez取得
provision周りで気になる箇所があったのでコミット bb61884de5e7159fe4703486507f009baf8b1105 を取得。
1 2 3 4 |
cd ~/bluez-work git clone git://git.kernel.org/pub/scm/bluetooth/bluez.git cd bluez git checkout bb61884de5e7159fe4703486507f009baf8b1105 |
Bluezをビルド、インストール
1 2 3 4 5 |
ln -s ../ell-0.17 ../ell ./bootstrap ./configure --enable-mesh --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var make sudo make install |
インストール済みのbluetoothdを待避
1 |
sudo cp /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd.org.Stretch |
bluetoothdの置き換え
1 2 3 4 |
sudo service bluetooth stop sudo ln -s /usr/libexec/bluetoothd /usr/lib/bluetooth/bluetoothd sudo systemctl daemon-reload sudo service bluetooth start |
以上でBluezのインストールは終了。ただし少なくとも純正カーネルの4.14.79+では暗号化サポートが有効化されていないしユーザ空間でのアクセスも解放されていないため Bluetooth Mesh のツール meshctl が実行時にエラーで終了するもよう。暗号化とユーザ空間でアクセスできるようにカーネル内に組み込むかカーネルモジュールとしてロードする必要がある。meshctl が動作すべく次回はカーネルを再構築してみる。