Set the permission of CCC descriptior properly
[platform/upstream/bluez.git] / README
1 BlueZ - Bluetooth protocol stack for Linux
2 ******************************************
3
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>
7
8
9 Compilation and installation
10 ============================
11
12 In order to compile Bluetooth utilities you need following software packages:
13         - GCC compiler
14         - GLib library
15         - D-Bus library
16         - udev library (optional)
17         - readline (command line clients)
18
19 To configure run:
20         ./configure --prefix=/usr --mandir=/usr/share/man \
21                                 --sysconfdir=/etc --localstatedir=/var
22
23 Configure automatically searches for all required components and packages.
24
25 To compile and install run:
26         make && make install
27
28
29 Embedded Linux library
30 ======================
31
32 In order to compile mesh support and test client utility the development
33 version of Embedded Linux library is required to be present. The development
34 repositories can be found here:
35
36         git://git.kernel.org/pub/scm/libs/ell/ell.git
37         https://kernel.googlesource.com/pub/scm/libs/ell/ell.git
38
39 The build systems requires that the Embedded Linux library source code
40 is available on the same top level directory as the source code:
41
42         .
43         |--- ell
44         |    |--- ell
45         |    `--- unit
46         `--- bluez
47              |--- src
48              `--- tools
49
50 It is not required to build or install Embedded Linux library. The build
51 will happen when building the binaries and it will then be linked internally.
52
53 When using --enable-external-ell build option, it is not required that the
54 Embedded Linux library source code is available in the top level directory.
55
56 When neither --enable-mesh nor --enable-btpclient is specified, then this
57 part is irrelevant and Embedded Linux library is not required.
58
59
60 Kernel Build Options (for Mesh)
61 ===============================
62
63 The Mesh daemon uses kernel provided crypto utilities to perform security
64 functions required of Bluetooth Mesh. Many standard distributions currently
65 enable all required crypto features, but a few notable distributions do
66 not.
67
68 If Mesh Cryptography is not working, the following configuration options
69 may need to be enabled, and the kernel rebuilt.
70
71 1. A minimum of kernel version 4.9 or later is required
72
73 2. The kernel must at a minimum have the following .config options turned on:
74         CONFIG_CRYPTO_USER
75         CONFIG_CRYPTO_USER_API
76         CONFIG_CRYPTO_USER_API_AEAD
77         CONFIG_CRYPTO_USER_API_HASH
78
79         CONFIG_CRYPTO_AES
80         CONFIG_CRYPTO_CCM
81         CONFIG_CRYPTO_AEAD
82         CONFIG_CRYPTO_CMAC
83
84
85 Configuration and options
86 =========================
87
88 For a working system, certain configuration options need to be enabled:
89
90         --enable-library
91
92                 Enable installation of Bluetooth library
93
94                 By default the Bluetooth library is no longer installed.
95
96                 The user interfaces or command line utilities do not
97                 require an installed Bluetooth library anymore. This
98                 option is provided for legacy third party applications
99                 that still depend on the library.
100
101                 When the library installation is enabled, it is a good
102                 idea to use a separate bluez-library or libbluetooth
103                 package for it.
104
105         --disable-tools
106
107                 Disable support for Bluetooth utilities
108
109                 By default the Bluetooth utilities are built and also
110                 installed. For production systems the tools are not
111                 needed and this option allows to disable them to save
112                 build time and disk space.
113
114                 When the tools are selected, it is a good idea to
115                 use a separate bluez-tools package for them.
116
117         --disable-cups
118
119                 Disable support for CUPS printer backend
120
121                 By default the printer backend for CUPS is build and
122                 also installed. For systems that do not require printing
123                 over Bluetooth, this options allows to disable it.
124
125                 When the CUPS backend is selected, it is a good idea to
126                 use a separate bluez-cups package for it.
127
128         --disable-monitor
129
130                 Disable support for the Bluetooth monitor utility
131
132                 By default the monitor utility is enabled. It provides
133                 support for HCI level tracing and debugging. For systems
134                 that don't require any kind of tracing or debugging
135                 capabilities, this options allows to disable it.
136
137                 The monitor utility should be placed in the main package
138                 along with the daemons. It is universally useful.
139
140         --disable-client
141
142                 Disable support for the command line client
143
144                 By default the command line client is enabled and uses the
145                 readline library. For specific systems where BlueZ is
146                 configured by other means, the command line client can be
147                 disabled and the dependency on readline is removed.
148
149                 The client should be placed in the main package along
150                 with the daemons. It is universally useful.
151
152         --disable-systemd
153
154                 Disable integration with systemd
155
156                 By default the integration with systemd is enabled and
157                 installed. This gives the best integration into all
158                 distributions based on systemd.
159
160                 This option is provided for distributions that do not
161                 support systemd. In that case all integration with the
162                 init system is up to the package.
163
164         --enable-testing
165
166                 Enable testing tools
167
168                 By default tools used only for testing emulation are disabled.
169                 This option can be used to enable them.
170
171                 It is not recommended to enable this option for production
172                 systems. These tools may contain tests that depend on specific
173                 environment or kernel features in development.
174
175         --enable-experimental
176
177                 Enable experimental tools
178
179                 By default all tools that are still in development
180                 are disabled. This option can be used to enable them.
181
182                 It is not recommended to enable this option for production
183                 systems. The behavior of the experimental tools is unstable
184                 and might still change.
185
186         --enable-nfc
187
188                 This option enable NFC pairing support.
189
190                 By default the integration with neard is disabled, this gives
191                 the option to enable it in system where neard is supported.
192
193                 The plugin is built into bluetoothd therefore it does not need
194                 to be package separately.
195
196         --enable-sap
197
198                 This option enable SAP profile using sap plugin.
199
200                 By default sap plugin is disabled since it requires tight
201                 integration with systems and is very rarely required.
202
203                 The plugin is built into bluetoothd therefore it does not need
204                 to be package separately.
205
206         --disable-a2dp
207
208                 Disable A2DP profile
209
210                 By default bluetoothd supports A2DP profile using a built-in
211                 plugin, this option disables it.
212
213                 This option is provided for distributions that do not have any
214                 audio capabilities.
215
216         --disable-avrcp
217
218                 Disable AVRCP profile
219
220                 By default bluetoothd supports AVRCP profile using a built-in
221                 plugin, this option disables it.
222
223                 This option is provided for distributions that do not have any
224                 audio capabilities.
225
226         --disable-network
227
228                 Disable PANU, NAP, GN profiles
229
230                 By default bluetoothd supports PANU, NAP and GN profile using a
231                 built-in plugin, this option disables it.
232
233                 This option is provided for distributions that do not have any
234                 network capabilities.
235
236         --disable-hid
237
238                 Disable HID profile
239
240                 By default bluetoothd supports HID profile using a built-in
241                 plugin, this option disables it.
242
243                 This option is provided for distributions that do not have any
244                 input capabilities.
245
246         --enable-health
247
248                 This option enable health profiles.
249
250                 By default health plugin is disabled since its profiles are
251                 target for the health industry.
252
253                 The plugin is built into bluetoothd therefore it does not need
254                 to be package separately.
255
256         --enable-midi
257
258                 This option enable MIDI support via ALSA Sequencer.
259
260                 By default midi plugin is disabled since it still considered
261                 experimental. When bluetoothd will create a new ALSA Sequencer
262                 client and port for each device connected that supports the
263                 MIDI GATT primary service.
264
265                 The plugin is built into bluetoothd therefore it does not need
266                 to be package separately.
267
268 Information
269 ===========
270
271 Mailing lists:
272         linux-bluetooth@vger.kernel.org
273
274 For additional information about the project visit BlueZ web site:
275         http://www.bluez.org