linux - BlueZ:不使用 sdptool 命令添加服务、属性和配置文件

标签 linux bluetooth bluez

在 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 已被弃用(连同 hciattachhciconfighcitoolhcidumprfcommciptoolgatttool)并从 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 中,

  1. 注册完成here .
  2. 方法实现here .

建立此配置文件的连接后,NewConnection API 为 called在参数中使用 fd。

但是 AFAIK,没有任何直接的方法可以使用 bluetoothctl 等现有工具来实现这一点。

关于linux - BlueZ:不使用 sdptool 命令添加服务、属性和配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53069598/

相关文章:

linux - 两个具有相同路径权限的 FTP 用户

java - 如何在 core-java 中从外部 BT dongle 读取数据?

dbus - BlueZ 5.4 DBus API ConnectProfile GATT 服务 UUID

python - 接口(interface) "DefaultAdapter"上带有签名 ""的方法 "org.bluez.Manager"在树莓派 3 中不存在

linux - Linux 下的 FTDI TTL

linux - 仅根据某些信号崩溃时如何使用 systemd 重启服务

bluetooth - Android Things 中的 WiFi P2P 网络

android - 有没有一种特殊的方法可以通过BLE通过arduino发送数据

linux - 如何在Windows上调试蓝牙堆栈,使用什么工具

linux - 文件删除后进程继续保留文件