Raspberry Pi をスマホ経由でネットに繋げる方法としてBluetoothでテザリングしてみました。
今回は特殊な環境です。
- Raspberry Pi Zero W/WH
- OSにVolumio
OSが通常のRaspbianであれば、BluetoothはGUI画面(デスクトップ)で簡単にペアリングが可能です。その場合はBT-PANから読み進めてください)
なお、設定の操作は自宅Wi-Fi内においてSSH経由で行いましたが、スマホとテザリングした時点でSSHでは操作ができなくなります。
Volumioのように画面もない場合は、操作系を別に用意しないとなりません。
Raspberry Pi Zero Wを直接操作するインターフェイス(モニター、キーボード)が必須になります。また、ネットワークを任意で切り替えられるボタンや制御プログラムがあればそれも可能と思われます。
また、VolumioのSSHは、デフォルトID、デフォルトパスワードは共に「volumio」です。また、以下の例ではホスト名を「volumio-bt-pan.local」と設定しています。
Bluetoothの設定
Bluetoothパッケージのインストール
VolumioではBluetooth関連のパッケージが入っていません。現在は2つを指定しインストールします。(すると関連パッケージも追加してくれます)
sudo apt-get update sudo apt-get upgrade
sudo apt-get install -y bluetooth pi-bluetooth
ここで一旦再起動します。
reboot
起動したら、スマホと接続(ペアリング)するために設定します。
スキャン
bluetoothctl
以下のような記述でRaspberry Pi Zero WのBluetoothコントローラーが検出されます。
[NEW] Controller B8:27:EB:XX:XX:XX volumio-bt-pan [default]
スマホのインターネット共有(テザリング)を有効にさせスキャンします。(今回はiPhone5se)
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:XX:XX:XX Discovering: yes
[NEW] Device XX:XX:XX:XX:XX:XX ラズパイダのiPhone5se
[CHG] Device 6C:96:CF:D9:B7:C2 RSSI: -43
[CHG] Device 5B:DE:6E:B6:4E:F4 RSSI: -43
[CHG] Device 4B:DB:27:7B:FC:4F RSSI: -59
[CHG] Device 6C:96:CF:D9:B7:C2 RSSI: -56
検出されたデバイスのMACアドレスをコピーしておきます。
このままではスキャンが続くのでコマンドでオフにします。
[bluetooth]# scan off
ペアリングとトラスト
先程コピーしたMACアドレスを指定してスマホとペアリングをします。
[bluetooth]# pair ラズパイダのiPhone5seのMACアドレスをコピペ
画面には以下のようにパスキーが表示されるのでyesと入力します。
[agent] Confirm passkey 888117 (yes/no): yes
Pairing successful
このままでは毎回繋がないとなりませんので、トラスト(信頼)させます。
[bluetooth]# trust ラズパイダのiPhone5seのMACアドレスをコピペ
スマホの画面にペアリング許可のダイアログが出ますので、スマホの画面で許可のボタンを押します。
[CHG] Device ラズパイダのiPhone5seのMACアドレスをコピペ Trusted: yes
Changing ラズパイダのiPhone5seのMACアドレスをコピペ trust succeeded
これで完了です。exitコマンドでBluetooth操作から抜けます。
[bluetooth]# exit
テザリングの設定
スマホとペアリングできた段階でインターネットをスマホ経由で行えるようPAN(パーソナルエリアネットワーク)にできるアプリケーションをインストールします。
bt-panのインストールと接続
bt-panをダウンロードし、ルートとフルアクセス権限を与える。
sudo apt install python-dbus sudo curl -L https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan -o /usr/bin/bt-pan sudo chown root.root /usr/bin/bt-pan sudo chmod 777 /usr/bin/bt-pan
※python-dbusは環境によって必要無い場合もあるようです。
スマホと接続する
bt-pan 接続するコマンド
sudo bt-pan client XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
これでOKです。
IPアドレスを確認する場合
いつものようにコマンドで確認したとき、PAN接続ですので確認する箇所はbnep0になります。
ifconfig -a
起動時に接続するよう設定する
このままでは毎起動時に接続するコマンドが必要です。不便なので自動起動するように設定します。
sudo nano /etc/rc.local
/etc/rc.localを開き、コマンドを追記します。
sudo bt-pan client iPhone5seのMACアドレスをコピペ
これでRaspberry Pi を起動後、スマホのテザリングが有効になっていれば接続可能です。
注意するのは、テザリングした後にこのままではRaspberry Pi の操作ができなくなります。モニターとキーボードを繋いだ環境ではない場合、スイッチやミニディスプレイなど操作インターフェイスを別に用意しましょう。
最後に
少し特殊な環境でbt-panを設定してみました。改めて他のサイトの方が詳しいかと思います。(Qiitaとか)間違っている箇所があればコメント欄にてお知らせください。
Volumioを外出先で手軽に使いたいと思いトライしましたが、やはり操作系がないと詰みます・・・。
bt-panは1対1の通信です。繋いだスマホ側から制御できるかと思ったら、VolumioのWEBインターフェイスは表示されるものの、レイアウトが崩れ操作できませんでした。(記事執筆時点で当環境の実体験)
画面があるか、もしくは見えなくてもボタン類で操作できるRaspberry Pi Zero Wであれば、Volumioのウェブラジオも再生できるかと思います。
同じネットワーク内に居ないとなりませんので、Raspberry Pi Zero Wをルーターとしたらいけるか?と考えましたが、そもそもテザリングは1対1の通信なので、そのままでは通らないと思い辞めました・・・。
そこまでするなら、Wi-FiルーターにRaspberry Pi もスマホも繋げた方が楽です。
Bluetoothのテザリングは接続させるデバイスを直接操作できないと意味がありませんね。
今回はイレギュラーな環境であまり参考にならないかも知れません。但し、Bluetoothのペアリングは最新のVolumioとbt-panで改めて実行しましたので、ペアリングとPANの部分は参考にしてみてください。
以上、小難しくしてしまったネットワークの現場からお届けしました。
コメント ご感想をお願いします。
お世話になっております、以前WiFi関係について質問したものです。
記事の更新待ってました!
こちらの記事の通りに設定したら、無事自分が試してみたいことを実現することができました。
知人も最近購入してこちらのサイトの通り初期設定したら、スムーズに設定でき喜んでいました。
これからも記事の更新楽しみに待っています(*^_^*)
わざわざコメントありがとうございます! お役に立てて何よりです。記事は古い情報もあります。なるべく更新していますが上手くいかなかったらまたコメントください。待ってます。