Bluetooth on Thinkpad X13s (ARM) not working (Ubuntu works)

Bluetooth on Thinkpad X13s (ARM) not working (Ubuntu works)

I have installed openSuse Tumbleweed on my Thinkpad X13s and all in all it works really well.

One think that is not working is Bluetooth. This is actually mentioned in the HCL support page for the (X13s)[HCL:ThinkpadX13s - openSUSE Wiki], so it should not be a surprise.

The HCL support article mentions an upstream defect.
However, the recent Ubuntu releases (24.10/25.4) support the Thinkpad X13s really well and Bluetooth works fine. I am wondering if it might be possible to get Bluetooth work with openSuse as well.

With Tumbleweed I get no results here:

$ bluetoothctl info
Missing device address argument
No default controller available

I have collected some data that was often asked for in articles.

I am not very familiar with Bluetooth.
What is the best way to analyse what the difference in Bluetooth between openSuse and Ubuntu is and maybe get it to work?

openSuse

Kernel: 6.14.6-1-default

opensuse: sudo systemctl status bluetooth.service

● bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-05-23 13:29:03 BST; 11min ago
Invocation: bf4569d763a942a9a9c1a2383124e93a
Docs: man:bluetoothd(8)
Main PID: 1000 (bluetoothd)
Status: “Running”
Tasks: 1 (limit: 18603)
CPU: 43ms
CGroup: /system.slice/bluetooth.service
└─1000 /usr/libexec/bluetooth/bluetoothd

May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support bap plugin
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support bass plugin
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support mcp plugin
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support vcp plugin
May 23 13:29:03 localhost bluetoothd[1000]: profiles/audio/micp.c:micp_init() D-Bus experimental not enabled
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support micp plugin
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support ccp plugin
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support csip plugin
May 23 13:29:03 localhost bluetoothd[1000]: src/plugin.c:init_plugin() System does not support asha plugin
May 23 13:29:03 localhost bluetoothd[1000]: Bluetooth management interface 1.23 initialized

openSuse: lsmod | grep blue

bluetooth 864256 15 btrtl,btqca,btintel,hci_uart,btbcm,bnep
ecdh_generic 16384 1 bluetooth
rfkill 36864 8 bluetooth,cfg80211

openSuse: lspci -knn | grep Net -A3

0006:01:00.0 Network controller [0280]: Qualcomm Technologies, Inc QCNFA765 Wireless Network Adapter [17cb:1103] (rev 01)
Subsystem: Qualcomm Technologies, Inc Device [17cb:0108]
Kernel driver in use: ath11k_pci
Kernel modules: ath11k_pci

openSuse: dmesg | grep Blue

[ 5.399264] [ T681] Bluetooth: Core ver 2.22
[ 5.399559] [ T681] Bluetooth: HCI device and connection manager initialized
[ 5.399563] [ T681] Bluetooth: HCI socket layer initialized
[ 5.399566] [ T681] Bluetooth: L2CAP socket layer initialized
[ 5.399571] [ T681] Bluetooth: SCO socket layer initialized
[ 5.424545] [ T681] Bluetooth: HCI UART driver ver 2.3
[ 5.424550] [ T681] Bluetooth: HCI UART protocol H4 registered
[ 5.424551] [ T681] Bluetooth: HCI UART protocol BCSP registered
[ 5.424752] [ T681] Bluetooth: HCI UART protocol LL registered
[ 5.424756] [ T681] Bluetooth: HCI UART protocol ATH3K registered
[ 5.425049] [ T681] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 5.426021] [ T681] Bluetooth: HCI UART protocol Intel registered
[ 5.427968] [ T681] Bluetooth: HCI UART protocol Broadcom registered
[ 5.428499] [ T681] Bluetooth: HCI UART protocol QCA registered
[ 5.428503] [ T681] Bluetooth: HCI UART protocol AG6XX registered
[ 5.429144] [ T681] Bluetooth: HCI UART protocol Marvell registered
[ 5.429294] [ T681] Bluetooth: HCI UART protocol AML registered
[ 5.436705] [ T115] Bluetooth: hci0: setting up wcn6855
[ 5.499596] [ T115] Bluetooth: hci0: QCA Product ID :0x00000013
[ 5.499600] [ T115] Bluetooth: hci0: QCA SOC Version :0x400c0210
[ 5.499601] [ T115] Bluetooth: hci0: QCA ROM Version :0x00000201
[ 5.499602] [ T115] Bluetooth: hci0: QCA Patch Version:0x000038e6
[ 5.508307] [ T115] Bluetooth: hci0: QCA controller version 0x02100201
[ 5.508316] [ T115] Bluetooth: hci0: QCA Downloading qca/hpbtfw21.tlv
[ 6.205406] [ T115] Bluetooth: hci0: QCA Downloading qca/hpnv21.b8c
[ 6.414784] [ T115] Bluetooth: hci0: QCA setup on UART is completed
[ 6.429201] [ T115] Bluetooth: hci0: AOSP extensions version v0.98
[ 6.429218] [ T115] Bluetooth: hci0: AOSP quality report is supported
[ 6.963230] [ T1080] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 6.963234] [ T1080] Bluetooth: BNEP filters: protocol multicast
[ 6.963238] [ T1080] Bluetooth: BNEP socket layer initialized

