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 bluetoothIf Bluetooth is disabled:
sudo rfkill unblock bluetooth
sudo systemctl restart bluetoothUsing bluetoothctl
sudo bluetoothctlCommon 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 # ExitCommon Issues
Cannot discover devices
# Confirm the Bluetooth adapter is powered on
bluetoothctl power on
# Rescan
sudo bluetoothctl
scan onIf devices are still not found, check the kernel log:
sudo dmesg | grep -i bluetooth
sudo dmesg | grep -i "hci\|btusb"Pairing failure
- 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-
Some devices require entering a PIN code, typically
0000or1234 -
Clear the Bluetooth cache:
sudo rm -rf /var/lib/bluetooth/*
sudo systemctl restart bluetoothPaired but cannot connect
# Trust the device first
sudo bluetoothctl
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XXIf you get “Failed to connect: org.bluez.Error.Failed”:
# Restart the Bluetooth stack
sudo systemctl restart bluetooth
sudo modprobe -r btusb && sudo modprobe btusbFrequent disconnections after connecting
# View Bluetooth logs
journalctl -u bluetooth -f
# Disable Bluetooth power management
sudo nano /etc/bluetooth/main.confAdd or modify in the [Policy] section:
[Policy]
AutoEnable=true
[General]
FastConnectable=trueRestart the service:
sudo systemctl restart bluetoothPoor 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 connectionsUpgrading BlueZ
Ubuntu 26.04 comes with the BlueZ Bluetooth stack. Check the version:
bluetoothd --versionIf you encounter compatibility issues, install a newer version (if available):
sudo apt update
sudo apt install --only-upgrade bluezUSB 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 adapterBluetooth Log Debugging
# Enable verbose logging
sudo nano /etc/systemd/system/bluetooth.service.d/override.conf[Service]
ExecStart=
ExecStart=/usr/libexec/bluetooth/bluetoothd -dsudo systemctl daemon-reload
sudo systemctl restart bluetooth
journalctl -u bluetooth -f