Wireless card integrated Bluetooth not listing / working

Hi, my RTL8723BS wireless card’s WiFi appears to be working but not the integrated (so lsusb, lspci won’t work) Bluetooth.
I have tried listing the adapter via hciconfig, hcitool, bluetoothctl, rfkill but it wouldn’t show at all.
I have tried Fedora 31 and both WiFi and Bluetooth works there. So I went ahead and compared their dmesg outputs:

OpenSUSE (kernel 5.3.12-2-default):
sudo dmesg | egrep -i ‘blue|8723|rtl’


   15.620912] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
   15.679618] RTL8723BS: module init start
   15.679623] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
   15.679625] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
   15.781376] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
   15.800349] RTL8723BS: rtw_ndev_init(wlan0)
   15.800970] RTL8723BS: module init ret =0
   16.015665] Bluetooth: Core ver 2.22
   16.015723] Bluetooth: HCI device and connection manager initialized
   16.015733] Bluetooth: HCI socket layer initialized
   16.015738] Bluetooth: L2CAP socket layer initialized
   16.015749] Bluetooth: SCO socket layer initialized
   16.078775] Bluetooth: HCI UART driver ver 2.3
   16.078780] Bluetooth: HCI UART protocol H4 registered
   16.078782] Bluetooth: HCI UART protocol BCSP registered
   16.078822] Bluetooth: HCI UART protocol LL registered
   16.078824] Bluetooth: HCI UART protocol ATH3K registered
   16.078846] Bluetooth: HCI UART protocol Three-wire (H5) registered
   16.078987] Bluetooth: HCI UART protocol Intel registered
   16.079010] Bluetooth: HCI UART protocol QCA registered
   16.079013] Bluetooth: HCI UART protocol AG6XX registered
   16.079039] Bluetooth: HCI UART protocol Marvell registered
   21.471311] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
   24.994179] RTL8723BS: rtw_set_802_11_connect(wlan0)  fw_state = 0x00000008
   25.235482] RTL8723BS: start auth
   25.241067] RTL8723BS: auth success, start assoc
   25.249079] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
   25.249102] RTL8723BS: assoc success
   25.251077] RTL8723BS: send eapol packet
   25.269494] RTL8723BS: send eapol packet
   25.270929] RTL8723BS: set pairwise key camid:4, addr:c8:3a:35:26:2a:58, kid:0, type:AES
   25.279910] RTL8723BS: send eapol packet
   25.281569] RTL8723BS: set group key camid:5, addr:c8:3a:35:26:2a:58, kid:1, type:AES
   26.392733] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
   26.392737] Bluetooth: BNEP filters: protocol multicast
   26.392748] Bluetooth: BNEP socket layer initialized
 1350.802353] Modules linked in: fuse bnep af_packet xt_tcpudp ip6t_REJECT nf_reject_ipv6 ip6t_rpfilter ipt_REJECT nf_reject_ipv4 xt_conntrack ebtable_nat ebtable_broute ip6table_nat ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_nat iptable_mangle iptable_raw iptable_security nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c ip_set nfnetlink ebtable_filter scsi_transport_iscsi ebtables ip6table_filter ip6_tables iptable_filter ip_tables x_tables bpfilter dmi_sysfs msr uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc joydev intel_powerclamp coretemp kvm_intel mei_hdcp snd_soc_sst_bytcr_rt5651 kvm intel_rapl_msr axp288_adc axp288_fuel_gauge industrialio axp288_charger axp20x_pek extcon_axp288 irqbypass crct10dif_pclmul gpio_keys crc32_pclmul ghash_clmulni_intel hci_uart btqca serdev btrtl btintel bluetooth ecdh_generic ecc aesni_intel aes_x86_64 crypto_simd cryptd glue_helper sof_acpi_dev snd_sof_intel_byt snd_sof_intel_bdw
 1350.802415]  snd_sof_intel_ipc snd_sof pcspkr wdat_wdt r8723bs(C) snd_sof_xtensa_dsp snd_intel_sst_acpi snd_intel_sst_core snd_soc_sst_atom_hifi2_platform snd_soc_rt5651 intel_xhci_usb_role_switch roles snd_soc_rl6231 mei_txe processor_thermal_device snd_soc_acpi_intel_match intel_rapl_common snd_hdmi_lpe_audio snd_soc_acpi mei intel_soc_dts_iosf lpc_ich intel_atomisp2_pm thermal snd_soc_core snd_compress snd_pcm_dmaengine snd_pcm cfg80211 snd_timer axp20x_i2c intel_cht_int33fe spi_pxa2xx_platform axp20x snd soundcore int3403_thermal rfkill dw_dmac int3400_thermal acpi_thermal_rel int340x_thermal_zone int3406_thermal intel_int0002_vgpio soc_button_array acpi_pad button nls_iso8859_1 nls_cp437 vfat fat hid_multitouch hid_generic usbhid i915 mmc_block i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm xhci_pci xhci_hcd crc32c_intel usbcore sdhci_acpi sdhci mmc_core video pwm_lpss_platform pwm_lpss pinctrl_cherryview sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc

