How to Enable Bluetooth Audio on Arch Linux

Learn how to enable Bluetooth audio on Arch Linux.

Bluetooth audio has become a staple of modern computing, providing a wireless way to connect headphones, speakers, and other audio peripherals. On Arch Linux, enabling Bluetooth audio might not be as straightforward as on mainstream distributions like Ubuntu or Fedora, but with a bit of guidance, it’s easy to get a reliable setup. This guide walks you through installing the necessary packages, enabling services, pairing devices, and troubleshooting common issues.

Why Bluetooth Audio May Not Work Out-of-the-Box

Unlike some user-friendly distributions, Arch Linux follows the KISS (Keep It Simple, Stupid) philosophy. That means you start with a minimal system and install only what you need. This also means that Bluetooth support—especially for audio—is not pre-installed. You need to explicitly set up Bluetooth, install audio backend support (like PipeWire or PulseAudio), and configure things manually.


Step 1: Install Required Packages

Depending on your audio server (PipeWire or PulseAudio), the packages differ slightly. We’ll cover both options.

Basic Bluetooth Stack

First, install the essential Bluetooth stack packages:

sudo pacman -S bluez bluez-utils
  • bluez: The official Bluetooth protocol stack for Linux.
  • bluez-utils: Includes tools like bluetoothctl for managing devices.

Install a Bluetooth Manager (Optional)

If you use a desktop environment like GNOME, KDE, or XFCE, a GUI Bluetooth manager can simplify things:

  • GNOME: gnome-bluetooth
  • KDE: bluedevil
  • XFCE: blueman

Install one as needed:

sudo pacman -S blueman

Step 2: Enable and Start Bluetooth Service

Enable the Bluetooth service to start at boot and then start it immediately:

sudo systemctl enable bluetooth.service
sudo systemctl start bluetooth.service

Check the status:

systemctl status bluetooth.service

It should show as “active (running).”


Step 3: Choose Your Audio System

Most modern Arch Linux users use either PipeWire (recommended) or PulseAudio as their audio backend.

PipeWire is the modern replacement for PulseAudio and JACK, supporting Bluetooth audio out-of-the-box.

Install PipeWire and Bluetooth Support

sudo pacman -S pipewire pipewire-audio pipewire-pulse pipewire-alsa pipewire-jack wireplumber

Then install the Bluetooth modules:

sudo pacman -S pipewire-bluetooth

Ensure wireplumber is enabled:

systemctl --user enable wireplumber.service
systemctl --user start wireplumber.service

Note: If you’re already using PipeWire with your DE, just ensure pipewire-bluetooth is installed.

Option B: PulseAudio (Legacy)

If you prefer PulseAudio or have compatibility reasons:

sudo pacman -S pulseaudio pulseaudio-bluetooth

Restart PulseAudio:

pulseaudio -k
pulseaudio --start

Step 4: Pair and Connect a Bluetooth Audio Device

You can now pair and connect a Bluetooth audio device using the command line or GUI.

Using bluetoothctl (CLI)

  1. Launch the Bluetooth control tool:
bluetoothctl
  1. Turn the controller on:
power on
  1. Make the system discoverable and pairable:
agent on
default-agent
scan on
  1. Wait for your device to appear (you’ll see a MAC address like XX:XX:XX:XX:XX:XX). Then:
pair XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
  1. Exit:
exit

Using a GUI (Blueman or Others)

  1. Launch Blueman from your application menu.
  2. Click Search to discover devices.
  3. Right-click your device → PairConnect to Audio Sink.

If the connection fails, check that your device supports A2DP or HSP/HFP profiles.


Step 5: Switch Audio Output to Bluetooth Device

Once connected, you need to switch your audio output.

Using PulseAudio Volume Control (pavucontrol)

Install if needed:

sudo pacman -S pavucontrol

Launch it:

pavucontrol

Go to the Playback and Output Devices tabs. Select your Bluetooth headset/speaker as the output device.

Using PipeWire with KDE/GNOME

Use the built-in audio settings in GNOME or KDE to switch output. Your device should appear once connected.


Step 6: Set Bluetooth Audio Profile (A2DP / HSP)

Bluetooth audio devices support multiple profiles:

  • A2DP (Advanced Audio Distribution Profile): High-quality audio (stereo), no microphone.
  • HSP/HFP (Headset Profile): Lower-quality audio, includes mic input.

Set the profile using:

PulseAudio

pactl list cards

Then set the profile:

pactl set-card-profile <card_name> a2dp_sink

PipeWire

PipeWire handles this automatically, but you can still change it using:

pw-cli

Or using pavucontrol.


Step 7: Persist Settings Across Reboots

  • If your Bluetooth device doesn’t auto-connect, consider writing a systemd service or using blueman’s auto-connect option.
  • Trusted devices often auto-connect if powered on.

Troubleshooting Bluetooth Audio on Arch Linux

Bluetooth audio can be finicky. Here are common problems and solutions:

Problem 1: Device Doesn’t Connect

  • Make sure your device is in pairing mode.
  • Use bluetoothctl to manually pair and connect.
  • Check journalctl -xe for logs.

Problem 2: No Sound After Connecting

  • Use pavucontrol to select the correct output.
  • Switch to A2DP profile for high-quality output.

Problem 3: Poor Audio Quality (HSP instead of A2DP)

  • Use pactl set-card-profile or GUI tools to change the profile.
  • Some devices default to HSP if the mic is in use.

Problem 4: Audio Cuts Out or Stutters

  • Interference from Wi-Fi? Try switching Wi-Fi to 5GHz.
  • Disable power-saving features on Bluetooth:

Create a udev rule at /etc/udev/rules.d/99-bluetooth.rules:

ACTION=="add", SUBSYSTEM=="usb", ATTR{product}=="Bluetooth Radio", ATTR{power/control}="on"

Reload udev:

sudo udevadm control --reload

Advanced Tips

Auto-connect Headphones at Boot

Create a script in ~/.config/systemd/user/bluetooth-autoconnect.service:

[Unit]
Description=Auto-connect Bluetooth headset
After=bluetooth.target

[Service]
ExecStart=/usr/bin/bluetoothctl connect XX:XX:XX:XX:XX:XX

[Install]
WantedBy=default.target

Enable it:

systemctl --user enable bluetooth-autoconnect.service

Using BlueALSA (Alternative Audio Stack)

If you’re running a minimal setup or prefer ALSA-only environments (no PulseAudio or PipeWire), you can use BlueALSA. It’s more complex and less recommended unless you know what you’re doing.


Conclusion

Bluetooth audio on Arch Linux is highly customizable, giving you fine-grained control over how your system handles wireless audio. While it requires more manual configuration than other distributions, the results are reliable once everything is set up. With PipeWire becoming the de facto audio system on Linux, enabling Bluetooth audio has never been more accessible on Arch.

Whether you prefer the command line or a GUI, you now have the tools to connect, manage, and optimize your Bluetooth audio devices on Arch Linux. Enjoy the wireless freedom!