Ubuntu 25.4

Kernel: 6.14.0-15-generic

ubuntu: sudo systemctl status bluetooth.service

Invocation: 3b855343f9094786b49a41798c39f1e3
      Docs: man:bluetoothd(8)
  Main PID: 1664 (bluetoothd)
    Status: "Running"
     Tasks: 1 (limit: 17750)
    Memory: 3.6M (peak: 4.1M)
       CPU: 57ms
    CGroup: /system.slice/bluetooth.service
            └─1664 /usr/libexec/bluetooth/bluetoothd

May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/aptx_ll_0
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/faststream
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/faststream_duplex
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSink/opus_05
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/opus_05
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSink/opus_05_duplex
May 22 14:16:15 Schnappi bluetoothd[1664]: Endpoint registered: sender=:1.53 path=/MediaEndpoint/A2DPSource/opus_05_duplex
May 22 14:16:22 Schnappi bluetoothd[1664]: src/profile.c:record_cb() Unable to get Hands-Free Voice gateway SDP record: Host is>

ubuntu: lsmod | grep blue

bluetooth 1019904 44 btrtl,btqca,btintel,hci_uart,btbcm,bnep,rfcomm

ubuntu: lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 06cb:00fc Synaptics, Inc. Prometheus Fingerprint Reader
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

ubuntu: sudo dmesg | grep Blue

[    6.188902] Bluetooth: Core ver 2.22
[    6.188937] Bluetooth: HCI device and connection manager initialized
[    6.189047] Bluetooth: HCI socket layer initialized
[    6.189051] Bluetooth: L2CAP socket layer initialized
[    6.189057] Bluetooth: SCO socket layer initialized
[    6.230493] Bluetooth: HCI UART driver ver 2.3
[    6.230501] Bluetooth: HCI UART protocol H4 registered
[    6.230502] Bluetooth: HCI UART protocol BCSP registered
[    6.230527] Bluetooth: HCI UART protocol LL registered
[    6.230528] Bluetooth: HCI UART protocol ATH3K registered
[    6.230538] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    6.230621] Bluetooth: HCI UART protocol Intel registered
[    6.230648] Bluetooth: HCI UART protocol Broadcom registered
[    6.230659] Bluetooth: HCI UART protocol QCA registered
[    6.230660] Bluetooth: HCI UART protocol AG6XX registered
[    6.230667] Bluetooth: HCI UART protocol Marvell registered
[    6.230672] Bluetooth: HCI UART protocol AML registered
[    6.245836] Bluetooth: hci0: setting up wcn6855
[    6.300609] Bluetooth: hci0: QCA Product ID   :0x00000013
[    6.300619] Bluetooth: hci0: QCA SOC Version  :0x400c0210
[    6.300621] Bluetooth: hci0: QCA ROM Version  :0x00000201
[    6.300623] Bluetooth: hci0: QCA Patch Version:0x000038e6
[    6.311164] Bluetooth: hci0: QCA controller version 0x02100201
[    6.311173] Bluetooth: hci0: QCA Downloading qca/hpbtfw21.tlv
[    6.974305] Bluetooth: hci0: QCA Downloading qca/hpnv21.b8c
[    7.160285] Bluetooth: hci0: QCA setup on UART is completed
[    7.165585] Bluetooth: hci0: AOSP extensions version v0.98
[    7.165592] Bluetooth: hci0: AOSP quality report is supported
[    7.188447] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    7.188453] Bluetooth: BNEP filters: protocol multicast
[    7.188461] Bluetooth: BNEP socket layer initialized
[   12.235930] Bluetooth: MGMT ver 1.23
[   12.236244] Bluetooth: hci0: setting up wcn6855
[   12.298115] Bluetooth: hci0: QCA Product ID   :0x00000013
[   12.298131] Bluetooth: hci0: QCA SOC Version  :0x400c0210
[   12.298136] Bluetooth: hci0: QCA ROM Version  :0x00000201
[   12.298141] Bluetooth: hci0: QCA Patch Version:0x000038e6
[   12.312593] Bluetooth: hci0: QCA controller version 0x02100201
[   12.312606] Bluetooth: hci0: QCA Downloading qca/hpbtfw21.tlv
[   12.982572] Bluetooth: hci0: QCA Downloading qca/hpnv21.b8c
[   13.195929] Bluetooth: hci0: QCA setup on UART is completed
[   13.284847] Bluetooth: hci0: AOSP extensions version v0.98
[   13.284861] Bluetooth: hci0: AOSP quality report is supported
[   13.310140] Bluetooth: RFCOMM TTY layer initialized
[   13.310151] Bluetooth: RFCOMM socket layer initialized
[   13.310160] Bluetooth: RFCOMM ver 1.11

