KazuProg's notes

技術メモや備忘録などを自由気ままに書き連ねています

Raspberry PiをPANクライアントにする方法

作成日: ・ 更新日:

スマホのBluetoothテザリングで、 Raspberry Pi(Raspbian)をインターネットに接続する方法です。

まずは、Raspberry PiとスマホをBluetoothペアリングさせます。

GUIで設定する場合は、Raspbianデスクトップ画面の右上にあるBluetoothアイコンから簡単に行えるので、説明を省きます。

ターミナル上で設定する場合は、 ターミナル上でBluetoothのペアリングをする方法 を参照してください。

無事ペアリングができたら、いよいよ接続ですが、 Raspbianでは、デフォルトではPAN接続ができません。

なので、以下のコマンドを入力して、bt-panをダウンロードしてください。

$ wget https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan

実行できるようにパーミッション設定をします。

$ chmod 755 bt-pan

bt-panで使用するdbusをインストールします。

$ sudo apt-get install python-dbus

実行する前に、まずは親機のMACアドレスを確認しましょう。 ペアリング済みの場合、親機のMACアドレスは、以下のコマンドで取得することができます。 ペアリングについては、こちらを参照してください。

$ bluetoothctl devices

では、実行してみましょう。PANクライアントにするには、以下のコマンドを入力してください。

$ bt-pan client [親機のMACアドレス]

これで、Raspberry PiがPANクライアントになったはずです。 以下のコマンドを入力して確認してみましょう。

$ ifconfig

「bnep0:」から始まる行があれば、接続できているはずです。

補足

Traceback (most recent call last):
  File "./bt-pan", line 237, in <module>
    if __name__ == '__main__': sys.exit(main())
  File "./bt-pan", line 209, in main
    try: iface = net.Connect(opts.uuid)
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.bluez.Error.Failed: Input/output error

このようなエラーが発生して接続できないという人へ

Raspberry Piに初めから内蔵されているBluetoothチップは、 相性の問題などでこのようなエラーが発生してしまうようです。

対策としては、Bluetoothレシーバーを別で購入して本体に取り付ければいいそうです。 私もその方法でこのエラーが出なくなりました。

レシーバーを取り付けたら、内蔵のBluetoothを無効にしましょう。 /boot/config.txt に以下の内容を追記して、再起動してください。

dtoverlay=pi3-disable-bt
$ sudo reboot