Audio artifacts with bluetooth-headset when using A2DP
Meta
- Bluetooth Headset: Redmi AirDots 2
- Distribution: Arch Linux
- Bluez:
bluez-git 1:5.59.r10.g864d03727-1
(AUR) - Kernel (
uname -a
):Linux t14s 5.12.12-arch1-1 #1 SMP PREEMPT Fri, 18 Jun 2021 21:59:22 +0000 x86_64 GNU/Linux
- Pipewire:
pipewire 1:0.3.30-2
- Pipewire-Pulse:
pipewire-pulse 1:0.3.30-2
Description of Problem
Pitch of music shifts up and down (slightly); seemingly randomly. Cannot be timed and doesn't follow any predictable pattern. Happens only when using A2DP. HSP/HFP doesn't seem to have this problem.
How Reproducible
100%
Steps to Reproduce
- Connect Redmi Airdots 2
- Switch to A2DP profile
- Play some music and listen closely for a few seconds
Actual Results
Music plays with shifting pitch
Expected Results
Music plays with uniform pitch
Additional Info
- Tried with
pipewire-git
from AUR; same result. - Read somewhere, that this could be related to buffering (link not found in retrospect)
EDIT:
Changed title
EDIT 2:
As an aside: This also happened, when I used MacOS with the same set of headphones and I also don't have this issue with different headphones. However, I didn't have this issue, when using the headphones together with my iPhone. I will close this issue and just search for different headphones, if this is something no one else has experienced before or if no one has a clue on what could be wrong, as it may very well just be the hardware, that's at fault.
EDIT 3:
I don't have these issues, when using another laptop! I encounter this problem on a Lenovo ThinkPad T14s with an AMD Ryzen 7 processor. I don't however, when I use my Lenovo ThinkPad X1 Carbon 5gen, that runs on an intel i7 processor.
I tried this out with a set of different headphones and they all had weird glitches. To summarize:
- Redmi AirDots 2: Random pitch shifting
- Anker SoundCore Spirit X: Random sound-dropouts; sound slowly fades back in
- Apple AirPods Pro: Sound drops out for a split-second each 6 seconds. The 6 seconds dropout is surprisingly uniform.
I think this comes down to how the headphones handle buffering. Is it possible, that my bluetooth-card is just too week to handle A2DP? Then again, this happens on a very capable machine, while the older machine (the X1 Carbon) handles A2DP just fine. Could it be some missing kernel-modules?
$ lsmod | grep bt
btusb 69632 0
btrtl 28672 1 btusb
btbcm 16384 1 btusb
btintel 32768 1 btusb
bluetooth 724992 42 btrtl,hidp,btintel,btbcm,bnep,btusb,rfcomm
$ hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: 8C:C6:81:3F:90:70 ACL MTU: 1021:4 SCO MTU: 96:6
UP RUNNING PSCAN
RX bytes:13957417 acl:722326 sco:0 events:127641 errors:0
TX bytes:56608988 acl:127270 sco:0 commands:204 errors:0
Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: SLAVE ACCEPT
Name: 't14s'
Class: 0x6c010c
Service Classes: Rendering, Capturing, Audio, Telephony
Device Class: Computer, Laptop
HCI Version: 5.2 (0xb) Revision: 0x2576
LMP Version: 5.2 (0xb) Subversion: 0x2576
Manufacturer: Intel Corp. (2)