Make.

iPhoneにBelutooth接続してテザリング

Pocket

Raspberry PiはBluetooth接続により携帯電話でテザリングを使用することができます。
これにより、 LAN環境がない状況でも、Raspberry Piをインターネットにつなぐことができます。
また、テザリング時に携帯電話とPersonal Area Network(パーソナル・エリア・ネットワーク、PAN)を構築するため、携帯電話からRaspberry PiにIPアドレスを指定してアクセスすることができます。


携帯電話(iPhone)とのテザリング

テザリングは、携帯電話側のテザリング契約と、テザリング設定を行ってから実施してください。
iPhoneでは、iPhoneで「インターネット共有」機能を”オン”にしてから、Bluetooth接続を有効にしてください。


Bluetoothデバイスについて

USB BluetoohアダプタはBT-MICRO4を使います。
USBコネクタをに接続して起動すればそれだけでOSに認識させることができます。


Bluetooth制御ソフトのインストール

RaspberryPiでBluetooth制御を行うためのソフトウェアをインストールします。
ここでは、Linuxでよく使われるBlueZを使用します。

まずは、BlueZをインストールします。以下のコマンドを実行するだけです。

$ sudo apt-get update
$ sudo apt-get install bluetooth bluez-utils bluez-compat

Bluetoothデバイスとのペアリング

BlueZをインストールしたら、近くにあるBluetoothデバイスをスキャンします。

$ hcitool scan

デバイスが検出されたら、MACアドレスとデバイス名が表示されます。
MACアドレスはメモしておきます。
以下では、MACアドレス(DE:9B:9C:76:9A:3E)が認識されたものとして解説します。

$ hcitool scan
Scanning ...
     DE:9B:9C:76:8A:3E     iPhone

以下のコマンドを実行するとペアリングが実施できますが、エラーメッセージが出て失敗します。

$ sudo bluez-simple-agent hci0 DE:9B:9C:76:9A:3E
Creating device failed: org.bluez.Error.AuthenticationRejected: Authentication Rejected

解決するために、ペアリング方式を以下のコマンドで変更します。

$ sudo perl -i -pe 's/KeyboardDisplay/DisplayYesNo/' /usr/bin/bluez-simple-agent

ペアリング方式を変更したら以下のコマンドで再度ペアリングを実施します。

$ sudo bluez-simple-agent hci0 DC:9B:9C:76:9A:3E
RequestConfirmation (/org/bluez/5535/hci0/dev_DE_9B_9C_76_9A_3E, 367179)
Confirm passkey (yes/no): yes
Release
New device (/org/bluez/5535/hci0/dev_DE_9B_9C_76_9A_3E)

ペアリングが完了したらアドレスを指定して信頼できるデバイスとして登録しておきます。

$ sudo bluez-test-device trusted DE:9B:9C:76:9A:3E yes

 テザリング

ペアリングとテザリングが成功するとbnep0というインターフェイスになるになります。
bnep0の設定を事前にインターフェースを設定するファイルに書き込みます。
その後、pandコマンドでPAN接続を行いテザリングできるようになります。

echo "echo 'iface bnep0 inet dhcp' >> /etc/network/interfaces" | sudo sh
sudo pand -c DE:9B:9C:76:9A:3E -role PANU --persist 30

IPアドレスの確認

テザリングが完了している場合、以下のコマンドでIPアドレスを確認することができます。

$ ifconfig bnep0

IPアドレスが無事に割り振りされている場合は、携帯電話(iPhone)側からIPアドレスを指定して、hpptやsshなどのアクセスを行うことができます。


起動時の設定

起動時にテザリングが開始するように以下の内容を/etc/rc.localに追加します。
起動時にPANを構成して、アドレスを表示します。

pand -c DE:9B:9C:76:9A:3E --role PANU --persist 30

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "IP Address : %s\n" "$_IP"
fi
exit 0

設定のやり直し

Bluetoothのモジュール設定がうまくいかない場合があります。
その場合は、以下のコマンドで一度モジュール登録を解除して、最初から設定をし直します。

bluez-test-device remove DE:9B:9C:76:9A:3E
Pocket