Bluetooth audio problems on 21.04
I just got a new laptop (Lenovo ThinkBook 14s Yoga) and installed Ubuntu 21.04. My Bluetooth headphones connect and work fine for a few minutes, but then they disconnect and reconnect in HSP/HFP mode. I don't need to use the microphone so I want them to be in A2DP all the time, and the disconnects are getting very annoying.
I've tried disabling this mode a few different ways:
- in
/etc/bluetooth/audio.conf
, I added
[General]
Disable=Headset
- in the same file I've also tried
[General]
Disable=Source
[Headset]
MaxConnected=0
-
I also tried adding
Disable=Headset
to both the[General]
and[Policy]
sections in/etc/bluetooth/main.conf
. This just caused warnings in the syslog. -
I've tried this setting in
/etc/pulse/default.pa
:
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy auto_switch=false
.endif
The bluetoothd entries in syslog look like they're just coming from starting and stopping the service after changing the config files.
Jun 2 01:41:35 shiva bluetoothd[438895]: src/profile.c:ext_io_disconnected() Unable to get io data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)
Jun 2 01:41:41 shiva bluetoothd[438895]: src/profile.c:record_cb() Unable to get Headset Voice gateway SDP record: Host is down
Jun 2 01:41:42 shiva bluetoothd[438895]: profiles/audio/a2dp.c:a2dp_select_capabilities() Unable to select SEP
Jun 2 01:41:43 shiva bluetoothd[438895]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for 00:02:5B:02:17:44: Device or resource busy
Jun 2 01:41:43 shiva bluetoothd[438895]: plugins/policy.c:reconnect_timeout() Reconnecting services failed: Device or resource busy (16)
Jun 2 01:41:53 shiva bluetoothd[438895]: Terminating
Jun 2 01:41:53 shiva bluetoothd[438895]: src/profile.c:ext_io_disconnected() Unable to get io data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)
Jun 2 01:41:53 shiva bluetoothd[438895]: Endpoint unregistered: sender=:1.486 path=/MediaEndpoint/A2DPSink/sbc
Jun 2 01:41:53 shiva bluetoothd[438895]: Endpoint unregistered: sender=:1.486 path=/MediaEndpoint/A2DPSource/sbc
Jun 2 01:41:53 shiva bluetoothd[438895]: Stopping SDP server
Jun 2 01:41:53 shiva bluetoothd[438895]: Exit
Jun 2 01:41:53 shiva bluetoothd[440635]: Bluetooth daemon 5.56
Jun 2 01:41:53 shiva bluetoothd[440635]: src/main.c:check_options() Unknown key Disable for group General in /etc/bluetooth/main.conf
Jun 2 01:41:53 shiva bluetoothd[440635]: src/main.c:check_options() Unknown key Disable for group Policy in /etc/bluetooth/main.conf
Jun 2 01:41:53 shiva bluetoothd[440635]: Starting SDP server
Jun 2 01:41:53 shiva dbus-daemon[698]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.955' (uid=0 pid=440635 comm="/usr/lib/bluetooth/bluetoothd " label="unconfined")
Jun 2 01:41:53 shiva bluetoothd[440635]: Bluetooth management interface 1.19 initialized
Jun 2 01:41:53 shiva bluetoothd[440635]: Endpoint registered: sender=:1.486 path=/MediaEndpoint/A2DPSink/sbc
Jun 2 01:41:53 shiva bluetoothd[440635]: Endpoint registered: sender=:1.486 path=/MediaEndpoint/A2DPSource/sbc
Jun 2 01:42:04 shiva bluetoothd[440635]: /org/bluez/hci0/dev_00_02_5B_02_17_44/sep1/fd0: fd(41) ready
Jun 2 01:55:27 shiva bluetoothd[440635]: profiles/audio/avdtp.c:handle_unanswered_req() No reply to Start request
Jun 2 01:55:27 shiva bluetoothd[440635]: src/profile.c:ext_io_disconnected() Unable to get io data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)
None of this has worked so far and I'm not finding any other ideas in my search. Any other suggestions?
Solution 1:
This is probably related to a firmware issue you may have with Intel AX200/AX201/AX210 Bluetooth module. This is probably solved in Fedora 34 by now, but not yet on Ubuntu. You should probably copy the content of "intel" subfolder into "/lib/firmware/intel" for the BT part. Files begining with "ibt-xx" are for Intel Bluetooth ...
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1155
Solution 2:
quick command-line version:
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-20210511.tar.gz
tar xfvz linux-firmware-20210511.tar.gz
cd linux-firmware-20210511
sudo cp intel/ibt-* /lib/firmware/intel/