[英]Always assign the same bluetooth dongle the same linux identifier hci0
我们有一个始终侦听蓝牙设备的 Raspberry Pi,如果外围设备的某些条件适用,它会打开蓝牙连接以将一些数据写入外围设备。 对于性能优化,有一个蓝牙加密狗仅用于监听,另一个用于连接/写入。 在我们的脚本中,我们将 hci0 硬连线为监听设备,并将 hci1 硬连线用于连接。
现在我们遇到了问题,如果有人在运行时拔下加密狗并将其重新插入,设备将收到名称 hci2。 这当然会破坏我们的脚本。
所以,我的问题是:我可以将我的 Raspberry Pi OS 配置为始终为加密狗分配相同的名称吗? 我想,因为他们使用加密狗的 MAC 作为标识符,这应该是可能的。
谢谢你的帮助!
我不会在您的代码中硬编码hci0
和hci1
,而是查找 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.