3
1

bt-panがない

Last updated at Posted at 2023-05-02

Raspberry PiでBluetoothテザリングをしたいものの、巷の解説記事によくあるbt-panがダウンロードできない!ということでお困りの方へ。

TL;DR (bookworm以降)

コマンドラインで行うBluetoothテザリング

Network Managerの導入により、bt-panを用いた以前の方法だとネットワークデバイス(bnep0)は作られるものの、追加の操作(sudo dhclient bnep0)をしないとIPアドレスが割り振られないため、おとなしくNetwork Managerのお作法に従う方がよいです。

# 接続
$ sudo nmcli d connect (接続先の機器のMACアドレス)
or
$ sudo nmcli con up (プロファイル名)

# 切断
$ sudo nmcli d disconnect (接続先の機器のMACアドレス)
or
$ sudo nmcli con down (プロファイル名)
NAME           UUID   TYPE       DEVICE
preconfigured  (省略)  wifi       wlan0
lo             (省略)  loopback   lo
XXX Network    (省略)  bluetooth  --
  • Network Manager経由の操作だとsudoが必須なので、以前の方法のようにユーザー権限のプログラムでdbus経由で叩いて完結、ということができなくなりました。

起動時に行うBluetoothテザリング

nmcliコマンドで設定を変更します。/etc/rc.localやsystemdに頼る必要はありません。

$ sudo nmcli c modify (プロファイル名) connection.autoconnect yes

確認方法

$ nmcli c show (プロファイル名)

connection.id: ~
(中略)

(変更前)
connection.autoconnect:                 no
(変更後)
connection.autoconnect:                 yes

デスクトップ環境で行うBluetoothテザリング

まず、デスクトップ右上にあるBluetoothのアイコンからペアリングを行います。(特に手順は示しません)

さらに以下の手順でBluetoothテザリングを実施します。

  • Wifiのアイコンをクリック
  • 「高度なオプション」>「接続を編集する」
  • Bluetoothの接続をダブルクリックで編集
  • 何も更新せずに「保存」を押すと、接続が始まります。
    • 正確には"Connect automatically with priority"にチェックがついている必要あり

TL;DR (bullseye以前)

bt-panの代わりが欲しい方はこちらをお使いください。

$ wget https://gist.githubusercontent.com/hishizuka/d66189ec81316945c33531f7d4ddc68d/raw/319621b045254002beb774c701eafe0fc21c0f02/bt-pan

本家 (https://github.com/mk-fg/fgtk) では2022/12にpython2系スクリプトは削除ということで、配布終了してしまったようです。
ただ、有名なスクリプトであり、ライセンスがWTFPL(どうとでも勝手にしやがれクソッタレ・公衆利用許諾(契約)書))であるため、python3に対応した版をGithub Gistで公開しました。

Bluetoothテザリングはここに示すコマンドだけではできず、事前にペアリングが必要です。
Raspberry Pi Zero(W, WH, 2 W)のセットアップの「(オプション)Bluetoothテザリングによるネットワーク設定」等を参照ください。

コマンド1発でもできます(dbus-send)

bt-panの中身を紐解くと、LinuxのBluezのNetwork APIをD-Bus経由で叩いているだけで、接続はConnectメソッドを、切断はDisconnectメソッドを実行します。
D-Busをコマンドで操作できるdbus-sendを使い、コマンド1発でもできます。

接続

$ dbus-send --system --print-reply --type=method_call --dest=org.bluez /org/bluez/hci0/dev_12_34_56_78_9A_BC org.bluez.Network1.Connect string:"nap"

Bookwormの場合、IPアドレスが取得できないので、以下を追加で実行。

$ sudo dhclient bnep0

切断

$ dbus-send --system --print-reply --type=method_call --dest=org.bluez /org/bluez/hci0/dev_12_34_56_78_9A_BC org.bluez.Network1.Disconnect

コマンドの途中にある /org/bluez/hci0/dev_12_34_56_78_9A_BC について、

  • hci0 をお使いのbluetoothアダプタに変更(通常はそのまま。USBドングルを使う場合はhciconfigで確認)
  • dev_12_34_56_78_9A_BC は接続先の機器のMACアドレス 12:34:56:78:9A:BC の区切り文字をアンダーバーに変換したものにしてください。
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1