Open4

Raspberry piでbluetoothスキャン

appareappare

ゴール

Bluetooth検出数をもとに混雑度を推定したい。

方法

2通り検討している

  • Raspberry Pi
  • iPad

Xcodeをインストールするのが面倒なのでできればRaspberry Piでやりたい

appareappare

Raspberry Piについて

Raspberry Piはデフォルト(?)でソフトウェア側でBluetoothがオフになっている模様
SSHで接続して、全てCLIでコントロールしているのでGUIは使用できない

Bluetoothが動作しているかを確認する

BD Adressは秘匿するべきなのかわかんないけどとりあえず伏せておく
hciconfigがBluetoothデバイスを設定する。[1]

$ hciconfig
hci0:   Type: Primary  Bus: UART
        BD Address: XX:XX:XX:XX:XX:XX  ACL MTU: 1021:8  SCO MTU: 64:1
        DOWN
        RX bytes:2704 acl:0 sco:0 events:116 errors:0
        TX bytes:1292 acl:0 sco:0 commands:91 errors:0

DOWNとなっているので、動作していないことがわかる
有効化する

sudo hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)

RF-killされているので、有効化できない
RF-killはデバイスの通信電波発振器のステータスを管理する[2]
現在のステータスを確認する

$rfkill list
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
1: hci0: Bluetooth
        Soft blocked: yes
        Hard blocked: no

hci0:Bluetoothを有効化する

sudo rfkill unblock bluetooth

hcicinfg側でも有効化する

sudo hciconfig hci0 up

スキャンしてみる

hcitoolを使いスキャンする[3]

 $ sudo hcitool scan
脚注
  1. https://linux.die.net/man/8/hciconfig ↩︎

  2. http://m-ac.jp/raspi/raspi_os/lan/eth_wlan/rf-kill/index_j.phtml ↩︎

  3. https://linux.die.net/man/1/hcitool ↩︎

appareappare

BLEをhcitoolを用いてスキャンしようとするとエラーが出る

hcitoolを用いてBluetooth low energyをスキャンしたいのだがエラーが出る

$ sudo hcitool lescan
Set scan parameters failed: Input/output error

再起動したら解決した

同じような人がいた
https://stackoverflow.com/questions/22062037/hcitool-lescan-shows-i-o-error

$ sudo hciconfig hci0 down
$ sudo hciconfig hci0 up
$ sudo hcitool lescan
appareappare

ブルートゥースの正しい略し方はBluetooth → BR/EDR、Low Energy→LEらしい

BRとLEの違い

Bluetoothには通常BR/EDRと省電力のLEが存在する。互換性はないが、両立は可能(つまり両方の電波を発信している可能性がある
LEの場合通信速度は10kbps
通信可能距離は理想値は100mだが、実際には0~10m程度となっている

Under optimal conditions BLE can operate up to 100 meters, but in practice they operate best from 0-25 meters.
What is Bluetooth Low Energy (BLE)? How does BLE work? | Litum

実際に測定してみなければ正確な値はわからないがこれが信頼できる場合には混雑度を知りたい場合には有効だと思う。
(暇があったら測定してみる)

スマートフォンはBR/EDRなのかLEなのか?

最終的には混雑具合が知りたいのでスマートフォンが発信するBluetoothがBRなのかLEなのかが知りたいところである
手元のRaspberry Piで調べたところ次の通りだった

デバイス名 BR LE
iPhone8 -
OPPO R11s -
iPad -
Macbook Air -