始终为相同的蓝牙加密狗分配相同的linux标识符hci0



我们有一个Raspberry Pi,它总是在监听蓝牙设备,如果外围设备的某些条件适用,它会打开蓝牙连接,向外围设备写入一些数据。为了优化性能,有一个蓝牙加密狗只用于监听,另一个用于连接/写入。在我们的脚本中,我们将hci0硬连接为侦听设备,将hci1硬连接为连接设备。

现在我们有一个问题,如果有人在运行时解开加密狗并将其插回,设备将收到名称hci2。这当然破坏了我们的脚本。

所以,我的问题是:我可以配置我的Raspberry Pi操作系统,使其始终为加密狗分配相同的名称吗?我想,当他们使用加密狗的MAC作为标识符时,这应该是可能的。

谢谢你的帮助!

与其在代码中硬编码hci0hci1,不如查找mac地址的值。

我假设您使用的是D-Bus API,因此可以使用GetManagedObjects

例如:

import pydbus

bus = pydbus.SystemBus()
mngr = bus.get('org.bluez', '/')

def get_hci(address):
mngd_objs = mngr.GetManagedObjects()
for path in mngd_objs:
device_info = mngd_objs[path].get('org.bluez.Adapter1', {}).get('Address', 'none')
if device_info  == address: 
return path
print(get_hci('B8:27:EB:22:33:44'))
# /org/bluez/hci0

最新更新