在 BlueZ 5 之前,在 Linux 上添加/删除蓝牙服务/属性/配置文件的方法是通过 sdptool 完成的,如下所示:-
浏览本地记录
#sdptool browse local
Browsing FF:FF:FF:00:00:00 ...
添加服务
#sdptool add SP
Serial Port service registered
删除服务
#sdptool del 0x10007
Service Record deleted.
但是,sdptool 已被弃用(连同 hciattach、hciconfig、hcitool、hcidump、rfcomm、ciptool 和 gatttool)并从 BlueZ 主构建中删除,如以下链接所示:-
幸运的是,这些命令中的大部分已被更新的命令(btattach、btmgmt 和 bluetoothctl)取代。但是,sdptool 似乎没有任何替代品。
我的问题是:- 我现在可以使用什么工具来代替 sdptool 来浏览本地服务/配置文件以及添加或删除配置文件?
请注意,我知道 sdptool 可以重建和启用,但我正在寻找命令的替代而不是解决方法。
最佳答案
从 Bluez 5 开始,这需要使用 ProfileManager
DBUS 接口(interface)来完成。需要使用此界面注册自定义/外部配置文件,而 Bluez 会处理安全和连接的所有方面。
连接准备就绪后,bluez 会提供文件描述符以对外部配置文件进行操作。您可以在 bluez-alsa 中找到 HFP 配置文件的示例实现。 .
具体来说,你可以实现org.bluez.Profile1
的所有方法interface并使用 org.bluez.ProfileManager1
向 Bluez 注册 interface您可以在其中指定 UUID、auth(如果需要)。
在 bluez-alsa 中,
建立此配置文件的连接后,NewConnection
API 为 called在参数中使用 fd。
但是 AFAIK,没有任何直接的方法可以使用 bluetoothctl 等现有工具来实现这一点。
关于linux - BlueZ:不使用 sdptool 命令添加服务、属性和配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53069598/