Skip to content

Instantly share code, notes, and snippets.

@Markismus
Forked from yejun/how_to_bluetooth.md
Created September 19, 2023 17:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Markismus/d01652190403e4475c37211bc2ed97a7 to your computer and use it in GitHub Desktop.
Save Markismus/d01652190403e4475c37211bc2ed97a7 to your computer and use it in GitHub Desktop.
Use pulseaudio as bluetooth speaker on archlinux

Install packages

  • bluez
  • bluez-utils
  • pulseaudio-bluetooth

Enable bluetooth

Edit /etc/bluetooth/main.conf, uncomment following lines

[Policy]
AutoEnable=true

Add /etc/bluetooth/audio.conf

[General]
Enable=Source,Sink,Media

Enable and start bluetooth service

sudo systemctl enable bluetooth
sudo systemctl start bluetooth

Follow this guide to connect bluetooth devices. Some devices may need explicitly trust in bluetoothctl.

Enable pulseaudio system wide

Create pulse user, it is very important add pulse to lp group which grants access to bluetooth control dbus

sudo groupadd --system pulse
sudo useradd --system -g pulse -G audio,lp --home-dir /var/run/pulse pulse
sudo groupadd --system pulse-access

Add yourself to lp and pulse-access if necessay.

Add file /etc/systemd/system/pulseaudio.service

[Unit]
Description=PulseAudio Daemon

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --log-target=journal

Edit /etc/pulse/daemon.conf, uncomment

system-instance = yes

Add these lines to /etc/pulse/system.pa

load-module module-bluetooth-discover
load-module module-bluetooth-policy

Add file /etc/pulse/client.conf

default-server = /var/run/pulse/native
autospawn = no

Enable and start pulseaudio

sudo systemctl enable pulseaudio
sudo systemctl start pulseaudio

Config alsa if necessay, here is my /etc/asound.conf

pcm.!default {
    type plug
    slave {
        pcm "hw:0,0"
    }
}

ctl.!default {
    type hw
    card 0
}

Load pulse module using pacmd

sudo PULSE_RUNTIME_PATH=/var/run/pulse -u pulse pacmd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment