Raspberry Pi 3 を PAN アクセスポイント化する備忘録

Gadget
Photo by hyt.

以前の記事で無線LANアクセスポイント化することはできましたが,もののついでなので Bluetooth でもつながるようにしてみた備忘録です.

Raspberry Pi 3 を無線 LAN アクセスポイント化する備忘録
Raspberry Pi 3 を無線 LAN アクセスポイント化する備忘録です.梅雨時期だからでしょうか.なぜか色々な機材が壊れてその対応でアタフタしているのですが,モバイルバッテリーで動くアクセスポイントが一つ手元にあると便利だよなぁ……...

Bluetooth の有効化

まずは Bluetooth を有効にします.

方法は dietpi-config → 4: Advance Options → Bluetooth を [On] にするだけです.念のため再起動します.実際に有効になったかどうかは,

# rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
1: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

で分かります.必要なアプリケーションも同時に導入されています.

# bluetoothctl --version
5.43

Bluetooth PAN アクセスポイント化

Bluetooth PAN アクセスポイント化します.

考え方は無線LANのときと同じですが,Bluetooth の LAN アダプタ bnep0 の作成と削除,ブリッジへの組み込みを担当してくれる python のスクリプト bt-pan を利用します.

# apt install python-dbus
# cd /usr/local/bin
# wget https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan
# chmod +x bt-pan

起動してみます.

# ./bt-pan --debug server br0
DEBUG:root:Using local device (addr: BB:BB:BB:BB:BB:BB): /org/bluez/hci0
DEBUG:root:Registered uuid 'nap' with bridge/dev: br0 / BB:BB:BB:BB:BB:BB

のような表示が出ればきちんと動いています.もちろんこのままではつながりません.別のターミナル等から,

# bluetoothctl
Agent registered
[bluetooth]# # scan on
Discovery started
....
[NEW] Device AA:AA:AA:AA:AA:AA ToConnect
....
[bluetooth]# pair AA:AA:AA:AA:AA:AA
Attempting to pair with AA:AA:AA:AA:AA:AA
[CHG] Device AA:AA:AA:AA:AA:AAConnected: yes
Request confirmation
[agent] Confirm passkey 220048 (yes/no): yes
[CHG] Device AA:AA:AA:AA:AA:AA ServicesResolved: yes
[CHG] Device AA:AA:AA:AA:AA:AA Paired: yes
Pairing successful
....
[bluetooth]# trust AA:AA:AA:AA:AA:AA
[CHG] Device AA:AA:AA:AA:AA:AA Trusted: yes
Changing AA:AA:AA:AA:AA:AAtrust succeeded
[bluetooth]# scan off
Discovery stopped
....
[bluetooth]# quit

みたいな感じで Bluetooth 接続を許可する端末とあらかじめペアリングしておかなければなりません.

なお,一度信頼関係(trust)しておけば,以後,上記のペアリング作業は必要はなく,接続端末から選ぶだけで通信ができるようになります.

端末から実際に PAN 接続を行います.

接続に成功すると,

# ifconfig
bnep0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::bbbb:bbbb:bbbb:bbbb  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:bf:44:36  txqueuelen 1000  (イーサネット)
        RX packets 381  bytes 61724 (60.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 375  bytes 125762 (122.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
....

のように bnep0 というインターフェースがネットワークに追加されます.また,ブリッジ br0 に,

# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.b827eb15ee9c	no		bnep0
							eth0
							wlan0

の様に bnep0 が追加されます.

自動起動の設定

これでつながることが確認できましたので,最後に自動起動の設定をします.

まず,/etc/systemd/system/bt-pan.service として以下の内容のファイルを用意します.

# cat /etc/systemd/system/bt-pan.service 
[Unit]
Description=BT-PAN Bluetooth Personal Network Server
After=network.target
 
[Service]
ExecStart=/usr/local/bin/bt-pan --debug server br0
 
[Install]
WantedBy=multi-user.target

自動起動を設定し,再起動します.

# systemctl enable bt-pan.service
# reboot

なお,自動起動の設定の中で bt-pan –debug server br0 のように –debug オプションを付けたままですが,これは意図的にそうしています.なぜか,–debug オプションを外すと接続が安定しないからです.逆に言えば,–debug をつけることで接続が安定するのですが,これがなぜかは全くわかりませんし,面倒なので追いかけるつもりもありません.

Bluetooth PAN の使用感

無線LANのアクセスポイントとして設定したときも思ったのですが,Bluetooth PAN の場合は,

ものすごく通信速度遅く感じます.なんとなく,昔のダイアルアップを思わせるスピードです.

まぁ,Bluetooth 4.1 ですから,そもそも規格からしてそんなに速度が出るはずがないです.

Raspberry Pi 3 model B+ とか,近々出ることがわかっている Raspberry Pi 4 とかならもう少し改善されるんだろうなぁ……Pi 4 が出たら買ってみようかなぁ……と思っているのですが,まぁ,接続手段としていろいろなものが使えるってのは悪いことじゃないし,そもそも Raspberry Pi の Bluetooth 接続って今まであまり活用できてなかったので,まぁ,良かったかなと思っています.

以上!

タイトルとURLをコピーしました