1 BlueZ - Bluetooth protocol stack for Linux
2 ******************************************
4 Copyright (C) 2000-2001 Qualcomm Incorporated
5 Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
6 Copyright (C) 2002-2010 Marcel Holtmann <marcel@holtmann.org>
9 Compilation and installation
10 ============================
12 In order to compile Bluetooth utilities you need following software packages:
16 - udev library (optional)
17 - readline (command line clients)
19 On a debian based system, this can be done by running the following command:
20 sudo apt-get build-dep bluez
24 ./configure --prefix=/usr --mandir=/usr/share/man \
25 --sysconfdir=/etc --localstatedir=/var
27 Configure automatically searches for all required components and packages.
29 To compile and install run:
33 Embedded Linux library
34 ======================
36 In order to compile mesh support and test client utility the development
37 version of Embedded Linux library is required to be present. The development
38 repositories can be found here:
40 git://git.kernel.org/pub/scm/libs/ell/ell.git
41 https://kernel.googlesource.com/pub/scm/libs/ell/ell.git
43 The build systems requires that the Embedded Linux library source code
44 is available on the same top level directory as the source code:
54 It is not required to build or install Embedded Linux library. The build
55 will happen when building the binaries and it will then be linked internally.
57 When using --enable-external-ell build option, it is not required that the
58 Embedded Linux library source code is available in the top level directory.
60 When neither --enable-mesh nor --enable-btpclient is specified, then this
61 part is irrelevant and Embedded Linux library is not required.
64 Kernel Build Options (for Mesh)
65 ===============================
67 The Mesh daemon uses kernel provided crypto utilities to perform security
68 functions required of Bluetooth Mesh. Many standard distributions currently
69 enable all required crypto features, but a few notable distributions do
72 If Mesh Cryptography is not working, the following configuration options
73 may need to be enabled, and the kernel rebuilt.
75 1. A minimum of kernel version 4.9 or later is required
77 2. The kernel must at a minimum have the following .config options turned on:
79 CONFIG_CRYPTO_USER_API
80 CONFIG_CRYPTO_USER_API_AEAD
81 CONFIG_CRYPTO_USER_API_HASH
82 CONFIG_CRYPTO_USER_API_SKCIPHER
90 Configuration and options
91 =========================
93 For a working system, certain configuration options need to be enabled:
97 Enable installation of Bluetooth library
99 By default the Bluetooth library is no longer installed.
101 The user interfaces or command line utilities do not
102 require an installed Bluetooth library anymore. This
103 option is provided for legacy third party applications
104 that still depend on the library.
106 When the library installation is enabled, it is a good
107 idea to use a separate bluez-library or libbluetooth
112 Disable support for Bluetooth utilities
114 By default the Bluetooth utilities are built and also
115 installed. For production systems the tools are not
116 needed and this option allows to disable them to save
117 build time and disk space.
119 When the tools are selected, it is a good idea to
120 use a separate bluez-tools package for them.
124 Disable support for CUPS printer backend
126 By default the printer backend for CUPS is build and
127 also installed. For systems that do not require printing
128 over Bluetooth, this options allows to disable it.
130 When the CUPS backend is selected, it is a good idea to
131 use a separate bluez-cups package for it.
135 Disable support for the Bluetooth monitor utility
137 By default the monitor utility is enabled. It provides
138 support for HCI level tracing and debugging. For systems
139 that don't require any kind of tracing or debugging
140 capabilities, this options allows to disable it.
142 The monitor utility should be placed in the main package
143 along with the daemons. It is universally useful.
147 Disable support for the command line client
149 By default the command line client is enabled and uses the
150 readline library. For specific systems where BlueZ is
151 configured by other means, the command line client can be
152 disabled and the dependency on readline is removed.
154 The client should be placed in the main package along
155 with the daemons. It is universally useful.
159 Disable integration with systemd
161 By default the integration with systemd is enabled and
162 installed. This gives the best integration into all
163 distributions based on systemd.
165 This option is provided for distributions that do not
166 support systemd. In that case all integration with the
167 init system is up to the package.
173 By default tools used only for testing emulation are disabled.
174 This option can be used to enable them.
176 It is not recommended to enable this option for production
177 systems. These tools may contain tests that depend on specific
178 environment or kernel features in development.
180 --enable-experimental
182 Enable experimental tools
184 By default all tools that are still in development
185 are disabled. This option can be used to enable them.
187 It is not recommended to enable this option for production
188 systems. The behavior of the experimental tools is unstable
189 and might still change.
193 This option enable NFC pairing support.
195 By default the integration with neard is disabled, this gives
196 the option to enable it in system where neard is supported.
198 The plugin is built into bluetoothd therefore it does not need
199 to be package separately.
203 This option enable SAP profile using sap plugin.
205 By default sap plugin is disabled since it requires tight
206 integration with systems and is very rarely required.
208 The plugin is built into bluetoothd therefore it does not need
209 to be package separately.
215 By default bluetoothd supports A2DP profile using a built-in
216 plugin, this option disables it.
218 This option is provided for distributions that do not have any
223 Disable AVRCP profile
225 By default bluetoothd supports AVRCP profile using a built-in
226 plugin, this option disables it.
228 This option is provided for distributions that do not have any
233 Disable PANU, NAP, GN profiles
235 By default bluetoothd supports PANU, NAP and GN profile using a
236 built-in plugin, this option disables it.
238 This option is provided for distributions that do not have any
239 network capabilities.
245 By default bluetoothd supports HID profile using a built-in
246 plugin, this option disables it.
248 This option is provided for distributions that do not have any
253 This option enable health profiles.
255 By default health plugin is disabled since its profiles are
256 target for the health industry.
258 The plugin is built into bluetoothd therefore it does not need
259 to be package separately.
263 This option enable MIDI support via ALSA Sequencer.
265 By default midi plugin is disabled since it still considered
266 experimental. When bluetoothd will create a new ALSA Sequencer
267 client and port for each device connected that supports the
268 MIDI GATT primary service.
270 The plugin is built into bluetoothd therefore it does not need
271 to be package separately.
277 linux-bluetooth@vger.kernel.org
279 For additional information about the project visit BlueZ web site: