ブログ管理者のP.Hです!
今回はRaspberry PiでBluetoothを使って、スマホと接続してみたいと思います。スマホ側でBluetoothテザリングの設定をONにしておけば、スマホを通してインターネットに接続することができます。また、VNCを使用して、スマホにRaspberry Piの画面を表示することもできました。ちょっと画面が見たいという時に使うと便利です。
- Bluetooth ホストコントローラーインターフェイス (HCI)を有効にする
- Bluetothのblock(機能停止)を解除する
- /boot/config.txtの設定
- bluetoothctlコマンドを使ってスマホに接続する
- PAN接続する
- スマホからRaspberry PiにVNC接続
それではBluetoothの使い方を紹介していきます。
Bluetooth ホストコントローラーインターフェイス (HCI)を有効にする
まず、sudo hciconfig
コマンドでhciインターフェースが有効(UP RUNNING)状態になっていることを確認します。
DOWN状態の場合は、下記コマンドで有効にします。
$ sudo hciconfig hci0 up
Bluetothのblock(機能停止)を解除する
rfkill list
コマンドを実行すると、Bluetoothがblockされているかどうかわかります。
blocked:yesになっている場合は、下記コマンドでblockを解除します。
$ sudo rfkill unblock bluetooth
/boot/config.txtの設定
/boot/config.txtを開きます。config.txtの中に下記の記載がある場合は、コメントアウトします。この行が書いてあるとbluetoothが無効になってしまいます。
# dtoverlay=pi3-disable-bt
※上記の3つの設定が正しく行われていないと、bluetoothctlコマンド実行時に"Failed to start discovery: org.bluez.Error.NotReady"というエラーが表示されて、動作しませんのでご注意ください。
bluetoothctlコマンドを使ってスマホに接続する
bluetoothctlコマンドを使って、Raspberry PiからスマホにBluetooth接続をします。簡単な流れとしては以下のようになります。
- スマホのbluetoothのMacアドレスを調べる
- スマホのMacアドレスを使用して、Raspberry Piとスマホをペアリングする
- Raspberry Piとスマホを接続する
スマホのbluetoothのMacアドレスを調べる
Macアドレスを調べる方法は2通りあります。
- スマホを操作し、スマホの端末情報画面からMacアドレスを調べます(スマホによって操作方法が違いますので、ここでは省略します)。
- スマホをペアリングモードにします。Raspberry Piで
bluetoothctl
⇒power on
⇒scan on
の順にコマンドを実行します。そうすると接続可能なデバイスが表示されます。スマホ端末名とMacアドレス(下記の)AB:CD:EF:12:34:56の部分)が表示されますので、メモしておきます。
$ bluetoothctl Agent registered [bluetooth]# power on [bluetooth]# scan on [NEW] Device AB:CD:EF:12:34:56 XXXXX(スマホの端末名)
ペアリングする
下記コマンドでペアリングします。AB:CD:EF:12:34:56の部分は、上記で調べたMacアドレスに置き換えてください。
[bluetooth]# pair AB:CD:EF:12:34:56 [agent] Confirm passkey 185285 (yes/no): yes
スマホ側で認証の画面が表示されますので、認証します。paired-devices
コマンドでペアリングしているデバイスの一覧を確認することができます。これでペアリングは終了です。
次に、trustコマンドでスマホを信用できるデバイスとして登録します。
[bluetooth]# trust AB:CD:EF:12:34:56
下記はコマンドを実行した画面です。参考にしてください。
スマホと接続する
connectコマンドでスマホに接続できます。続いて、infoコマンドを実行すると情報の一覧が表示されます。
[bluetooth]# connect AB:CD:EF:12:34:56 [スマホ端末名]# info
これで、bluetoothctlコマンドでの操作は終了です。
下記はコマンドを実行した画面です。参考にしてください。
PAN接続する
PAN接続(Personal Area Network Profile)をすると、インターネット共有でテザリングをすることができるようになります。たぶん、IPアドレスを持てるようになるということだと思います(違ったらすみません)。
bt-panのインストール
下記のコマンドでbt-panモジュールのインストールを行います。
$ ch ~ $ wget https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan $ chmod +x bt-pan $ sudo chown root: bt-pan $ sudo mv bt-pan /usr/bin/
また、pulseaudio-module-bluetoothをインストールします。これをインストールしないと、PAN接続しても、すぐに切断されるという現象が発生しました。
$ sudo apt-get install pulseaudio-module-bluetooth
スマホとPAN接続するコマンド
スマホ側のBluetoothテザリングを有効にします。(テザリング設定を先にしないとうまく動作しませんでした。)下記コマンドでスマホとPAN接続を行います。
$ sudo bt-pan client AB:CD:EF:12:34:56 (スマホのMacアドレス)
ifconfig
コマンドを実行すると、Bluetoothデバイスのipアドレスが確認できます。
これで、Raspberry Pi ⇔ Bluetooth ⇔ スマホ ⇔ Bluetoothテザリング ⇔ インターネットという流れで、Raspberry Piでインターネットが使えるようになります。
スマホからRaspberry PiにVNC接続
PAN接続するとRaspberry PiのBluetoothデバイスにIPアドレスが割り当てられます。VNC Viewer Remote Desktopというスマホアプリで、このIPアドレスを使ってVNC接続ができるようになります。Bluetoothを繋げて、簡易的にスマホでRaspberry Piの画面を表示したり、操作するという使い方もできます。
以上で、Bluetoothの使い方の紹介を終わります。