iPhone5 + Bluetooth + Raspberry Pi
前回Raspberry Pi(以下RPi)にBluetoothドングルを装着して周囲のデバイスをスキャンするところまで行いました。
Raspberry Pi + Bluetooth - もっふもふの電子回路
今回はiPhoneとのコネクション確立を行います。
H/W、S/W構成
・Raspberry Pi 2 Model B
OS:Raspbian Jessie
・Bluetooth ドングル Princeton PTM-UBT7
・iPhone 5 iOS9.2
結論
先に結論から言いますと、コネクション(ペアリング)は確立できました。
しかし、実現させたかった動作は、
iPhoneからRPiを検索、検出、ペアリングの動作であり、それはまだ未達成です。
今回はRPiからiPhoneに対しペアリングを行う方法を記載します。
前回の残課題
前回RPiにて
sudo hcitool lescan
BLEデバイスの検出を試みましたが何も見つかりませんでした。
iPhoneくらいは引っかかるだろうと思っていたので腑に落ちなかったため少しそれについて調べました。
海外サイトを巡ってみるとBeacon Toolkitというアプリを使ってiPhoneをiBeaconとして設定してあげると検出できるとのこと。
raspberry pi - Detecting proximity of an iPhone 5s from a RaspberryPi - Stack Overflow
Beacon Toolkitを App Store で
意味がわかりませんがものは試しということでさっそくやってみました。
Beacon Toolskitにて適当なビーコンを設定。
RPiにてlescan。
あっさり見つかる。
???
つまりlescanはビーコンを探すコマンドなの??
いや、そもそもBLEってのがモードの一種ってこと?
lescanってのはBLEのみを探すの??
Beacon ToolkitでiPhoneをBLEモードで実行させたから検出できたってこと?
混乱してきました
これちょっと後で調べる
iPhoneとのペアリング
ペアリングには最初blueman(GUIで簡単にBluetoothの設定ができるパッケージ)を使って行おうとしましたが、
iPhone側に一瞬ダイアログが表示されてすぐに切断されるという現象が発生し、失敗に終わりました。
grepでエラーを見るとDBusFailedError: No such file or directory
などと言っておりbluemanのヘルプサイトにて
DBus エラー
おそらく DBus を使って bluetooth デーモンと対話するために必要なグループにユーザーが属していません。このグループは /etc/dbus-1/system.d/bluetooth.conf で定義されています:
$ cat /etc/dbus-1/system.d/bluetooth.conf | grep "group="
グループが lp の場合、ユーザーアカウントにグループを追加してください:
# gpasswd -a [user] lp
と言っていたので対応するも変わらず。
諦めてbluezとセットでインストールされたbluetoothctlを使いました。
(bluetoothctlは対話式のツールなので、めんどくさいと思って最初使いませんでした)
最初コマンドから
[bluetooth]# scan on
にてデバイスを検索し、見つかったiPhoneに対し接続を試みましたが、
bluemanと同様iPhone側に一瞬ダイアログが表示されてすぐに切断されるという現象が発生。
Bluetooth ヘッドセット - ArchWiki
ペアリングは成功するが、接続が失敗する
bluetoothctl で以下のエラーが表示される場合:
[bluetooth]# connect 00:1D:43:6D:03:26
Attempting to connect to 00:1D:43:6D:03:26
Failed to connect: org.bluez.Error.Failed
Grepでエラーを見ると
a2dp-source profile connect failed
とか言っているので、なんかよくわからないプロファイルで繋ごうとしてるのかと思いましたが、
Intel EdisonでBluetoothを試してみる | Workpiles
こちらのサイトを見て、agentをPIN番号要求ではなくDisplayYesNoに設定してみるとあっさり繋がる。
なぜ???
[bluetooth]# agent DisplayYesNo [bluetooth]# pair <dev> [bluetooth]# connect <dev>
bluetoothctlにてagent DisplayYesNoを行うことが肝だったみたい。
意味がわからないのでこれも後で調べよう
bluemanでもこのあたりの設定を変えれば繋がったんだろうか。。。
(そんなのネットに書いてなかったし、自分の環境依存問題?)
そしてiPhoneからのBT検索ではまったくRPiが見つからないので、
(Windows、Windows Phoneからは見つかる)これも課題だなぁ
プリンストン Bluetooth USBアダプター (通信距離 25m:Ver4.0接続、10m:Ver3.0 Class2接続) PTM-UBT7
- 出版社/メーカー: プリンストン
- 発売日: 2014/10/06
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る