LinuxCommandLibrary

bluetoothd

Manages Bluetooth devices and connections

TLDR

Start the daemon

$ bluetoothd
copy

Start the daemon, logging to stdout
$ bluetoothd [[-n|--nodetach]]
copy

Start the daemon with a specific configuration file (defaults to /etc/bluetooth/main.conf)
$ bluetoothd [[-f|--configfile]] [path/to/file]
copy

Start the daemon with verbose output to stderr
$ bluetoothd [[-d|--debug]]
copy

Start the daemon with verbose output coming from specific files in the bluetoothd or plugins source
$ bluetoothd [[-d|--debug=]][path/to/file1:path/to/file2:...]
copy

SYNOPSIS

bluetoothd [options]

PARAMETERS

-h, --help
    Show help and exit

-i, --adapter=NAME
    Select adapter name (repeatable)

-v, --version
    Print version and exit

-C, --compat
    Enable legacy compatibility mode

-d, --debug[=FILE]
    Enable verbose debug logging (optional file)

-E, --experimental
    Activate experimental features

-n, --nodetach
    Run in foreground (no daemonize)

-u, --udev
    Listen on udev control socket

-r, --release
    Release D-Bus name on exit

DESCRIPTION

bluetoothd is the core Bluetooth daemon in the Linux BlueZ protocol stack, managing all Bluetooth operations on the system.

It handles adapter initialization, device scanning and discovery, pairing, bonding, connection setup, and profile services like A2DP for audio, HSP/HFP for headsets, HID for input devices, and GATT for BLE.

The daemon communicates via D-Bus (org.bluez interface), enabling tools and desktop environments (e.g., GNOME Settings, KDE Plasma) to control Bluetooth. It supports both Classic Bluetooth and Low Energy (LE) modes, with features like LE advertising, mesh networking, and experimental capabilities.

Configuration is via /etc/bluetooth/main.conf, with per-adapter settings in /var/lib/bluetooth/. Logs go to systemd journal or a debug file. Primarily managed as a systemd service (bluetooth.service), not for direct manual runs except debugging.

CAVEATS

Avoid manual execution; use systemctl for bluetooth.service. Multiple instances conflict on D-Bus/ports. Requires kernel Bluetooth modules (btusb, bluetooth). Debug mode increases log verbosity.

CONFIGURATION

Edit /etc/bluetooth/main.conf for globals (e.g., DiscoverableTimeout).
Adapter configs in /var/lib/bluetooth/<MAC>/main.conf.

D-BUS API

System bus service org.bluez at /org/bluez. Use dbus-send or libbluetooth for apps.

LOGGING

Debug with -d; view via journalctl -u bluetooth.

HISTORY

Introduced in BlueZ 3.x (~2004) by Marcel Holtmann's team. Evolved with BlueZ 5.x for modern BLE/GATT support; current in BlueZ 5.70+ with systemd integration since ~2010.

SEE ALSO

Copied to clipboard