Skip to Content

Basic Checks

# Bluetooth service status systemctl status bluetooth # Bluetooth adapter information (hciconfig is deprecated; use bluetoothctl/btmgmt) bluetoothctl show bluetoothctl list # List all adapters # RF switch status rfkill list bluetooth

If Bluetooth is disabled:

sudo rfkill unblock bluetooth sudo systemctl restart bluetooth

Using bluetoothctl

sudo bluetoothctl

Common commands:

power on # Turn on Bluetooth agent on # Enable agent default-agent # Set as default agent scan on # Scan for devices devices # List discovered devices pair XX:XX:XX:XX:XX # Pair trust XX:XX:XX:XX:XX # Trust device connect XX:XX:XX:XX:XX # Connect info XX:XX:XX:XX:XX # View device info remove XX:XX:XX:XX:XX # Remove device quit # Exit

Common Issues

Cannot discover devices

# Confirm the Bluetooth adapter is powered on bluetoothctl power on # Rescan sudo bluetoothctl scan on

If devices are still not found, check the kernel log:

sudo dmesg | grep -i bluetooth sudo dmesg | grep -i "hci\|btusb"

Pairing failure

  1. Remove the previous pairing record and pair again:
sudo bluetoothctl remove XX:XX:XX:XX:XX:XX scan on pair XX:XX:XX:XX:XX:XX
  1. Some devices require entering a PIN code, typically 0000 or 1234

  2. Clear the Bluetooth cache:

sudo rm -rf /var/lib/bluetooth/* sudo systemctl restart bluetooth

Paired but cannot connect

# Trust the device first sudo bluetoothctl trust XX:XX:XX:XX:XX:XX connect XX:XX:XX:XX:XX:XX

If you get “Failed to connect: org.bluez.Error.Failed”:

# Restart the Bluetooth stack sudo systemctl restart bluetooth sudo modprobe -r btusb && sudo modprobe btusb

Frequent disconnections after connecting

# View Bluetooth logs journalctl -u bluetooth -f # Disable Bluetooth power management sudo nano /etc/bluetooth/main.conf

Add or modify in the [Policy] section:

[Policy] AutoEnable=true [General] FastConnectable=true

Restart the service:

sudo systemctl restart bluetooth

Poor Bluetooth headset audio quality

Bluetooth headsets may be using the SCO/HSP protocol (call mode) instead of A2DP (high quality audio).

# Check the current audio protocol wpctl status # Switch to A2DP in PipeWire # In GNOME Sound settings, select the output profile as "High Fidelity Playback (A2DP Sink)"

Bluetooth keyboard/mouse latency

hcitool is deprecated; connection parameters are now negotiated automatically by the kernel and BlueZ. To troubleshoot latency, first confirm the connection with bluetoothctl info XX:XX:XX:XX:XX:XX, then inspect/manage the adapter with btmgmt:

# View adapter info and current connections btmgmt info btmgmt con # List current connections

Upgrading BlueZ

Ubuntu 26.04 comes with the BlueZ Bluetooth stack. Check the version:

bluetoothd --version

If you encounter compatibility issues, install a newer version (if available):

sudo apt update sudo apt install --only-upgrade bluez

USB Bluetooth Adapters

If the built-in Bluetooth is problematic, you can use a USB Bluetooth adapter:

# Confirm detection lsusb | grep -i bluetooth # Load driver sudo modprobe btusb # If there are multiple adapters, list and choose which one to use bluetoothctl list # List all adapters and their MACs bluetoothctl select XX:XX:XX:XX:XX:XX # Select a specific adapter bluetoothctl power on # Power on that adapter

Bluetooth Log Debugging

# Enable verbose logging sudo nano /etc/systemd/system/bluetooth.service.d/override.conf
[Service] ExecStart= ExecStart=/usr/libexec/bluetooth/bluetoothd -d
sudo systemctl daemon-reload sudo systemctl restart bluetooth journalctl -u bluetooth -f
Last updated on