【问题标题】:Writing Gatt Server Application in Bluez在 Bluez 中编写 Gatt 服务器应用程序
【发布时间】:2026-01-22 04:30:01
【问题描述】:

我们想为 Bluez 编写一个自定义的 Gatt Server 应用程序,我们想在其中提供一些有用的功能。例如:

  1. 启动 Gatt 服务器
  2. 注册/取消注册自定义服务
  3. 添加/删除自定义特征/描述符
  4. 设置/获取特征/描述符的值
  5. 断开客户端/关闭 Gatt 服务器等

Bluez 在命令行工具中没有这些功能,但它们有几个 API(函数)可以做到这一点,我们需要调用这些内部函数。 据此,我们在 "bluez5.28/attrib/" 目录中编写了一个应用程序,从该目录中我们从以下文件中调用了几个内部函数 "bluez5.28/attrib/""bluez5.28/profiles/""bluez5.28/src/" 目录并尝试过用 bluez Makefile 构建它。

由于 bluez 已经从 automake 自动生成了 make 文件,因此很难对该 Makefile 进行任何更改。但是当我们尝试时它显示了很多错误 关于依赖项和库,例如未定义的引用,没有这样的目录文件等。

他们有没有更简单的方法来使用 bluez 函数来制作 GattServer 应用程序?

提前感谢您的宝贵回答.....

【问题讨论】:

    标签: linux bluetooth makefile bluez gatt


    【解决方案1】:

    bluez gatt dbus api 现在从 5.29 版开始完成。如果您可以接受通过 dbus 而不是直接通过库调用,则可以考虑使用它们。

    【讨论】:

    • 感谢您的建议。看到你的帖子,我找到了5.29的发布。在发布中,他们说 dbus gatt api 记录在 doc/gatt-api.txt 中。我已经下载了 bluez5.29 tar 球,但发现 gatt-api.txt 丢失。 ** 您能否提供一个简短的教程,我该如何使用 bluez gatt-dbus apis?并使用问题中提到的上述功能。
    • 文档可以在这里找到:git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/…。抱歉,我目前无法编写教程。那将是一件好事,但我目前没有时间。阅读文档,看看你是怎么走的。如果您有具体问题,请发布。
    • @AlanAu 现在可以直接使用图书馆吗?我现在无法从 bluez 树编译我自己的 gatt 服务器。 Make install 没有在库中为 gatt dev 提供头文件和函数。
    • GATT D-Bus API 从 Bluez v5.42 起没有被定义为实验性的:bluez.org/release-of-bluez-5-42 它的 API 在这里定义:git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/… 有一个 Python 示例可以启发您自己编写 GATT 服务器申请:git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/…
    【解决方案2】:

    在蓝牙规范 4.0 附录中关联 pg:1950:示例属性服务器

    bluez5.28 插件中 gatt-example.c 的属性

    【讨论】: