📶

デュアルブートのLinux間でBluetoothペアリング情報を複製する

2023/02/21に公開

背景

大半のBluetoothデバイスはペアリング対象を1つしか覚えておくことができない仕様であるため、異なるOSを複数使う場合に毎度ペアリングをし直さなければならないという面倒な問題が起こります。

ここでは、BluetoothスタックにBlueZを採用しているOS間でペアリング情報を複製・共有する方法を示します。これにより、例えば デュアルブート環境などでOSをまたいで同じBluetoothマウスやキーボードを毎度設定をし直すことなく使う ことができるようになります。

本記事ではManjaro Linuxで予めペアリングしたマウスとキーボードの情報を引き抜き、Ubuntu 22.04へ持って行き有効化する例を示します。(bluetoothctlを入れてもらえれば逆も同様の手順で可能です)

移行元のディスクをマウントする

コピー元を確定させる

コピーする

$ sudo su
# cp /media/maleicacid/79a5fbcd-b36d-4e32-a68a-c776c8bfa527/var/lib/bluetooth/* /var/lib/bluetooth/

※/var/lib/bluetoothはパーミッションが700でオーナーがrootです。そこでsudo cp 〜〜〜 ではなく、sudo suでシェル自身を予め昇格させるようにします。ワイルドカードの補完はsudoの前に行われます。このときシェルが昇格されていないとパターンマッチ時に/var/lib/bluetooth/*を参照に失敗します。パターンマッチで手を抜きたい場合は上の例がベストと考えます

その後ディスクはアンマウントしておきましょう。

Bluetooth デーモンの再起動

$ sudo systemctl restart bluetooth.service

デバイスをtrustする

!!!ここがとても重要なポイントです!!!
bluetoothctlが入っていない場合はインストールしておきましょう。
そして、以下の手順でデバイスのMACアドレスを指定してtrustします。

これを行わないと、接続をしようとしても謎のステートに入り最終的に接続失敗するのを繰り返すようになってしまいます。

Discussion