Arch Linux ARMでBluetoothを有効にするのこと(Raspberry pi 3 B)
Raspberry pi 3 Bで動いているArch Linux ARMで
bluetoothを有効にしようとしたら、存外ハマったのでメモを残しておく。
以前にも少し触ったことがあったけど、こんなに苦労した記憶はないのだが、どうなってるんだ。
パッケージ
- bluez
- pi-bluetooth (AUR)
- bluez-utils-compat (AUR)
この内、3は2 が依存しているので必要となる。
bluez-utils-compat
https://aur.archlinux.org/packages/bluez-utils-compat/
公式リポジトリにあるbluez-utilsから削除された機能を含んでいるので、
これをインストールするとbluez-utilsと衝突する。
ダウンロード
git clone urlはリンクが切れているので、cloneできない。
download snapshotのリンクからソースをダウンロードすること。
make
ソースファイルに署名がついているので、
署名サーバから署名を取得する必要がある。
パッケージビルドでビルドする前の署名チェックでキー値がわかる。
署名が確認できないとビルドが中断するため、
中断した場合は、以下のコマンドで署名をインポートする。
gpg --recv-keys 06CA9F5D1DCF2659(例)
pi-bluetooth
https://aur.archlinux.org/packages/pi-bluetooth/
こっちはcloneができるので 問題ない。
パッケージビルドすればインストールできる。
起動
brcm43438.service
pi-bluetoothに含まれるサービスbrcm43438.serviceを有効化する。
このまま起動すると問題があるのだが、それは後ほど。
sudo systemctl enable brcm43438.service
確認
bluetoothctlを起動してbluetoothdに接続できれば成功。
[alarm@alarm ~]$ bluetoothctl Agent registered [CHG] Controller B8:27:EB:EC:98:C8 Pairable: yes [bluetooth]#
ControllerのMACアドレスがAA:AA:AA:AA:AA:AAになる場合
brcm43438.serviceの項で書いた問題がコレ。
/lib/systemd/system/brcm43438.serviceを下記のように書き換えてやる。*1
再起動してMACアドレスがAA:AA:AA:AA:AA:AAでなければOK・・・でしょう。
(前) ExecStart=/usr/bin/hciattach -n /dev/ttyAMA0 bcm43xx 921600 noflow - ↓ (後) ExecStart=/usr/bin/btattach -B /dev/ttyAMA0 -P bcm -S 3000000