Bluetooth a2dp not working

I have a problem with using bluetooth. When i connect my qudelix 5k to my laptop its configured as a headset head unit. I cant get a2dp working.

pactl list cards shows me:

Card #102
        Name: bluez_card.98_8E_79_00_6D_7B
        Driver: module-bluez5-device.c
        Owner Module: n/a
        Properties:
                api.bluez5.address = "98:8E:79:00:6D:7B"
                api.bluez5.class = "0x240418"
                api.bluez5.connection = "disconnected"
                api.bluez5.device = ""
                api.bluez5.icon = "audio-headphones"
                api.bluez5.path = "/org/bluez/hci0/dev_98_8E_79_00_6D_7B"
                bluez5.auto-connect = "[ hfp_hf hsp_hs a2dp_sink ]"
                bluez5.profile = "off"
                device.alias = "Qudelix-5K"
                device.api = "bluez5"
                device.bus = "bluetooth"
                device.description = "Qudelix-5K"
                device.form_factor = "headphone"
                device.icon_name = "audio-headphones-bluetooth"
                device.name = "bluez_card.98_8E_79_00_6D_7B"
                device.product.id = "0xffff"
                device.string = "98:8E:79:00:6D:7B"
                device.vendor.id = "bluetooth:000a"
                media.class = "Audio/Device"
                factory.id = "14"
                client.id = "33"
                object.id = "74"
                object.serial = "102"
        Profiles:
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
                headset-head-unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 1, available: yes)
                headset-head-unit-cvsd: Headset Head Unit (HSP/HFP, codec CVSD) (sinks: 1, sources: 1, priority: 2, available: yes)
                headset-head-unit-msbc: Headset Head Unit (HSP/HFP, codec mSBC) (sinks: 1, sources: 1, priority: 3, available: yes)
        Active Profile: headset-head-unit-msbc
        Ports:
                headphone-hf-input: Handsfree (type: Headphones, priority: 0, latency offset: 0 usec, available)
                        Properties:
                                port.type = "headphones"
                        Part of profile(s): headset-head-unit, headset-head-unit-cvsd, headset-head-unit-msbc
                headphone-hf-output: Handsfree (type: Headphones, priority: 0, latency offset: 0 usec, available)
                        Properties:
                                port.type = "headphones"
                        Part of profile(s): headset-head-unit, headset-head-unit-cvsd, headset-head-unit-msbc

switching to a2dp via pactl set-card-profile 102 a2dp_sink give me "Failure: No such entity
"

sudo systemctl status bluetooth shows:

● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: disabled)
     Active: active (running) since Tue 2023-01-03 11:27:18 CET; 37min ago
       Docs: man:bluetoothd(8)
   Main PID: 3042 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 19027)
     Memory: 1.1M
        CPU: 224ms
     CGroup: /system.slice/bluetooth.service
             └─3042 /usr/lib/bluetooth/bluetoothd

Jan 03 11:56:59 callj-latitude7285 bluetoothd[3042]: Endpoint registered: sender=:1.33 path=/MediaEndpoint/A2DPSource/faststream
Jan 03 11:56:59 callj-latitude7285 bluetoothd[3042]: Endpoint registered: sender=:1.33 path=/MediaEndpoint/A2DPSource/faststream_duplex
Jan 03 11:56:59 callj-latitude7285 bluetoothd[3042]: Endpoint registered: sender=:1.33 path=/MediaEndpoint/A2DPSink/opus_05
Jan 03 11:56:59 callj-latitude7285 bluetoothd[3042]: Endpoint registered: sender=:1.33 path=/MediaEndpoint/A2DPSource/opus_05
Jan 03 11:56:59 callj-latitude7285 bluetoothd[3042]: Endpoint registered: sender=:1.33 path=/MediaEndpoint/A2DPSink/opus_05_duplex
Jan 03 11:56:59 callj-latitude7285 bluetoothd[3042]: Endpoint registered: sender=:1.33 path=/MediaEndpoint/A2DPSource/opus_05_duplex
Jan 03 11:57:03 callj-latitude7285 bluetoothd[3042]: profiles/audio/avdtp.c:avdtp_connect_cb() connect to 98:8E:79:00:6D:7B: Connection refused (111)
Jan 03 11:57:03 callj-latitude7285 bluetoothd[3042]: sdp_extract_attr: Unknown data descriptor : 0x1e terminating
Jan 03 11:57:05 callj-latitude7285 bluetoothd[3042]: profiles/audio/avdtp.c:avdtp_connect_cb() connect to 98:8E:79:00:6D:7B: Connection refused (111)
Jan 03 11:57:07 callj-latitude7285 bluetoothd[3042]: profiles/audio/avdtp.c:avdtp_connect_cb() connect to 98:8E:79:00:6D:7B: Connection refused (111)

I don`t know what is wrong.

Have you tried working through the problem from the Arch wiki page? There are a couple of options to either set auto connection with switch-on-connect module (pulse) or enable MultiProfile support. This may help with headsets that support A2DP as well as Headset audio.

https://wiki.archlinux.org/title/bluetooth_headset#top-page

Edit: Also you can run through trying to connect using bluetoothctl as root

Yes i already worked through that page but nothing changed. I also downgraded bluez and tried bluez-git. Btw i use pipwire.

Yes i understand pipewire is pretty standard. I’m not telling you to do anything in particular. I just wondered if you tried the three specific things i mentioned.

Edit: What is your desktop?

I`m using kde plasma as desktop environment.

Have you tried bluedevil? Does it make any difference?

No makes no difference. I tried literally everthing i could find in the internet. Still confused if the problem is connected to bluez, pipewire or something different.

Did you try using bluetoothctl and remove everything and let it go through the process of finding, paring, connecting, security the whole list? Sometimes clearing it out and resetting everything helps.

Edit: Usually setting automatically connection to automatically switch works. Sometimes you need to use the buttons on the headphones.

Yes i tried that all.

Have you tried it on all usb ports individually on it’s own without anything else connected to usb that isn’t needed?

The qudelix 5k ist the bluetooth device i want to connect to my laptop. It`s a bluetooth dac/amp.

https://wiki.archlinux.org/title/PipeWire#Bluetooth_devices

I tried that too. No effect.

Hello,

It seems that your bluetooth device is not reporting available high quality codecs at all, so pa can not build any a2dp profile sink. Have you tried pairing your device with a mobile phone? Does a2dp work there?

What is the output of this command

pactl send-message /card/bluez_card.98_8E_79_00_6D_7B/bluez list-codecs

You mentioned that you are using pipewire, are you also using wireplumber? If so, try installing pipewire-media-session and reboot (it will prompt to replace wireplumber)

yay -S pipewire-media-session
1 Like

Ok i switched to pipewire-media-session and enabled automatic profile selection and pairing with bluetoothctl worked. After removing the device and switching back to wireplumber it works too. Weird but i’m happy it’s working now. Thank you for your help.

4 Likes