Fedora (kernel 5.3.7-301.fc31.x86_64):
dmesg | egrep -i ‘blue|8723|rtl’


   25.692937] systemd[1]: /usr/lib/systemd/system/virtlockd.socket:6: ListenStream= references a path below legacy directory /var/run/, updating /var/run/libvirt/virtlockd-sock → /run/libvirt/virtlockd-sock; please update the unit file accordingly.
   28.999473] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
   29.014105] RTL8723BS: module init start
   29.014109] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
   29.014111] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
   29.130781] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
   29.179956] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
   29.271219] RTL8723BS: rtw_ndev_init(wlan0)
   29.272284] RTL8723BS: module init ret =0
   29.946791] Bluetooth: Core ver 2.22
   29.946840] Bluetooth: HCI device and connection manager initialized
   29.946848] Bluetooth: HCI socket layer initialized
   29.946852] Bluetooth: L2CAP socket layer initialized
   29.946866] Bluetooth: SCO socket layer initialized
   30.182316] Bluetooth: HCI UART driver ver 2.3
   30.182321] Bluetooth: HCI UART protocol H4 registered
   30.182322] Bluetooth: HCI UART protocol BCSP registered
   30.182358] Bluetooth: HCI UART protocol LL registered
   30.182360] Bluetooth: HCI UART protocol ATH3K registered
   30.182512] Bluetooth: HCI UART protocol Three-wire (H5) registered
   30.182693] Bluetooth: HCI UART protocol Intel registered
   30.185174] Bluetooth: HCI UART protocol Broadcom registered
   30.185198] Bluetooth: HCI UART protocol QCA registered
   30.185199] Bluetooth: HCI UART protocol AG6XX registered
   30.185219] Bluetooth: HCI UART protocol Marvell registered
**   30.819992] Bluetooth: hci0: RTL: rtl: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723
   30.824270] Bluetooth: hci0: RTL: rom_version status=0 version=1
   30.824275] Bluetooth: hci0: RTL: rtl: loading rtl_bt/rtl8723bs_fw.bin
   30.846087] Bluetooth: hci0: RTL: rtl: loading rtl_bt/rtl8723bs_config-OBDA8723.bin
   30.896658] Bluetooth: hci0: RTL: cfg_sz 64, total sz 24508**
   37.482893] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
   37.482896] Bluetooth: BNEP filters: protocol multicast
   37.482904] Bluetooth: BNEP socket layer initialized
   43.470922] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
   53.281570] Bluetooth: RFCOMM TTY layer initialized
   53.281583] Bluetooth: RFCOMM socket layer initialized
   53.281796] Bluetooth: RFCOMM ver 1.11

Notice how the firmware for the Bluetooth adapter on Fedora is being loaded.
Kernel module “r8723bs” parameter “rtw_btcoex_enable” value on both systems is 1.

For info, it appears that kernel module “btrtl” is the one responsible for loading the bluetooth adapter firmware.
sudo modinfo btrtl:


filename:       /lib/modules/5.3.12-2-default/kernel/drivers/bluetooth/btrtl.ko.xz
firmware:       rtl_bt/rtl8822b_config.bin
firmware:       rtl_bt/rtl8822b_fw.bin
firmware:       rtl_bt/rtl8821a_config.bin
firmware:       rtl_bt/rtl8821a_fw.bin
firmware:       rtl_bt/rtl8761a_config.bin
firmware:       rtl_bt/rtl8761a_fw.bin
firmware:       rtl_bt/rtl8723ds_config.bin
firmware:       rtl_bt/rtl8723ds_fw.bin
**firmware:       rtl_bt/rtl8723bs_config.bin
firmware:       rtl_bt/rtl8723bs_fw.bin**
firmware:       rtl_bt/rtl8723b_config.bin
firmware:       rtl_bt/rtl8723b_fw.bin
firmware:       rtl_bt/rtl8723a_fw.bin
license:        GPL
version:        0.1
description:    Bluetooth support for Realtek devices ver 0.1
author:         Daniel Drake <drake@endlessm.com>
suserelease:    openSUSE Tumbleweed
srcversion:     6E762C4F4D6D9CCD2330B10
depends:        bluetooth
retpoline:      Y
intree:         Y
name:           btrtl
vermagic:       5.3.12-2-default SMP mod_unload modversions
...

Both OSes has this kernel module (not sure if identical srcversions, can confirm if needed).

I have spent a day and a half, maybe even more than that trying to figure this out and have learned a lot. I would really appreciate if someone could point out the probable reasons why it is not working in case we cannot fix this. Just so I can add it in my knowledge bank. Maybe even suggest a good book to read for things like this and kernel stuffs:). As a result of this fiddling and figuring, I have a few questions as well, if I may (no need to answer if not interested):

  1. If a kernel module can instruct / inform the kernel to / how to load a firmware on a given hardware, how come the “r8723bs” doesn’t report a “firmware” property when queried by tools like modinfo, unlike the “btrtl” module (see dmesg / modinfo above)? Is it possible to load a firmware without stating a “firmware” property?
  2. Is it possible to list all the firmwares that has been loaded and find which kernel module loaded it?
  3. Running lshw / lspci shows you the corresponding driver for a hardware, but it doesn’t inform you how it got that driver, whether it was introduced by a kernel module, or via the kernel itself through static configuration. Is it possible to confirm how a driver got loaded into the system then?
  4. Is there a way to find a device regardless of supportability, such as in my case? Like maybe a list of all device id or something? Maybe even a log of the kernel hardware probing / searching?

Finally, I wish you all a Happy New Year!

Thanks and good day!~

It might be worth posting a bug report on this.

https://en.opensuse.org/openSUSE:Submitting_bug_reports