Raspberry Pi 3 のbluezを更新 5.23 -> 5.44


Raspberry Pi 3 (以降、ラズパイ3)を持っているのですが、このラズパイ3はBluetooth4.1 に対応しており、BLEと通信できるらしいのです。

◆インターネットで情報収集結果


  • Bluetooth関連で重要なソフトがBlueZ
  • ラズパイ3に最初から入っているBlueZはバージョンが古いので、バージョンアップしなければならない
  • BLE向けの機能は実験的な実装になっているようで、標準ではOFFらしい

◆現状のラズパイ3を調査 BlueZのバージョンは?

ラズパイ3のイメージファイルは
"2017-04-10-raspbian-jessie.img"
を使っています。

上のイメージファイルで起動し、
$sudo apt-get update
$sudo apt-get upgrade
したあと、
$dpkg -l | grep bluez
でインストール済みBlueZのバージョンを調べました。
その結果、BlueZ 5.23でした。

◆最新版BlueZ

2017/05/03現在の最新版のBlueZはバージョンいくつでしょうか?
BlueZ(http://www.bluez.org/)
によると、5.44が最新のようです。

◆メイク&インストール

この最新バージョンをインストールしたいと思います。
通常、ソフトのインストールはapt-getで行うのですが、ソースコードをビルドしてインストールします。

下のサイトを参考にしてインストールしました。

参考サイト:
https://learn.adafruit.com/install-bluez-on-the-raspberry-pi/installation

概要は以下
1.BlueZをビルドするために必要なパッケージをインストール
参考サイトの通りに、6つのパッケージを導入しました。
2.BlueZのビルドとインストール
ソースコードからインストール場合、だいたい、3ステップ(configurate -> make -> make install)です。
2-1. configurate
ビルドやインストールの設定を行います。
予め用意されているオプションを必要に応じて選びます。
ここは参考サイトとは異なる設定にしました。
参考サイトでは
$./configure
なのですが、BlueZの最新版に含まれているREADMEファイルによると、
$./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
でした。
さらに、READMEによると実験的機能を有効化するには、オプションを追加するようでした。
今回は以下のようにしました。
$./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-experimental

2-1. make
ここは単純にmakeコマンドを実行するだけですが、ちょっとした便利オプションを追加して、
$make -j4
としました。
-jを追加すると、並列ビルドができるようになります。
後ろの数字は並列の最大数で、今回はラズパイ3のコア数に合わせて、4としました。

2-2. sudo make install
参考サイト通りです。

3.BlueZの起動
参考サイトでは、systemctlコマンドで状態確認・起動をしていますが、今回は単純にラズパイ3を再起動しました。
$sudo reboot

4.Bluetooth Low Energyを扱うための設定変更
Bluetoothd(Bluetoothの常駐サービスソフト?)を起動するときに、実験的機能を有効化するように変更します。

参考サイト通り、編集するファイルは下です。
/lib/systemd/system/bluetooth.service
ただし、ファイル編集に管理者権限が必要なので、テキストエディタをsudoで起動します。
参考サイトではnanoを使っていますがCUIのエディタで使いにくく感じたので、私はGUIで使えるleafpadを使いました。

$sudo leafpad /lib/systemd/system/bluetooth.service

下の記述があるので、
ExecStart=/usr/local/libexec/bluetooth/bluetoothd
オプションを追加します。
ExecStart=/usr/local/libexec/bluetooth/bluetoothd --experimental

ところで、
man bluetoothd
で確認すると、
--experimental は -E と同じ効果だそうです。そのため、今回は
ExecStart=/usr/local/libexec/bluetooth/bluetoothd -E
としました。

ファイルを保存して、再起動しました。

これで、BLEが使えるBlueになりました。

コメント

このブログの人気の投稿

【要素技術開発】回転検知のための、ホールIC動作実験

BlueZ5.44のbluetoothctlでコマンドが増えた