Realtek Bluetooth not Working in Noble

KUbuntu Version: 24.04.1 LTS

Desktop Environment (if applicable): KDE Plasma

Problem Description:

On my new computer, I have never been able to enable bluetooth or successfully scan for or add devices. The system tray does try to scan for devices, which it doesn’t find, and the Bluetooth system settings indicate that bluetooth is disabled and nothing happens when I click ‘Enable’. I have a dual boot and Bluetooth works fine in Windows.

Relevant System Information:

$ uname -a
Linux 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:09:44 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
  • From inxi:
Mobo: ASUSTeK model: Z890 MAX GAMING WIFI7 v: Rev 1.xx

Bluetooth:
  Device-1: IMC Networks Wireless_Device driver: btusb type: USB
  Report: hciconfig ID: hci0 rfk-id: 2 state: down
    bt-service: enabled,running rfk-block: hardware: no software: no
    address: 00:00:00:00:00:00
  • From lsusb:
Bus 003 Device 006: ID 13d3:3602 IMC Networks Wireless_Device
  • From usb-devices:
usb-devices:
  Bus=03 Lev=01 Prnt=08 Port=13 Cnt=01 Dev#=  6 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=13d3 ProdID=3602 Rev=01.00
S:  Manufacturer=MediaTek Inc.
S:  Product=Wireless_Device
S:  SerialNumber=000000000

Conclusion: The manufacturer is MediaTek; the vendor is IMC Networks; the product name is Wireless_Device.

  • bluetooth service is running:
$ systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-01-12 14:31:02 CST; 1h 2min ago
       Docs: man:bluetoothd(8)
   Main PID: 2322 (bluetoothd)
     Status: "Running"
  • Active modules:
$ lsmod |grep bt
btusb                  77824  0
btrtl                  32768  1 btusb
btintel                57344  1 btusb
btbcm                  24576  1 btusb
btmtk                  12288  1 btusb
bluetooth            1028096  15 btrtl,btmtk,btintel,btbcm,bnep,btusb

Screenshots or Error Messages:

  • From dmesg (see below). Last line apparently indicates it chokes on the device:
    dmesg:
[   20.560636] Bluetooth: Core ver 2.22
[   20.560649] NET: Registered PF_BLUETOOTH protocol family
[   20.560650] Bluetooth: HCI device and connection manager initialized
[   20.560652] Bluetooth: HCI socket layer initialized
[   20.560654] Bluetooth: L2CAP socket layer initialized
[   20.560662] Bluetooth: SCO socket layer initialized
[   20.737210] Bluetooth: hci0: Opcode 0x0c03 failed: -16
  • Some lines from systemlog that might indicate bluetooth service is unable to load a number of plugins:
Jan 12 14:31:02 pm-cpp systemd[1]: Started bluetooth.service - Bluetooth service.
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: Starting SDP server
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: src/plugin.c:plugin_init() System does not support csip plugin
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: profiles/audio/micp.c:micp_init() D-Bus experimental not enabled
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: src/plugin.c:plugin_init() System does not support micp plugin
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: src/plugin.c:plugin_init() System does not support vcp plugin
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: src/plugin.c:plugin_init() System does not support mcp plugin
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: src/plugin.c:plugin_init() System does not support bass plugin
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: src/plugin.c:plugin_init() System does not support bap plugin
Jan 12 14:31:02 pm-cpp bluetoothd[2322]: Bluetooth management interface 1.22 initialized

What I’ve Tried:

I tried installing firmware-realtek-rtl8723cs-bt and Bluetooth support (metapackage) from the repos and restarting the OS. These actions had no effects.

I gather there are a number of linux drivers that are supposed to help realtek devices work, but I’m not clear on which, if any, might help with this device. It doesn’t help that the device name / serial number are vague.

Maybe the solution is to wait for or install a more advanced hardware support version of the kernel. My experience with upgrading to a more advanced kernel to solve problems in the past have not been good–problem not solved and new problems introduced that required reinstalling my OS. Or maybe I should file a bug report with launchpad in the hopes this will prompt a fix sooner?


What is the output from running

rfkill list

Hi halogen2:

It is:
$ rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no

I think that the following from dmesg indicates that the bluetooth device could not be opened by the system. So, even though bluetooth is not blocked and bluetooth.service is running, it has no device to work with.

[   20.737210] Bluetooth: hci0: Opcode 0x0c03 failed: -16

Can you please show this as well:

inxi -Eaz

Sure:

$ inxi -Eaz
Bluetooth:
Device-1: IMC Networks Wireless_Device driver: btusb v: 0.8 type: USB
rev: 2.1 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-14:6
chip-ID: 13d3:3602 class-ID: e001 serial:
Report: hciconfig ID: hci0 rfk-id: 0 state: down
bt-service: enabled,running rfk-block: hardware: no software: no
address:
Info: acl-mtu: 0:0 sco-mtu: 0:0 link-mode: peripheral accept

I’ve done some checking for chip-ID ‘13d3:3602’ with a search engine. This turns up a couple pages that refer to this chip as part of a Mediatek MT7925 card. Evidently it is fairly new and linux has added support in kernel 6.11 (I’m using the current Kubuntu 6.8 kernel).

There is linux firmware for this card here:
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/mediatek/mt7925

