2018年4月14日土曜日

Raspberry Pi を Bluetooth 経由でスマートフォンから操作する

Android タブレットから Raspberry Pi へ Bluetooth で接続して、VNC のリモートデスクトップを操作する方法です。(SSH でも同様に可)

今回使用したもの
  • Nexus 7 (2013)
  • Raspberry Pi Zero WH (Raspbian Stretch with desktop)

Raspbery Pi のうち、Bluetooth を標準装備しているものは BlueZ 等は導入済みであり、追加のパッケージは必要ない。
$ apt-cache show bluetooth
Package: bluetooth
Source: bluez
Version: 5.43-2+rpt2+deb9u2
(以下略)


VNC で接続するためには、Raspberry Pi 側に Bluetooth 経由でアクセスできる IPアドレス が必要になるが、これは Raspberry Pi からタブレットへ、Bluetooth テザリングで接続すれば済む。

■ Android 側での設定
  1. BluetoothをONにする
  2. BluetoothテザリングをONにする
  3. VNC互換のクライアントをインストール
    VNC Viewer - RealVNC Limited

■ Raspberry Pi 側での設定
  1. VNCサーバを「有効」にする
    Raspberry Pi のスタートメニュー > 設定 > Raspberry Pi の設定 > [インターフェース]タブ
  2. BluetoothをONにする
  3. Bluetoothのペアリングを行い、タブレットの Bluetooth と接続する
  4. テザリングを開始する(下記)

まずは、Raspberry Pi でペアリングしたタブレットの Bluetooth デバイスアドレス(BD Address) を確認します。
$ bluetoothctl
以下は bluetoothctl のセッション
# devices
Device 00:00:00:00:00:00 nexus7(これがペアリングしたタブレットのBD Address)
# quit


Raspberry Pi のテザリングを開始するためには、Bluetooth PAN (Personal Area Network) の設定が必要です。GitHub で提供されている Bluetooth PAN のセットアップ スクリプトが使用できます。
https://github.com/mk-fg/fgtk#bt-pan

$ wget https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan
$ chmod a+x bt-pan
$ sudo ./bt-pan client 00:00:00:00:00:00(上記 タブレットの BD Address を指定する)
$ ifconfig bnep0
bnep0: flags=4163 mtu 1500
inet 192.168.xx.xx netmask 255.255.255.0 broadcast 192.168.xx.xx
(以下略)

これで Bluetooth PAN で使える IPアドレス(192.168.xx.xx) が有効になったので、タブレットの VNC クライアントからこのアドレスに接続すればOK

Raspberry Pi の起動時に、自動で Bluetooth PAN を開始するには、次の記事を参照
Raspberry Pi に、自動で開始するサービスを追加する