Raspberry Pi & Python 開発ブログ ☆彡

Raspberry PiとPythonの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

Raspberry PiとBluetoothでスマホと接続して、テザリングする

bluetooth

ブログ管理者のP.Hです!

今回はRaspberry PiでBluetoothを使って、スマホと接続してみたいと思います。スマホ側でBluetoothテザリングの設定をONにしておけば、スマホを通してインターネットに接続することができます。また、VNCを使用して、スマホにRaspberry Piの画面を表示することもできました。ちょっと画面が見たいという時に使うと便利です。

それではBluetoothの使い方を紹介していきます。

Bluetooth ホストコントローラーインターフェイス (HCI)を有効にする

まず、sudo hciconfigコマンドでhciインターフェースが有効(UP RUNNING)状態になっていることを確認します。

hci0 down

DOWN状態の場合は、下記コマンドで有効にします。

$ sudo hciconfig hci0 up

Bluetothのblock(機能停止)を解除する

rfkill listコマンドを実行すると、Bluetoothがblockされているかどうかわかります。 bluetooth blocked

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通りあります。

  1. スマホを操作し、スマホの端末情報画面からMacアドレスを調べます(スマホによって操作方法が違いますので、ここでは省略します)。
  2. スマホをペアリングモードにします。Raspberry Piでbluetoothctlpower onscan 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

下記はコマンドを実行した画面です。参考にしてください。

bluetooth pairing

スマホと接続する

connectコマンドでスマホに接続できます。続いて、infoコマンドを実行すると情報の一覧が表示されます。

[bluetooth]# connect AB:CD:EF:12:34:56
[スマホ端末名]# info

これで、bluetoothctlコマンドでの操作は終了です。

下記はコマンドを実行した画面です。参考にしてください。 bluetooth connect

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アドレスが確認できます。

get ip address after pan connect

これで、Raspberry Pi ⇔ Bluetooth ⇔ スマホ ⇔ Bluetoothテザリング ⇔ インターネットという流れで、Raspberry Piでインターネットが使えるようになります。

スマホからRaspberry PiにVNC接続

PAN接続するとRaspberry PiのBluetoothデバイスにIPアドレスが割り当てられます。VNC Viewer Remote Desktopというスマホアプリで、このIPアドレスを使ってVNC接続ができるようになります。Bluetoothを繋げて、簡易的にスマホでRaspberry Piの画面を表示したり、操作するという使い方もできます。

以上で、Bluetoothの使い方の紹介を終わります。

ラズパイ ハードウェアに戻る
トップに戻る