強火で進め

このブログではプログラム関連の記事を中心に書いてます。

iOS シミュレータで Bluetooth 通信のテストをする方法

先日、konashiというボードを購入しました。

このボードは iOS アプリと Bluetooth LE 通信をするのですが「アプリ作成中は iOS シミュレータでテスト出来ないかなぁ?」と思って iOS シミュレータで Bluetooth 通信をする方法を調べてみました。

iOS シミュレータの「設定アプリ」で Bluetooth をON

まずは調べる前に普通に使った場合にはどのようになるかチェックしてみました。すると iOS シミュレータの「設定アプリ」で Bluetooth をONにしてもずっと切り替え処理が完了しない状態に成る事が分かりました。

しょうが無いのでそのまま「設定アプリ」を閉じて、アプリを起動してみましたがもちろん Bluetooth の通信以前に接続も出来ませんでした。

最終的には自分の Macbook Pro Retina モデルでは以下の様な手順を踏むと Bluetooth 通信が可能でした。

環境構築の手順

一番重要な情報はこちらの Apple 公式のドキュメント、基本的にはこのドキュメントに書かれている手順通りに作業を進めます。

Technical Note TN2295: Technical Note TN2295
http://developer.apple.com/library/ios/#technotes/tn2295/_index.html

このドキュメントによると動作可能な環境はこちら。

Bluetooth USBアダプタを購入

OS と Xcode については問題無かったのでまずは条件に合う「Bluetooth USBアダプタ」を購入に向かいました。

Bluetooth USBアダプタ」は Bluetooth のドングルなどと言う人居るみたいです(とあるお店の定員さんも売ってるか尋ねた時に「あぁ、Bluetoothのドングルの事」なんて反応でした)。正式には Bluetooth USB アダプタ ですが通じない様であればドングルと言ってみると通じる場合が有るかもしれません。

色々と調べたり、店頭でチェックしてみた結果、 Bluetooth LE に対応していてかつ、Mac対応のものはこちらのものしか見つかりませんでした。

PTM-UBT7|製品案内|プリンストンテクノロジー
http://www.princeton.co.jp/product/bluetooth/ptmubt7.html

と言う事でこちらを購入。

NVRAM の設定の変更

次に以下の設定の変更をターミナルで実行。実行後にはマシンを再起動する必要が有ります。

sudo nvram bluetoothHostControllerSwitchBehavior="never"

テストしてみる

これで準備は終わりました。Bluetooth USBアダプタを差し込みテストする事にしました。

するとデバイス一覧の取得までは成功するのですが通信は出来ないという状態でした。

これについては TwitterBluetooth を一度 OFF → ON にすると使えるという情報を頂きました。

Bluetooth を OFF → ON する手順

1. アプリを iOS シミュレータで起動。
2. ホーム画面に戻る(ショートカットは Shift + Command + H)。
3. 右にスワイプして「設定アプリ」が有る画面に移動し、「設定アプリ」を起動

   ↓

4. Bluetooth を一度 OFF にした後、 ON にする。
5. iOS シミュレータ上からアプリを起動。

この手順を行うと iOS シミュレータで Bluetooth 通信も含めて動作しました。

しかし、自分の環境で konashi のアプリを試してみた場合にはこの手順を毎回しないと Bluetooth 通信できませんでした。お手軽にテストする為に iOS シミュレータを使ってるのに残念ながらあまりお手軽には成らなかったです。

でもまぁ、iOSバイス2台でテストしたいけど手元に1台しか無い場合には、2台準備するよりかコストを節約してテストが可能なのでその様な用途には便利かもしれません。

後、 konashi では LED を点灯するiOSアプリを作り、実機で動かすとアプリを終了した時に点灯していた LED は消灯されます。しかし、 iOS シミュレータで実行した場合にはアプリを終了した後も点灯し続けるという違いが出ました。

関連情報

Bluetoothのはなし(2)|Wireless・のおと|サイレックス・テクノロジー株式会社
http://www.silex.jp/blog/wireless/2012/10/bluetooth2.html

Bluetoothブルートゥース)講座 | バッファロー
http://buffalo.jp/products/pickup/supply/bluetooth/

iPhoneからmbedをBluetooth LE (BTLE)で制御する: PS3Linux、電子工作も
http://todotani.cocolog-nifty.com/blog/2013/02/iphonembedbulet.html

Bluetooth 4.0とBluetooth Smart/Smart Readyの関係とは」の項目に「Bluetooth Smart Ready」と「Bluetooth Smart」についての解説有り。

Bluetooth SIG、Bluetooth Smartで無線を日用品に浸透 〜次期AndroidでSmart Ready標準対応へ - PC Watch
http://pc.watch.impress.co.jp/docs/news/20130528_601177.html