我的目标是在两台不同的 Linux 笔记本电脑上使用同一个蓝牙鼠标,而不必每次从一台笔记本电脑切换到另一台笔记本电脑时都修理鼠标。这些笔记本电脑都运行 Ubuntu,尽管版本不同 - 因此 BlueZ 版本不同:
- 笔记本电脑 ONE 是 Ubuntu 22.04,带有 BlueZ 5.64
- 笔记本电脑二是 Ubuntu 20.04 和 BlueZ 5.53
我已经发现本文引用自Archlinux 蓝牙维基并得出结论,将文件/var/lib/bluetooth/<bt-controller-mac>/<bt-mouse-mac>
从 ONE 复制到 TWO 可能是实现我想要的解决方案。
因此,我创建了一个 TAR 存档,其中包含<bt-mouse-mac>
笔记本电脑 ONE 中的目录,其中鼠标已使用 bluetoothctl 配对并且运行正常。我在/var/lib/bluetooth/<bt-controller-mac>
笔记本电脑 TWO 下恢复了该存档,并密切关注文件所有权和权限。我已验证这两台机器上的这些内容相同。还请注意,这两台<bt-controller-mac>
机器上的内容当然是不同的。我保留该目录不变,只复制了子目录<bt-mouse-mac>
,以清楚起见。
事实证明,在机器 TWO 上重新启动 bluetooth.service 后,鼠标出现在 中bluetoothctl devices
,但其状态为断开连接。尝试使用 手动连接会导致bluetoothctl CLI 中bluetoothctl connect <bt-mouse-mac>
出现错误消息。Failed to connect: org.bluez.Error.Failed
我使用 bluetoothd 在调试模式下重复了此过程。这显示了一条错误消息:
bluetoothd[8590]: src/device.c:att_connect_cb() connect error: Connection refused (111)
建立配对除了复制内容之外,还有什么其他方法吗/var/lib/bluetooth
?作为参考,这是我的完整内容/var/lib/bluetooth/<bt-controller-mac>/<bt-mouse-mac>/info
,我认为它包含配对所需的所有内容:
[General]
Name=BluetoothMouse3600
Appearance=0x03c2
AddressType=static
SupportedTechnologies=LE;
Trusted=true
Blocked=false
WakeAllowed=true
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;
[IdentityResolvingKey]
Key=6BE642E733F097057408B7E3A36F36C7
[LocalSignatureKey]
Key=82007F13D7C08609FC80B54A7FC998D8
Counter=0
Authenticated=false
[LongTermKey]
Key=AA81538D8BC708D1589D899CC206576D
Authenticated=0
EncSize=16
EDiv=41145
Rand=7412921918571674439
[DeviceID]
Source=2
Vendor=1118
Product=2326
Version=272
[ConnectionParameters]
MinInterval=6
MaxInterval=6
Latency=60
Timeout=300