I wouldn’t know how to install these file, if it is possible. I also wouldn’t want to do anything to compromise my wifi connection, which is working and essential for me to connect to the internet. So I’m not sure I would want to install all 3 files or just the one that seems to be for bluetooth.

I evidently could install kernel 6.11.0 from my repo (though the kernel reported working with this bluetooth card was 6.11.5), but am concerned about system stability.

https://github.com/morrownr/USB-WiFi/blob/main/home/How_to_Install_Firmware_for_Mediatek_based_USB_WiFi_adapters.md
Mediatek MT7925 card is mentioned in the above link

The author morrownr is/was a highly respected contributor to the now deceased ubuntuforums.org

1 Like

Thanks tea-for-one!

I just checked my /lib/firmware/mediatek/mt792. The files were all already there. The one difference between the files and the ones on the kernel website is that my files end in .zst. But almost everything in my firmware directory / subdirectories does, so I’m guessing the system decompresses the files for use as needed.

If, then, the firmware was already present, the question becomes why I’m getting the Bluetooth: hci0: Opcode 0x0c03 failed: -16 error and why bluetooth doesn’t work (though wifi does and it seems these are both on the same card)?

On the web pages discussing getting the card to work on linux, there is mention that the kernel needed to be adapted and that the card works with 6.11.5 but apparently not 6.11.4.

I see that exact device in the Ubuntu 6.11 kernel source so it should work fine once they switch Ubuntu 24.04 to the 6.11 kernel, I would expect that change within a month

1 Like

Thanks Jeremy! Good to know that the changeover to 6.11 will be that soon! Expected it to be longer.

From this: https://ubuntu.com/about/release-cycle , I’m under the impression that Ubuntu 24.04 is meant to remain with kernel 6.8 for its entire lifecycle. It was released with 6.8.0 in April 2024 and remains at 6.8.0 today. 6.11 is available for Ubuntu 24.10, but that’s been fairly recently released and, I would guess, still needs to mature to achieve stability.

That does bring me back to the question of what it would take for kernel 6.8 to work with mediatek’s mt7925 card, given that all the relevant firmware is already installed. I suspect a bug report may be in order.

Ubuntu Desktop LTS versions have been automatically updated to the HWE kernel stack for a few releases, I don’t expect 24.04 to be different. Post results from terminal for lspci -nnk | grep -iA3 net and to see if I am correct about HWE dpkg -l | grep linux-generic-hwe-24.04

Hi Jeremy31: Thanks for your thoughts!

dpkg -l | grep linux-generic-hwe-24.04 returns nothing.

lspci as you have it above returns info on my ethernet controller (Realtek, RTL8125), which I suspect is not too relevant and the following:

83:00.0 Network controller [0280]: MEDIATEK Corp. Device [14c3:7925]
Subsystem: AzureWave Device [1a3b:6000]
Kernel driver in use: mt7925e
Kernel modules: mt7925e

mt7925 is, I believe the device that handles bluetooth as well as, evidently, wifi. However, lsusb gives the device differently: 13d3:3602 IMC Networks Wireless_Device .

I’m not sure what you are looking for in the latter. It’s my understanding, looking at info on ubuntu releases, that HWE isn’t automatically part of the kernel and also that HWE is a flash forward to the firmware (and kernel adaptations?) for slightly more advanced versions of the current release’s kernel. So, for example, 24.04 uses kernel 6.8.0, but HWE might provide the firmware for 6.8.5, but never anything higher than 6.8. To my knowledge the mediatek bluetooth problem hasn’t been fixed until kernel 6.11.5.

Check in terminal mokutil --sb as Secure Boot has to be disabled for this fix to work, then in terminal

sudo apt install git dkms
git clone https://github.com/jeremyb31/bluetooth-6.8.git -b 6.5-50
sudo dkms add ./bluetooth-6.8
sudo dkms install btusb/4.2

Reboot

Jeremy31: Thank you! That might do the trick, but I wonder. I noticed that the mediatek code in your repo is from a couple people at mediatek. Does the repo code simply create firmware from this code and install it? As I mentioned, Ubuntu already has the mediatek firmware installed. The problem likely resides in the OS or perhaps an application used to initialize bluetooth such as bluez.

PS I’ve opened a bug report for this problem. Hopefully, they’ll want to fix a problem with something that should be working…

The changes I made to the source code simply adds the USB ID from your Bluetooth device to the module table. This doesn’t create firmware it just adds the ID so that the kernel modules will load the existing firmware

1 Like

Sounds like that’s the source of the problem–thanks for that info!

I’ll have to admit to being a bit paranoid about security, so would want to audit the code. Any idea if I could just pull out the realtek components so I don’t have to audit dozens of files?

I’ve read that 24.04.2 will come with the 6.11 kernel, likely the most recent version. If so, that would fix the bluetooth issue for me (and likely for others). 24.04.2 is scheduled for release mid-Feb.

Another alternative may be to manually install the 6.11.5+ kernel. If it’s soon to work with 24.04.2, then hopefully it won’t be especially buggy now.

The only thing I changed in the code to support your device is shown at Update btusb.c · jeremyb31/bluetooth-6.8@7c061c9 · GitHub and that is very similar to what is found in Ubuntu 6.11 kernel ~ubuntu-kernel/ubuntu/+source/linux/+git/oracular - [no description]

1 Like