在BlueZ 5之前,通过sdptool完成在Linux上添加/删除蓝牙服务/属性/配置文件的方法如下:
浏览本地记录
#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接口来完成.需要使用此接口注册自定义/外部配置文件,Bluez可以处理安全性和连接的所有方面.
连接准备就绪后,bluez提供文件描述符以对外部配置文件进行操作.您可以在bluez-alsa中找到HFP配置文件的示例实现.
详细地,您可以实现org.bluez.Profile1 interface的所有方法,并使用org.bluez.ProfileManager1 interface在Bluez中注册它,您可以在其中指定UUID,auth(如果需要).
在bluez-alsa,
建立此配置文件的连接后,NewConnection API为called,其中fd为自变量.
但是AFAIK,没有任何直接的方法可以使用现有的工具(例如bluetoothctl)来实现这一目标.