0

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.

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

  1. 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/
  1. 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.
| improve this answer | |
1

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

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.