asymptotic-io / bluez

Main BlueZ tree
https://bluez.github.io/bluez/
GNU General Public License v2.0
3 stars 1 forks source link

BlueZ - Bluetooth protocol stack for Linux


Copyright (C) 2000-2001 Qualcomm Incorporated Copyright (C) 2002-2003 Maxim Krasnyansky maxk@qualcomm.com Copyright (C) 2002-2010 Marcel Holtmann marcel@holtmann.org

Compilation and installation

In order to compile Bluetooth utilities you need following software packages:

To configure run: ./configure --prefix=/usr --mandir=/usr/share/man \ --sysconfdir=/etc --localstatedir=/var

Configure automatically searches for all required components and packages.

To compile and install run: make && make install

Embedded Linux library

In order to compile mesh support and test client utility the development version of Embedded Linux library is required to be present. The development repositories can be found here:

git://git.kernel.org/pub/scm/libs/ell/ell.git
https://kernel.googlesource.com/pub/scm/libs/ell/ell.git

The build systems requires that the Embedded Linux library source code is available on the same top level directory as the source code:

.
|--- ell
|    |--- ell
|    `--- unit
`--- bluez
     |--- src
     `--- tools

It is not required to build or install Embedded Linux library. The build will happen when building the binaries and it will then be linked internally.

When using --enable-external-ell build option, it is not required that the Embedded Linux library source code is available in the top level directory.

When neither --enable-mesh nor --enable-btpclient is specified, then this part is irrelevant and Embedded Linux library is not required.

Kernel Build Options (for Mesh)

The Mesh daemon uses kernel provided crypto utilities to perform security functions required of Bluetooth Mesh. Many standard distributions currently enable all required crypto features, but a few notable distributions do not.

If Mesh Cryptography is not working, the following configuration options may need to be enabled, and the kernel rebuilt.

  1. A minimum of kernel version 4.9 or later is required

  2. The kernel must at a minimum have the following .config options turned on: 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

Configuration and options

For a working system, certain configuration options need to be enabled:

--enable-library

    Enable installation of Bluetooth library

    By default the Bluetooth library is no longer installed.

    The user interfaces or command line utilities do not
    require an installed Bluetooth library anymore. This
    option is provided for legacy third party applications
    that still depend on the library.

    When the library installation is enabled, it is a good
    idea to use a separate bluez-library or libbluetooth
    package for it.

--disable-tools

    Disable support for Bluetooth utilities

    By default the Bluetooth utilities are built and also
    installed. For production systems the tools are not
    needed and this option allows to disable them to save
    build time and disk space.

    When the tools are selected, it is a good idea to
    use a separate bluez-tools package for them.

--disable-cups

    Disable support for CUPS printer backend

    By default the printer backend for CUPS is build and
    also installed. For systems that do not require printing
    over Bluetooth, this options allows to disable it.

    When the CUPS backend is selected, it is a good idea to
    use a separate bluez-cups package for it.

--disable-monitor

    Disable support for the Bluetooth monitor utility

    By default the monitor utility is enabled. It provides
    support for HCI level tracing and debugging. For systems
    that don't require any kind of tracing or debugging
    capabilities, this options allows to disable it.

    The monitor utility should be placed in the main package
    along with the daemons. It is universally useful.

--disable-client

    Disable support for the command line client

    By default the command line client is enabled and uses the
    readline library. For specific systems where BlueZ is
    configured by other means, the command line client can be
    disabled and the dependency on readline is removed.

    The client should be placed in the main package along
    with the daemons. It is universally useful.

--disable-systemd

    Disable integration with systemd

    By default the integration with systemd is enabled and
    installed. This gives the best integration into all
    distributions based on systemd.

    This option is provided for distributions that do not
    support systemd. In that case all integration with the
    init system is up to the package.

--disable-a2dp

    Disable A2DP profile

    By default bluetoothd supports A2DP profile using a built-in
    plugin, this option disables it.

    This option is provided for distributions that do not have any
    audio capabilities.

--disable-avrcp

    Disable AVRCP profile

    By default bluetoothd supports AVRCP profile using a built-in
    plugin, this option disables it.

    This option is provided for distributions that do not have any
    audio capabilities.

--disable-network

    Disable PANU, NAP, GN profiles

    By default bluetoothd supports PANU, NAP and GN profile using a
    built-in plugin, this option disables it.

    This option is provided for distributions that do not have any
    network capabilities.

--disable-hid

    Disable HID profile

    By default bluetoothd supports HID profile using a built-in
    plugin, this option disables it.

    This option is provided for distributions that do not have any
    input capabilities.

--disable-hog

    Disable HoG profile

    By default bluetoothd supports HoG profile using a built-in
    plugin, this option disables it.

    This option is provided for distributions that do not have any
    input capabilities.

--enable-testing

    Enable testing tools

    By default tools used only for testing emulation are disabled.
    This option can be used to enable them.

    It is not recommended to enable this option for production
    systems. These tools may contain tests that depend on specific
    environment or kernel features in development.

--enable-experimental

    Enable experimental tools

    By default all tools that are still in development
    are disabled. This option can be used to enable them.

    It is not recommended to enable this option for production
    systems. The behavior of the experimental tools is unstable
    and might still change.

--enable-deprecated

    Enable deprecated tools

    By defauld all tools that are no longer maintained are
    disabled. This option can be used to enable them.

    It is not recommended to enable this option for production
    systems. The behavior of the deprecated tools may be unstable
    or simply don't work anymore.

--enable-external-plugins

    Enable support for external plugins

    By default external plugins for bluetoothd and obexd are not
    supported and thus disabled.

    External plugins require access to internal, undocumented and
    unversioned API in said daemons. As such they can break at any
    time. If you have such plugins, enable this option and work
    actively with the community to make said plugin part of the
    upstream bluez project.

--enable-nfc

    This option enable NFC pairing support.

    By default the integration with neard is disabled, this gives
    the option to enable it in system where neard is supported.

    The plugin is built into bluetoothd therefore it does not need
    to be package separately.

--enable-sap

    This option enable SAP profile using sap plugin.

    By default sap plugin is disabled since it requires tight
    integration with systems and is very rarely required.

    The plugin is built into bluetoothd therefore it does not need
    to be package separately.

--enable-health

    This option enable health profiles.

    By default health plugin is disabled since its profiles are
    target for the health industry.

    The plugin is built into bluetoothd therefore it does not need
    to be package separately.

--enable-midi

    This option enable MIDI support via ALSA Sequencer.

    By default midi plugin is disabled since it still considered
    experimental. When bluetoothd will create a new ALSA Sequencer
    client and port for each device connected that supports the
    MIDI GATT primary service.

    The plugin is built into bluetoothd therefore it does not need
    to be package separately.

Information

Mailing lists: linux-bluetooth@vger.kernel.org

For additional information about the project visit BlueZ web site: http://www.bluez.org