繁体   English   中英

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

[英]Always assign the same bluetooth dongle the same linux identifier hci0

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

现在我们遇到了问题,如果有人在运行时拔下加密狗并将其重新插入,设备将收到名称 hci2。 这当然会破坏我们的脚本。

所以,我的问题是:我可以将我的 Raspberry Pi OS 配置为始终为加密狗分配相同的名称吗? 我想,因为他们使用加密狗的 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM