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になりました。
コメント
コメントを投稿