Supports aptX, aptX-HD, aptX-LL, LDAC codecs.
Use esp-idf
branch with extra A2DP sink codecs https://github.com/cfint/esp-idf
Measure latency with jack_iodelay
.
List jack ports
jack_lsp
Latency measure script
# cat io-delay-test.sh
jack_iodelay &
sleep 1
jack_connect jack_delay:out system:playback_1
jack_connect system:capture_1 jack_delay:in
sleep 5
killall jack_iodelay
Measure latency command
PIPEWIRE_LATENCY=256/48000 ./io-delay-test.sh
Reference: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Performance#latency
Source: arch linux + libpipewire 0.3.47 + bluez 5.63 Intel 9560 Wifi/Bluetooth
Sink: ESP32 internal DAC
Codec | Latency (ms) |
---|---|
SBC | 67.056 |
SBC-XQ | 66.452 |
aptX | 72.438 |
aptX-HD | 75.102 |
aptX-LL | 42.820 |
LDAC | 60.657 |
Get template bluez-monitor.conf
from /etc/pipewire/media-session.d/
. Copy it to ~/.config/pipewire/media-session.d/
.
Sample rate:
#bluez5.default.rate = 48000
LDAC quality:
#bluez5.a2dp.ldac.quality = auto
Apply configs by restarting pipewire:
systemctl --user restart pipewire.service