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