Cannot disable bluetooth

Hi everyone,

I have a brand new Lenovo Thinkpad T14 Gen 5 (specs: Intel Core Ultra 5 135U, 64GB RAM) running Fedora 42 with the following wifi module:

00:14.3 Network controller [0280]: Intel Corporation Meteor Lake PCH CNVi WiFi [8086:7e40] (rev 20)
	Subsystem: Intel Corporation Device [8086:0090]
	Flags: bus master, fast devsel, latency 0, IRQ 18, IOMMU group 11
	Memory at 405a704000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [c8] Power Management version 3
	Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [40] Express Root Complex Integrated Endpoint, IntMsgNum 0
	Capabilities: [80] MSI-X: Enable+ Count=16 Masked-
	Capabilities: [100] Latency Tolerance Reporting
	Capabilities: [164] Vendor Specific Information: ID=0010 Rev=0 Len=014 <?>
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi

WiFi and bluetooth are working fine, but when I disable bluetooth from GNOME shell or with systemd (systemctl stop bluetooth.service) I get some errors in the logs and the bluetooth service re-enables itself automatically. Here are the logs when I try to disable bluetooth:

dmesg:

[  326.766288] Bluetooth: hci0: Opcode 0x0c1a failed: -110
[  326.766302] Bluetooth: hci0: Error when powering off device on rfkill (-110)
[  326.766327] Bluetooth: hci0: command 0x0c1a tx timeout
[  326.766337] Bluetooth: hci0: Initiating acpi reset method

journalctl:

Jun 03 09:02:55 myhostname systemd[1]: Starting systemd-rfkill.service - Load/Save RF Kill Switch Status...
Jun 03 09:02:55 myhostname systemd[1]: Started systemd-rfkill.service - Load/Save RF Kill Switch Status.
Jun 03 09:02:55 myhostname audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='>
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Opcode 0x0c1a failed: -110
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Error when powering off device on rfkill (-110)
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: command 0x0c1a tx timeout
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Initiating acpi reset method
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/ldac
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/aptx_hd
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aptx_hd
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/aptx
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aptx
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/aac
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aac
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/opus_g
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/opus_g
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/sbc
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/sbc
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aptx_ll_1
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aptx_ll_0
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/faststream
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/faststream_duplex
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/opus_05
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/opus_05
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSink/opus_05_duplex
Jun 03 09:02:57 myhostname bluetoothd[1444]: Endpoint unregistered: sender=:1.98 path=/MediaEndpoint/A2DPSource/opus_05_duplex
Jun 03 09:02:57 myhostname dbus-broker[1441]: A security policy denied :1.4 to send method call /midi/profile:org.bluez.GattProfile1>
Jun 03 09:02:57 myhostname systemd[1]: Stopped target bluetooth.target - Bluetooth Support.
Jun 03 09:02:57 myhostname bluetoothd[1444]: Battery Provider Manager destroyed
Jun 03 09:02:57 myhostname kernel: usb 3-10: new full-speed USB device number 31 using xhci_hcd
Jun 03 09:02:57 myhostname kernel: usb 3-10: New USB device found, idVendor=8087, idProduct=0033, bcdDevice= 0.00
Jun 03 09:02:57 myhostname kernel: usb 3-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Device revision is 0
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Secure boot is enabled
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: OTP lock is enabled
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: API lock is enabled
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Debug lock is disabled
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Minimum firmware build 1 week 10 2014
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Bootloader timestamp 2022.18 buildtype 1 build 49266
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: DSM reset method type: 0x00
Jun 03 09:02:57 myhostname systemd[2566]: Reached target bluetooth.target - Bluetooth.
Jun 03 09:02:57 myhostname systemd[1]: Reached target bluetooth.target - Bluetooth Support.
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Found device firmware: intel/ibt-0180-0041.sfi
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Boot Address: 0x100800
Jun 03 09:02:57 myhostname kernel: Bluetooth: hci0: Firmware Version: 20-49.24
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Waiting for firmware download to complete
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Firmware loaded in 1447620 usecs
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Waiting for device to boot
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Device booted in 42026 usecs
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-0180-0041.ddc
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Applying Intel DDC parameters completed
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Firmware timestamp 2024.48 buildtype 1 build 3604
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Firmware SHA1: 0xc115e35a
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Fseq status: Success (0x00)
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Fseq executed: 00.00.03.94
Jun 03 09:02:59 myhostname kernel: Bluetooth: hci0: Fseq BT Top: 00.00.03.94
Jun 03 09:02:59 myhostname kernel: Bluetooth: MGMT ver 1.23
Jun 03 09:02:59 myhostname bluetoothd[1444]: Battery Provider Manager created

Also any other tip that can help with the huge battery drain when not pluggen in is highly appreciated :slight_smile:

I have this very same problem with Thinkpad P16s Gen 3.

Bluetooth disabling worked with kernel 6.13 and problem started with 6.14. Hopefully drivers/platform/x86/thinkpad_acpi.c changes in 6.15 solves the problem.

You can disable bluetooth with “rfkill block bluetooth-device-id” (run rfkill for both bluetooth device ids).

Bluetooth needs a fraction of the power that WiFi requires, so disabling it should not make a big change in battery drain. GPU and CPU are the big power consumers. Most systems have settings to conserve power, but it is not unusual for that to fail with newer kernels. Is your vendor UEFI/BIOS fully updated?

systemctl stop bluetooth.service    
systemctl disable bluetooth.service
systemctl mask bluetooth.service

Thanks for the workaround. Hopefully it will be fixed in next kernel release.

Yes, BIOS/UEFI and EC are fully updated through fwupd. Laptop model is rather new, lets see if newer kernels will improve things.