Bluetooth not working for Realtek RTL8723DE - hci0: didn't find patch for chip id 2 , firmware error for rtl_bt/rtl8723b_config.bin failed error -2
Solution 1
The solution needs some handiwork. Firstly, you have to download the latest RTL8723D firmware from linux-firmware git repository. The firmware are pushed by Larry Fingers of rtlwifi-new git: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=6d5131107f2ba67a13f469ac770a55f101ba654d
-
clone linux-firmware directory in any directory of your preference (~/Downloads) using git tool in a terminal. I assume you are downloading to ~/Downloads directory:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
The firmware are located in: ~/Downloads/linux-firmware/rtlwifi/rtl8723defw.bin ~/Downloads/linux-firmware/rtl_bt/rtl8723d_config.bin ~/Downloads/linux-firmware/rtl_bt/rtl8723d_fw.bin
1st is WiFi firmware and 2,3 are Bluetooth firmware.
These firmware needs to be copied respectively to the below directories: /lib/firmware/rtlwifi/rtl8723defw.bin /lib/firmware/rtl_bt/rtl8723d_fw.bin /lib/firmware/rtl_bt/rtl8723d_config.bin
You can open a terminal and use this (sudo: give your password):
sudo cp ~/Downloads/linux-firmware/rtlwifi/rtl8723defw.bin /lib/firmware/rtlwifi/
sudo cp ~/Downloads/linux-firmware/rtl_bt/rtl8723d_fw.bin /lib/firmware/rtl_bt/
sudo cp ~/Downloads/linux-firmware/rtl_bt/rtl8723d_config.bin /lib/firmware/rtl_bt/
- Now, you have to install the recent Linux kernel (>= 4.17), kernel headers to your Linux system. In the case of Ubuntu, you can download from http://kernel.ubuntu.com/~kernel-ppa/mainline/ . Download the generic kernel with amd64 (relevant architecture), headers. You can download to a directory and install with "dpkg -i *.deb" command. Upon restarting, bluetooth will be working.
Solution 2
Support for this bluetooth device rtl8723de had been just added to the 4.17rc kernel.
The code can be easily backported to kernels 4.4 - 4.15. There's a PPA with DKMS packages for bionic and xenial with the updated btrtl module.
It can be installed by
sudo add-apt-repository ppa:hanipouspilot/bluetooth
sudo apt update
sudo apt install btrtl-rtl8723de-dkms
REBOOT
Bluetooth will work normally from then
Comments
-
Confguy2016 over 1 year
This is a HP 15-BS576TX laptop which comes with Realtek RTL8723DE Wireless/Bluetooth module. I honestly cannot find a way to bring up the Bluetooth despite, the firmware are all available. The RTL8723DE firmware is recently available in kernel linux-firmware.git tree and I have copied it to the /lib/firmware/rtl_bt directory too.
The error is, it is asking for rtl8723b_config.bin file which is not available. Also, the bluetooth part of this laptop is detected as RTL8723B as per the kernel log. The reply from the firmware maintainer was: "Not all devices need the config file - rtl8723be does not."
# dmesg |grep -i bluetooth [ 11.325095] Bluetooth: Core ver 2.22 [ 11.325111] Bluetooth: HCI device and connection manager initialized [ 11.325113] Bluetooth: HCI socket layer initialized [ 11.325115] Bluetooth: L2CAP socket layer initialized [ 11.325118] Bluetooth: SCO socket layer initialized [ 11.414774] Bluetooth: hci0: rtl: examining hci_ver=08 hci_rev=000d lmp_ver=08 lmp_subver=8723 [ 11.414775] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_config.bin [ 11.466838] bluetooth hci0: Direct firmware load for rtl_bt/rtl8723b_config.bin failed with error -2 [ 11.466840] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_fw.bin [ 11.478765] Bluetooth: hci0: rom_version status=0 version=2 [ 11.478767] Bluetooth: hci0: didn't find patch for chip id 2 [ 21.410553] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 21.410555] Bluetooth: BNEP filters: protocol multicast [ 21.410557] Bluetooth: BNEP socket layer initialized
I have rtl8723D firmware in the directory and still, the kernel is detecting the device as RTL8723B and I cannot bring it up.
hci0: Type: Primary Bus: USB BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0 DOWN RX bytes:63 acl:0 sco:0 events:6 errors:0 TX bytes:18 acl:0 sco:0 commands:6 errors:0 Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Packet type: DM1 DH1 HV1 Link policy: Link mode: SLAVE ACCEPT
When I tried,
hciconfig hci0 up
Can't init device hci0: Invalid argument (22)
tail -f /var/log/kern.log shows this:
Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.853960] Bluetooth: hci0: rtl: examining hci_ver=08 hci_rev=000d lmp_ver=08 lmp_subver=8723 Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.853970] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_config.bin Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.854019] bluetooth hci0: Direct firmware load for rtl_bt/rtl8723b_config.bin failed with error -2 Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.854024] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_fw.bin Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.855913] Bluetooth: hci0: rom_version status=0 version=2 Mar 8 01:51:21 HP-LAPTOP-15-BS00X kernel: [ 3116.855920] Bluetooth: hci0: didn't find patch for chip id 2
And this is how the /lib/firmware/rtl_bt looks like. It has latest firmware for RTL8723D also copied into the directory:
rtl8192ee_fw.bin rtl8192eu_fw.bin rtl8723a_fw.bin rtl8723b_fw.bin rtl8723d_config.bin rtl8723d_fw.bin rtl8761a_fw.bin rtl8812ae_fw.bin rtl8821a_fw.bin rtl8821c_config.bin rtl8821c_fw.bin rtl8822b_config.bin rtl8822b_fw.bin
What is wrong, I cannot figure out. System detects the Bluetooth hardware as RTL8723B, while the wireless module is definitely RTL8723DE as written in the back of the laptop. The driver maintainer commented that the Bluetooth part of RTL8723B and RTL8723D are similar. So, What is the right thing to try? Is there a way to load the rtl8723d firmware and config file instead of rtl8723b firmware, will it fix the problem.
-
Hanlon almost 6 yearsThis may help: bbs.archlinux.org/viewtopic.php?pid=1698195#p1698195.
-
Confguy2016 almost 6 years@Vuk Thanks. But, the bluetooth for RTL8723D is supported only in 4.17rc2 kernel and newer. I will answer this question, so that others will find it helpful.
-