ubuntu: rfkill

ID TYPE DEVICE SOFT HARD
0 bluetooth hci0 unblocked unblocked
1 wlan phy0 unblocked unblocked

ubuntu: lspci -knn | grep Net -A3

0006:01:00.0 Network controller [0280]: Qualcomm Technologies, Inc QCNFA765 Wireless Network Adapter [17cb:1103] (rev 01)
	Subsystem: Qualcomm Technologies, Inc Device [17cb:0108]
	Kernel driver in use: ath11k_pci
	Kernel modules: ath11k_pci

Happy to report that Bluetooth now works as a workaround ot my Thinkpad X13s.

It had always bugged me that Ubuntu Bluetooth worked and openSuse did not, however, I could not find a difference that gave a hint to why that is.

Until now. the tool btmon helped.

With openSuse I get for sudo btmon:

Bluetooth monitor ver 5.79
btmon[10671]: = Note: Linux version 6.15.2-1-default (aarch64)                                                                  0.447086
btmon[10671]: = Note: Bluetooth subsystem version 2.22                                                                          0.447089
= New Index: 00:00:00:00:5A:AD (Primary,UART,hci0)                                                                       [hci0] 0.447091
bluetoothd[1010]: @ MGMT Open: bluetoothd (privileged) version 1.23                                                    {0x0001} 0.447092

With Ubuntu it looks like this:

Bluetooth monitor ver 5.79
btmon[5425]: = Note: Linux version 6.14.0-15-generic (aarch64)              0.388126
btmon[5425]: = Note: Bluetooth subsystem version 2.22                       0.388129
= New Index: 28:3B:A7:F0:FD:8C (Primary,UART,hci0)                   [hci0] 0.388131
= Open Index: 28:3B:A7:F0:FD:8C                                      [hci0] 0.388132
= Index Info: 28:3B:A7:F0:FD:8C (Qualcomm)                           [hci0] 0.388133
bluetoothd[1758]: @ MGMT Open: blueto.. (privileged) version 1.23  {0x0001} 0.388134

The important difference in openSuse is the Index: 00:00:00:00:5A:AD. All the 00looked suspicious.

With that I have found the Debian Thinkpad X13s installation guide for bluetooth

There is explained how to set a static Bluetooth MAC address with a udev script.
When you follow that guide you are also asked to get your device Bluetooth MAC from Windows.
Just to keep it interesting, the number that I get from Windows is different to what Ubuntu is using where Bluetooth works regardless.

I have used the address that I got from Windows. Updated the scripts as described in the Debian guide and now it works.

I would call this a workaround rather than a solution as it is clearly possible to get the correct Bluetooth MAC automatically for other laptops.

Also, I can’t see this udev config scripts described in the Debian workaround in the Ubuntu system. Maybe they solve it differently.
More to investigate.

The first three bytes, 28:3B:A7 are the OUI, see https://standards-oui.ieee.org/ for a list of assigned value.

But 28:3B:A7 is not assigned and that might be a problem if the driver somehow to use the OUI what driver/driver options to use.