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):
- 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?
- Is it possible to list all the firmwares that has been loaded and find which kernel module loaded it?
- 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?
- 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!~