Introduction to BlueZ
        
        
          The BlueZ package contains the
          Bluetooth protocol stack for Linux.
        
        
          ![[Note]](../images/note.png) 
          
            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.16.2, GLib-2.86.1, and libical-3.0.20
        
        
          Recommended
        
        
          docutils-0.22.2 (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  \
            --enable-library      \
            --disable-systemd     &&
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.84 &&
install -v -m644 doc/*.txt /usr/share/doc/bluez-5.84
        
          Install a missing D-Bus service as the root user:
        
        install -m644 ./obexd/src/org.bluez.obex.service /usr/share/dbus-1/services
       
      
        
          Command Explanations
        
        
          --enable-library: This
          switch enables building the BlueZ
          4 compatibility library which is required by some applications.
        
        
          --disable-systemd: This
          switch is needed because systemd
          is not part of LFS/BLFS. If you are using systemd, remove this
          switch.
        
        
          --disable-manpages: This switch
          disables generating the manual pages. Add this switch if you don't
          have docutils-0.22.2 installed.
        
        
          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 install. Additionally, there
            are three supplementary configuration files.
            /etc/sysconfig/bluetooth is installed as a part of the boot
            script below. In addition, you optionally can install the
            following, 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
         
        
          
            Boot Script
          
          
            To automatically start the bluetoothd daemon when the
            system is rebooted, install the /etc/rc.d/init.d/bluetooth bootscript from the
            blfs-bootscripts-20250225 package.
          
          make install-bluetooth
         
       
      
        
          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.84
            
           
         
        
          
            Short Descriptions
          
          
            
              
              
            
            
              
                | 
                    bluemoon
                   | 
                    is a Bluetooth 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
                   |