BlueZ-5.70
Introduction to BlueZ
The BlueZ package contains the
Bluetooth protocol stack for Linux.
Note
Development versions of BLFS may not build or run
some packages properly if LFS or dependencies have been updated
since the most recent stable versions of the books.
Package Information
BlueZ Dependencies
Required
dbus-1.14.10,
GLib-2.78.1, and
libical-3.0.17
Optional
docutils-0.20.1 (to generate man pages)
Kernel Configuration
If you are building this package to use bluetooth devices (rather than as a
build dependency), enable the following options in the kernel configuration,
also the options in the “Cryptographic API” section if
you intend to run the tests, and recompile the kernel if necessary:
General setup --->
# If it is disabled, [TIMERFD] and [EVENTFD] will be hidden and
# enabled implicitly. We DO NOT recommend to enable [EXPERT]
# unless you are really an expert user:
[ /*] Configure standard kernel features (expert users) ---> [EXPERT]
[*] Enable timerfd() system call [TIMERFD]
[*] Enable eventfd() system call [EVENTFD]
[*] Networking support ---> [NET]
<*/M> Bluetooth subsystem support ---> [BT]
[*] Bluetooth Classic (BR/EDR) features [BT_BREDR]
<*/M> RFCOMM protocol support [BT_RFCOMM]
[*] RFCOMM TTY support [BT_RFCOMM_TTY]
<*/M> BNEP protocol support [BT_BNEP]
[*] Multicast filter support [BT_BNEP_MC_FILTER]
[*] Protocol filter support [BT_BNEP_PROTO_FILTER]
<*/M> HIDP protocol support [BT_HIDP]
Bluetooth device drivers --->
# Select the appropriate drivers for your bluetooth hardware.
# There are more vendor-specific drivers not listed here:
< /*/M> HCI USB driver [BT_HCIBTUSB]
< /*/M> HCI SDIO driver [BT_HCIBTSDIO]
< /*/M> HCI UART driver [BT_HCIUART]
<*/M> RF switch subsystem support ---> [RFKILL]
-*- Cryptographic API ---> [CRYPTO]
Crypto core or helper --->
<*/M> Userspace cryptographic algorithm configuration [CRYPTO_USER]
Block ciphers --->
<*/M> AES (Advanced Encryption Standard) [CRYPTO_AES]
AEAD (authenticated encryption with associated data) ciphers --->
<*/M> CCM (Counter with Cipher Block Chaining-MAC) [CRYPTO_CCM]
Hashes, digests, and MACs --->
<*/M> CMAC (Cipher-based MAC) [CRYPTO_CMAC]
Userspace interface --->
<*/M> Hash algorithms [CRYPTO_USER_API_HASH]
<*/M> Symmetric key cipher algorithms [CRYPTO_USER_API_SKCIPHER]
<*/M> AEAD cipher algorithms [CRYPTO_USER_API_AEAD]
Installation of BlueZ
Install BlueZ by running the following
commands:
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-manpages \
--enable-library &&
make
To test the results, issue: make check
.
Now, as the root
user:
make install &&
ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin
Install the main configuration file as the
root
user:
install -v -dm755 /etc/bluetooth &&
install -v -m644 src/main.conf /etc/bluetooth/main.conf
If desired, install the API documentation as the
root
user:
install -v -dm755 /usr/share/doc/bluez-5.70 &&
install -v -m644 doc/*.txt /usr/share/doc/bluez-5.70
Command Explanations
--disable-manpages
: This switch disables generating
the manual pages because of the reliance on 'rst2man' in docutils. Remove
this switch if you have docutils-0.20.1 installed
and wish to generate the manual pages.
--enable-library
: This switch enables building the
BlueZ 4 compatibility library which is required by
some applications.
ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin:
This command makes access to the bluetooth daemon more convenient.
Configuring BlueZ
Configuration Files
/etc/bluetooth/main.conf
is installed automatically
during the installation. Additionally, there are two supplementary
configuration files. You can optionally install the following files
as the root
user:
cat > /etc/bluetooth/rfcomm.conf << "EOF"
# Start rfcomm.conf
# Set up the RFCOMM configuration of the Bluetooth subsystem in the Linux kernel.
# Use one line per command
# See the rfcomm man page for options
# End of rfcomm.conf
EOF
cat > /etc/bluetooth/uart.conf << "EOF"
# Start uart.conf
# Attach serial devices via UART HCI to BlueZ stack
# Use one line per device
# See the hciattach man page for options
# End of uart.conf
EOF
Systemd Bluez Services
To start the bluetoothd daemon at boot,
enable the previously installed systemd unit by
running the following command as the
root
user:
systemctl enable bluetooth
To start the obexd daemon for a user session (to
support some Bluetooth programs using it), enable the previously
installed systemd unit for all users by running the following command
as the root
user:
systemctl enable --global obex
Note
Systemd will start the Bluetooth daemon
only when a bluetooth device is detected on the system.
Contents
Installed Programs:
bluemoon,
bluetoothctl,
bluetoothd (symlink),
btattach,
btmon,
hex2hcd,
l2ping,
l2test,
mpris-proxy, and
rctest
Installed Library:
libbluetooth.so
Installed Directories:
/etc/bluetooth,
/usr/{include,libexec}/bluetooth, and
/usr/share/doc/bluez-5.70
Short Descriptions
bluemoon |
is a Bluemoon configuration utility
|
bluetoothctl |
is the interactive Bluetooth control program
|
bluetoothd |
is the Bluetooth daemon
|
btmon |
provides access to the Bluetooth subsystem monitor
infrastructure for reading HCI traces
|
hex2hcd |
is used to convert a file needed by Broadcom devices
to hcd (Broadcom bluetooth firmware) format
|
l2ping |
is used to send a L2CAP echo request to the Bluetooth MAC
address given in dotted hex notation
|
l2test |
is a L2CAP testing program
|
rctest |
is used to test RFCOMM communications on the
Bluetooth stack
|
libbluetooth.so
|
contains the BlueZ 4 API functions
|