以前の記事で無線LANアクセスポイント化することはできましたが,もののついでなので Bluetooth でもつながるようにしてみた備忘録です.
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 接続って今まであまり活用できてなかったので,まぁ,良かったかなと思っています.
以上!