BlueZ - Linux 蓝牙协议栈
版权所有 (C) 2000-2001 Qualcomm Incorporated 版权所有 (C) 2002-2003 Maxim Krasnyansky [email protected] 版权所有 (C) 2002-2010 Marcel Holtmann [email protected]
为了编译蓝牙工具,你需要以下软件包: - GCC 编译器 - GLib 库 - D-Bus 库 - udev 库(可选) - readline(命令行客户端)
在基于 Debian 的系统上,可以通过运行以下命令来完成:
sudo apt-get build-dep bluez
./bootstrap
配置运行:
./configure --prefix=/usr --mandir=/usr/share/man
--sysconfdir=/etc --localstatedir=/var
Configure 会自动搜索所有必需的组件和软件包。
编译并安装运行: make && make install
为了编译 mesh 支持和测试客户端工具,需要存在 Embedded Linux 库的开发版本。 开发仓库可以在以下位置找到:
git://git.kernel.org/pub/scm/libs/ell/ell.git
https://kernel.googlesource.com/pub/scm/libs/ell/ell.git
构建系统要求 Embedded Linux 库的源代码位于与源代码相同的顶级目录中:
.
|--- ell
| |--- ell
| `--- unit
`--- bluez
|--- src
`--- tools
不需要构建或安装 Embedded Linux 库。构建二进制文件时会自动进行构建,然后内部链接。
当使用 --enable-external-ell 构建选项时,不需要在顶级目录中提供 Embedded Linux 库的源代码。
当既未指定 --enable-mesh 也未指定 --enable-btpclient 时,这部分无关紧要,不需要 Embedded Linux 库。
Mesh 守护进程使用内核提供的加密工具来执行 Bluetooth Mesh 所需的安全功能。 目前许多标准发行版都启用了所有必需的加密功能,但少数知名发行版没有。
如果 Mesh 加密无法正常工作,可能需要启用以下配置选项,并重新构建内核。
至少需要内核版本 4.9 或更高版本
内核至少需要开启以下 .config 选项: CONFIG_CRYPTO_USER CONFIG_CRYPTO_USER_API CONFIG_CRYPTO_USER_API_AEAD CONFIG_CRYPTO_USER_API_HASH CONFIG_CRYPTO_USER_API_SKCIPHER
CONFIG_CRYPTO_AES CONFIG_CRYPTO_CCM CONFIG_CRYPTO_AEAD CONFIG_CRYPTO_CMAC
为了获得可工作的系统,需要启用某些配置选项:
--enable-library
启用 Bluetooth 库的安装
默认情况下不再安装 Bluetooth 库。
用户界面或命令行工具不再需要已安装的 Bluetooth 库。
此选项是为仍然依赖该库的旧版第三方应用程序提供的。
当启用库安装时,最好为其使用单独的 bluez-library 或 libbluetooth 软件包。
--disable-tools
禁用蓝牙工具的支持
默认情况下会构建并安装蓝牙工具。对于生产系统,不需要这些工具,
此选项允许禁用它们以节省构建时间和磁盘空间。
当选择工具时,最好为其使用单独的 bluez-tools 软件包。
--disable-cups
禁用 CUPS 打印机后端的支持
默认情况下会构建并安装 CUPS 打印机后端。对于不需要通过蓝牙打印的系统,
此选项允许禁用它。
当选择 CUPS 后端时,最好为其使用单独的 bluez-cups 软件包。
--disable-monitor
禁用蓝牙监视器工具的支持
默认情况下启用监视器工具。它提供 HCI 级别的跟踪和调试支持。
对于不需要任何跟踪或调试功能的系统,此选项允许禁用它。
监视器工具应放在主软件包中,与守护进程一起。它具有普遍实用性。
--disable-client
禁用命令行客户端的支持
默认情况下启用命令行客户端并使用 readline 库。对于通过其他方式配置 BlueZ 的特定系统,
可以禁用命令行客户端并移除对 readline 的依赖。
客户端应放在主软件包中,与守护进程一起。它具有普遍实用性。
--disable-systemd
禁用与 systemd 的集成
默认情况下启用并安装与 systemd 的集成。这为所有基于 systemd 的发行版提供了最佳集成。
此选项是为不支持 systemd 的发行版提供的。在这种情况下,与 init 系统的所有集成都由软件包负责。
--disable-a2dp
禁用 A2DP 配置文件
默认情况下 bluetoothd 使用内置插件支持 A2DP 配置文件,此选项禁用它。
此选项是为没有任何音频功能的发行版提供的。
--disable-avrcp
禁用 AVRCP 配置文件
默认情况下 bluetoothd 使用内置插件支持 AVRCP 配置文件,此选项禁用它。
此选项是为没有任何音频功能的发行版提供的。
--disable-network
禁用 PANU、NAP、GN 配置文件
默认情况下 bluetoothd 使用内置插件支持 PANU、NAP 和 GN 配置文件,此选项禁用它。
此选项是为没有任何网络功能的发行版提供的。
--disable-hid
禁用 HID 配置文件
默认情况下 bluetoothd 使用内置插件支持 HID 配置文件,此选项禁用它。
此选项是为没有任何输入功能的发行版提供的。
--disable-hog
禁用 HoG 配置文件
默认情况下 bluetoothd 使用内置插件支持 HoG 配置文件,此选项禁用它。
此选项是为没有任何输入功能的发行版提供的。
--enable-testing
启用测试工具
默认情况下,仅用于测试模拟的工具被禁用。此选项可用于启用它们。
不建议为生产系统启用此选项。这些工具可能包含依赖于特定环境或开发中内核功能的测试。
--enable-experimental
启用实验性工具
默认情况下,所有仍在开发中的工具都被禁用。此选项可用于启用它们。
不建议为生产系统启用此选项。实验性工具的行为不稳定,可能仍会发生变化。
--enable-deprecated
启用已弃用的工具
默认情况下,所有不再维护的工具都被禁用。此选项可用于启用它们。
不建议为生产系统启用此选项。已弃用工具的行为可能不稳定,或者根本无法正常工作。
--enable-external-plugins
启用对外部插件的支持
默认情况下,不支持 bluetoothd 和 obexd 的外部插件,因此被禁用。
外部插件需要访问上述守护进程中内部的、未记录的且无版本管理的 API。因此它们可能随时失效。
如果你有这样的插件,请启用此选项,并积极与社区合作,使该插件成为上游 bluez 项目的一部分。
--enable-nfc
此选项启用 NFC 配对支持。
默认情况下与 neard 的集成被禁用,此选项允许在支持 neard 的系统上启用它。
该插件内置于 bluetoothd 中,因此不需要单独打包。
--enable-midi
此选项通过 ALSA Sequencer 启用 MIDI 支持。
默认情况下 midi 插件被禁用,因为它仍被视为实验性功能。当 bluetoothd 为每个支持 MIDI GATT 主要服务的已连接设备创建新的 ALSA Sequencer 客户端和端口时,该插件将生效。
该插件内置于 bluetoothd 中,因此不需要单独打包。
有关在贡献 BlueZ 时使用 AI 工具的指导,请参阅: doc/coding-assistants.rst
不要将疑似漏洞报告到邮件列表。报告流程在以下文件中描述: SECURITY.md
邮件列表: [email protected]
有关项目的更多信息,请访问 BlueZ 网站: http://www.bluez.org