Skip to content

Instantly share code, notes, and snippets.

@j1cs
Forked from yejun/how_to_bluetooth.md
Last active May 22, 2020 04:10
Show Gist options
  • Save j1cs/36f688a5587c0d753e0844baaa9d2a17 to your computer and use it in GitHub Desktop.
Save j1cs/36f688a5587c0d753e0844baaa9d2a17 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 groupadd --system pulse-access
sudo useradd --system -g pulse -G audio,lp,pulse-access --home-dir /var/run/pulse pulse

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