Broadcom BCM43142 Bluetooth

I have an integrated (Bluetooth+WiFi) Broadcom BCM43142 PCI card on my HP Laptop. I installed Zorin-OS throughout the system recently and it's been going awesome except for one problem. The recommended driver for the card is the bcmwl-kernel source. I installed it and WiFi, and bluetooth didn't work. The WiFi appeared to be recognised but it doesn't turn on. rfkill shows that the card is hard blocked. Giving up, since I don't use that WiFi card anyway, I tried using my USB WiFi dongle and that also didn't turn on while the broadcom driver was installed. The USB WiFi card started working when I removed the broadcom driver. Note: USB WiFi card uses rtl8812au and has driver support from aircrack-ng. My problem arises when I want to use bluetooth. I don't want to buy a separate bluetooth dongle since my USB ports are pretty occupied already with the mouse and USB WiFi dongle and what not. Online forums suggest that although bluetooth and wifi reside on the same card, the bluetooth connects to the USB bus. lsusb does not show the broadcom bluetooth (for others in the forums with the same card, it did)

I thought maybe that was a hardware issue and I'd solve it later by checking if the card is seated properly or not. But, my laptop decides to surprise me today and the Broadcom Bluetooth card suddenly shows up on lsusb after a suspend session. I concluded it must have been some kind of loose connection inside and installed the bluetooth drivers from here

I installed the .deb package and rebooted my system only to find that the broadcom bluetooth entry has disappeared from my lsusb output. Nothing changed in the Laptop, it was in one place, on the table, stable. So I'm starting to think it isn't a loose connection. Any help would be highly appreciated!

lsusb output as of now:

Bus 002 Device 003: ID 04f2:b509 Chicony Electronics Co., Ltd 
Bus 002 Device 002: ID 0438:7900 Advanced Micro Devices, Inc. Root Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2357:0120 TP-Link 
Bus 001 Device 002: ID 0438:7900 Advanced Micro Devices, Inc. Root Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lspci output:

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Root Complex
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Mullins [Radeon R4/R5 Graphics] (rev 45)
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Kabini HDMI/DP Audio
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Host Bridge
00:02.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 16h Processor Functions 5:1
00:02.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 16h Processor Functions 5:1
00:02.5 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 16h Processor Functions 5:1
00:08.0 Encryption controller: Advanced Micro Devices, Inc. [AMD] Kabini/Mullins PSP-Platform Security Processor
00:10.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller (rev 11)
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 39)
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 39)
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 39)
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 42)
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 02)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 11)
00:14.7 SD Host controller: Advanced Micro Devices, Inc. [AMD] FCH SD Flash Controller (rev 01)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 16h (Models 30h-3fh) Processor Function 5
02:00.0 Network controller: Broadcom Inc. and subsidiaries BCM43142 802.11b/g/n (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 07)

In terminal what do

bluetoothctl

and

sudo systemctl status bluetooth

yield?

I just noticed that after every suspend session, the bluetooth appears to start working and lsusb shows Bus 001 Device 004: ID 0a5c:216d Broadcom Corp. BCM43142A0 Bluetooth 4.0

But unfortunately, it cannot see any Bluetooth devices or connect to them. here are the outputs after suspend session (bluetooth seen but not discovering)

bluetoothctl:

Agent registered
[CHG] Controller D8:5D:E2:AA:3F:4E Pairable: yes
[bluetooth]# 


sudo systemctl status bluetooth.service:

● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset>
     Active: active (running) since Fri 2022-04-29 01:14:48 IST; 9h ago
       Docs: man:bluetoothd(8)
   Main PID: 50050 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 8143)
     Memory: 1.9M
     CGroup: /system.slice/bluetooth.service
             └─50050 /usr/lib/bluetooth/bluetoothd

Apr 29 01:14:48 anuragrao-HP-Notebook bluetoothd[50050]: Starting SDP server
Apr 29 01:14:48 anuragrao-HP-Notebook bluetoothd[50050]: Bluetooth management inte>
Apr 29 01:14:49 anuragrao-HP-Notebook bluetoothd[50050]: Endpoint registered: send>
Apr 29 01:14:49 anuragrao-HP-Notebook bluetoothd[50050]: Endpoint registered: send>
Apr 29 01:14:49 anuragrao-HP-Notebook bluetoothd[50050]: Failed to set mode: Block>
Apr 29 01:14:50 anuragrao-HP-Notebook bluetoothd[50050]: Failed to set mode: Block>
Apr 29 11:00:34 anuragrao-HP-Notebook bluetoothd[50050]: Endpoint unregistered: se>
Apr 29 11:00:34 anuragrao-HP-Notebook bluetoothd[50050]: Endpoint unregistered: se>
Apr 29 11:00:36 anuragrao-HP-Notebook bluetoothd[50050]: Endpoint registered: send>
Apr 29 11:00:36 anuragrao-HP-Notebook bluetoothd[50050]: Endpoint registered: send>

bluetoothctl scan on:

Discovery started
[CHG] Controller D8:5D:E2:AA:3F:4E Discovering: yes


it cannot see any bluetooth devices nearby but my wireless earphones are in pairing mode. I tried resetting the earphones too if there is a problem with that but that didn't work. The earphones work perfectly fine with my phone so I think there is no issue with the earphones.

Here are the outputs for the same commands after a cold boot:

Bluetoothctl:

Waiting to connect to bluetoothd...

sudo systemctl status bluetooth.service:

● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset>
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

Apr 29 11:16:19 anuragrao-HP-Notebook systemd[1]: Condition check resulted in Blue>
Apr 29 11:16:59 anuragrao-HP-Notebook systemd[1]: Condition check resulted in Blue>

UPDATE

I copy pasted the required firmware file (got firmware file that the kernel was looking for via dmesg | grep blue) from here into /lib/firmware/brcm

and then ran sudo modprobe -r btusb and then sudo modprobe btusb and the bluetooth started to work just fine. The problem left now is that after every boot, the bluetooth card just disappears off of the lsusb output and bluetooth does not work unless I suspend the system once and get it back on. Everytime I suspend and get it back on, the bluetooth works normally. Any idea what might be causing this behaviour? maybe something in the BIOS?

Do you have more than one Bluetooth card? Bluetooth falls under Radio - as does Wifi. A person may have a Wifi card in their machine, but also get and use a USB wifi card- using only the USB Wifi card... But not realize that doubles the bluetooth being seen by the system. This would require one B.T. card to be blacklisted.

My configuration is Broadcom integrated card on the inside(PCI). one WiFi USB dongle on the outside. The WiFi Dongle is a TP-Link Archer T2U-Plus using the rtl8812au chipset. I use the WiFi dongle because the internal WiFi card does not support 5Ghz. What you are saying might be the issue. How do I see what B.T. cards are blacklisted and how do I change that?

You may have already run this, but lsmod will list all active Modules.

So... the Bluetooth you are currently using is the Built In Broadcom...
But the Wifi is the TP-link Archer?
That's tricky.

You can check lsmod if btusb is listed... But the above suggests you would need to blacklist One part of one card and one part of the other card... Instead of blacklisting One Whole Card.
Whether that can be done often depends on the manufacture of the card...

Output for lsmod when bluetooth is working(after suspend session):

Module                  Size  Used by
btusb                  61440  0
btrtl                  24576  1 btusb
btbcm                  20480  1 btusb
btintel                32768  1 btusb
rfcomm                 81920  16
cmac                   16384  5
algif_hash             16384  2
algif_skcipher         16384  2
af_alg                 28672  10 algif_hash,algif_skcipher
bnep                   24576  2
bluetooth             651264  47 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic           16384  2 bluetooth
ecc                    36864  1 ecdh_generic
nls_iso8859_1          16384  1
snd_ctl_led            24576  0
snd_hda_codec_realtek   147456  1
snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_ctl_led,snd_hda_codec_generic
snd_hda_codec_hdmi     61440  1
snd_hda_intel          53248  4
snd_intel_dspcfg       28672  1 snd_hda_intel
snd_intel_sdw_acpi     20480  1 snd_intel_dspcfg
snd_hda_codec         147456  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core           94208  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               114688  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
edac_mce_amd           32768  0
uvcvideo              106496  0
kvm_amd               118784  0
snd_rawmidi            36864  1 snd_seq_midi
snd_seq                73728  2 snd_seq_midi,snd_seq_midi_event
kvm                   864256  1 kvm_amd
88XXau               2195456  0
videobuf2_vmalloc      20480  1 uvcvideo
crct10dif_pclmul       16384  1
ghash_clmulni_intel    16384  0
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
aesni_intel           376832  7
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         32768  1 uvcvideo
videobuf2_common       61440  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
videodev              249856  3 videobuf2_v4l2,uvcvideo,videobuf2_common
mc                     57344  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
cfg80211              888832  1 88XXau
snd_timer              40960  2 snd_seq,snd_pcm
hp_wmi                 16384  0
snd                    94208  20 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
crypto_simd            16384  1 aesni_intel
cryptd                 24576  4 crypto_simd,ghash_clmulni_intel
joydev                 28672  0
input_leds             16384  0
platform_profile       16384  1 hp_wmi
serio_raw              20480  0
sparse_keymap          16384  1 hp_wmi
efi_pstore             16384  0
wmi_bmof               16384  0
k10temp                16384  0
soundcore              16384  2 snd_ctl_led,snd
fam15h_power           16384  0
ccp                    98304  1 kvm_amd
hp_wireless            16384  0
mac_hid                16384  0
sch_fq_codel           20480  6
ipmi_devintf           20480  0
ipmi_msghandler       114688  1 ipmi_devintf
msr                    16384  0
parport_pc             45056  0
ppdev                  24576  0
lp                     20480  0
parport                65536  3 parport_pc,lp,ppdev
ip_tables              32768  0
x_tables               49152  1 ip_tables
autofs4                45056  2
amdgpu               6348800  0
iommu_v2               24576  1 amdgpu
gpu_sched              36864  1 amdgpu
hid_generic            16384  0
usbhid                 57344  0
hid                   139264  2 usbhid,hid_generic
radeon               1486848  38
i2c_algo_bit           16384  2 amdgpu,radeon
drm_ttm_helper         16384  2 amdgpu,radeon
ttm                    69632  3 amdgpu,radeon,drm_ttm_helper
drm_kms_helper        253952  2 amdgpu,radeon
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
cec                    53248  1 drm_kms_helper
rc_core                61440  1 cec
r8169                  77824  0
sdhci_pci              65536  0
cqhci                  32768  1 sdhci_pci
crc32_pclmul           16384  0
sdhci                  69632  1 sdhci_pci
drm                   557056  18 gpu_sched,drm_kms_helper,amdgpu,radeon,drm_ttm_helper,ttm
realtek                32768  1
i2c_piix4              28672  0
bcma                   65536  0
psmouse               155648  0
ahci                   40960  2
xhci_pci               24576  0
libahci                36864  1 ahci
xhci_pci_renesas       20480  1 xhci_pci
wmi                    32768  2 hp_wmi,wmi_bmof
i2c_scmi               20480  0
video                  53248  0

don't have much knowledge of this part of linux. Can anything be done?

This output might change when Bluetooth isn't working, that is after a fresh boot. Do you want me to post an output of lsmod after a fresh boot?

Yes, that may help.
We can see here:

Bluetooth on Realtek driver and below it, bluetooth on broadcom driver.
The Realtek one would likely be the TP-link.

output of lsmod after fresh boot:

Module                  Size  Used by
nls_iso8859_1          16384  1
snd_ctl_led            24576  0
snd_hda_codec_realtek   147456  1
snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_ctl_led,snd_hda_codec_generic
snd_hda_codec_hdmi     61440  1
snd_hda_intel          53248  4
snd_intel_dspcfg       28672  1 snd_hda_intel
snd_intel_sdw_acpi     20480  1 snd_intel_dspcfg
snd_hda_codec         147456  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core           94208  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               114688  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
uvcvideo              106496  0
videobuf2_vmalloc      20480  1 uvcvideo
snd_seq_midi           20480  0
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         32768  1 uvcvideo
videobuf2_common       61440  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
edac_mce_amd           32768  0
snd_seq_midi_event     16384  1 snd_seq_midi
videodev              249856  3 videobuf2_v4l2,uvcvideo,videobuf2_common
snd_rawmidi            36864  1 snd_seq_midi
snd_seq                73728  2 snd_seq_midi,snd_seq_midi_event
mc                     57344  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
kvm_amd               118784  0
88XXau               2195456  0
kvm                   864256  1 kvm_amd
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
crct10dif_pclmul       16384  1
ghash_clmulni_intel    16384  0
snd_timer              40960  2 snd_seq,snd_pcm
cfg80211              888832  1 88XXau
snd                    94208  20 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
aesni_intel           376832  0
joydev                 28672  0
input_leds             16384  0
crypto_simd            16384  1 aesni_intel
serio_raw              20480  0
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
hp_wmi                 16384  0
soundcore              16384  2 snd_ctl_led,snd
platform_profile       16384  1 hp_wmi
sparse_keymap          16384  1 hp_wmi
wmi_bmof               16384  0
ccp                    98304  1 kvm_amd
efi_pstore             16384  0
k10temp                16384  0
fam15h_power           16384  0
hp_wireless            16384  0
mac_hid                16384  0
sch_fq_codel           20480  6
ipmi_devintf           20480  0
ipmi_msghandler       114688  1 ipmi_devintf
msr                    16384  0
parport_pc             45056  0
ppdev                  24576  0
lp                     20480  0
parport                65536  3 parport_pc,lp,ppdev
ip_tables              32768  0
x_tables               49152  1 ip_tables
autofs4                45056  2
amdgpu               6348800  0
iommu_v2               24576  1 amdgpu
gpu_sched              36864  1 amdgpu
hid_generic            16384  0
usbhid                 57344  0
hid                   139264  2 usbhid,hid_generic
radeon               1486848  8
i2c_algo_bit           16384  2 amdgpu,radeon
drm_ttm_helper         16384  2 amdgpu,radeon
ttm                    69632  3 amdgpu,radeon,drm_ttm_helper
psmouse               155648  0
drm_kms_helper        253952  2 amdgpu,radeon
syscopyarea            16384  1 drm_kms_helper
crc32_pclmul           16384  0
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
cec                    53248  1 drm_kms_helper
sdhci_pci              65536  0
rc_core                61440  1 cec
cqhci                  32768  1 sdhci_pci
r8169                  77824  0
sdhci                  69632  1 sdhci_pci
ahci                   40960  2
xhci_pci               24576  0
drm                   557056  9 gpu_sched,drm_kms_helper,amdgpu,radeon,drm_ttm_helper,ttm
i2c_piix4              28672  0
realtek                32768  1
bcma                   65536  0
libahci                36864  1 ahci
xhci_pci_renesas       20480  1 xhci_pci
wmi                    32768  2 hp_wmi,wmi_bmof
video                  53248  0
i2c_scmi               20480  0

output of lsmod after sudo modprobe btusb (bluetooth still does not work at this point):

Module                  Size  Used by
btusb                  61440  0
btrtl                  24576  1 btusb
btbcm                  20480  1 btusb
btintel                32768  1 btusb
bluetooth             651264  4 btrtl,btintel,btbcm,btusb
ecdh_generic           16384  1 bluetooth
ecc                    36864  1 ecdh_generic
nls_iso8859_1          16384  1
snd_ctl_led            24576  0
snd_hda_codec_realtek   147456  1
snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_ctl_led,snd_hda_codec_generic
snd_hda_codec_hdmi     61440  1
snd_hda_intel          53248  4
snd_intel_dspcfg       28672  1 snd_hda_intel
snd_intel_sdw_acpi     20480  1 snd_intel_dspcfg
snd_hda_codec         147456  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core           94208  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               114688  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
uvcvideo              106496  0
videobuf2_vmalloc      20480  1 uvcvideo
snd_seq_midi           20480  0
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         32768  1 uvcvideo
videobuf2_common       61440  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
edac_mce_amd           32768  0
snd_seq_midi_event     16384  1 snd_seq_midi
videodev              249856  3 videobuf2_v4l2,uvcvideo,videobuf2_common
snd_rawmidi            36864  1 snd_seq_midi
snd_seq                73728  2 snd_seq_midi,snd_seq_midi_event
mc                     57344  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
kvm_amd               118784  0
88XXau               2195456  0
kvm                   864256  1 kvm_amd
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
crct10dif_pclmul       16384  1
ghash_clmulni_intel    16384  0
snd_timer              40960  2 snd_seq,snd_pcm
cfg80211              888832  1 88XXau
snd                    94208  20 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
aesni_intel           376832  0
joydev                 28672  0
input_leds             16384  0
crypto_simd            16384  1 aesni_intel
serio_raw              20480  0
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
hp_wmi                 16384  0
soundcore              16384  2 snd_ctl_led,snd
platform_profile       16384  1 hp_wmi
sparse_keymap          16384  1 hp_wmi
wmi_bmof               16384  0
ccp                    98304  1 kvm_amd
efi_pstore             16384  0
k10temp                16384  0
fam15h_power           16384  0
hp_wireless            16384  0
mac_hid                16384  0
sch_fq_codel           20480  6
ipmi_devintf           20480  0
ipmi_msghandler       114688  1 ipmi_devintf
msr                    16384  0
parport_pc             45056  0
ppdev                  24576  0
lp                     20480  0
parport                65536  3 parport_pc,lp,ppdev
ip_tables              32768  0
x_tables               49152  1 ip_tables
autofs4                45056  2
amdgpu               6348800  0
iommu_v2               24576  1 amdgpu
gpu_sched              36864  1 amdgpu
hid_generic            16384  0
usbhid                 57344  0
hid                   139264  2 usbhid,hid_generic
radeon               1486848  16
i2c_algo_bit           16384  2 amdgpu,radeon
drm_ttm_helper         16384  2 amdgpu,radeon
ttm                    69632  3 amdgpu,radeon,drm_ttm_helper
psmouse               155648  0
drm_kms_helper        253952  2 amdgpu,radeon
syscopyarea            16384  1 drm_kms_helper
crc32_pclmul           16384  0
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
cec                    53248  1 drm_kms_helper
sdhci_pci              65536  0
rc_core                61440  1 cec
cqhci                  32768  1 sdhci_pci
r8169                  77824  0
sdhci                  69632  1 sdhci_pci
ahci                   40960  2
xhci_pci               24576  0
drm                   557056  12 gpu_sched,drm_kms_helper,amdgpu,radeon,drm_ttm_helper,ttm
i2c_piix4              28672  0
realtek                32768  1
bcma                   65536  0
libahci                36864  1 ahci
xhci_pci_renesas       20480  1 xhci_pci
wmi                    32768  2 hp_wmi,wmi_bmof
video                  53248  0
i2c_scmi               20480  0

lsmod after suspend (bluetooth works):

Module                  Size  Used by
rfcomm                 81920  16
cmac                   16384  5
algif_hash             16384  2
algif_skcipher         16384  2
af_alg                 28672  10 algif_hash,algif_skcipher
bnep                   24576  2
btusb                  61440  0
btrtl                  24576  1 btusb
btbcm                  20480  1 btusb
btintel                32768  1 btusb
bluetooth             651264  47 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic           16384  2 bluetooth
ecc                    36864  1 ecdh_generic
nls_iso8859_1          16384  1
snd_ctl_led            24576  0
snd_hda_codec_realtek   147456  1
snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_ctl_led,snd_hda_codec_generic
snd_hda_codec_hdmi     61440  1
snd_hda_intel          53248  4
snd_intel_dspcfg       28672  1 snd_hda_intel
snd_intel_sdw_acpi     20480  1 snd_intel_dspcfg
snd_hda_codec         147456  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core           94208  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               114688  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
uvcvideo              106496  0
videobuf2_vmalloc      20480  1 uvcvideo
snd_seq_midi           20480  0
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         32768  1 uvcvideo
videobuf2_common       61440  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
edac_mce_amd           32768  0
snd_seq_midi_event     16384  1 snd_seq_midi
videodev              249856  3 videobuf2_v4l2,uvcvideo,videobuf2_common
snd_rawmidi            36864  1 snd_seq_midi
snd_seq                73728  2 snd_seq_midi,snd_seq_midi_event
mc                     57344  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
kvm_amd               118784  0
88XXau               2195456  0
kvm                   864256  1 kvm_amd
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
crct10dif_pclmul       16384  1
ghash_clmulni_intel    16384  0
snd_timer              40960  2 snd_seq,snd_pcm
cfg80211              888832  1 88XXau
snd                    94208  20 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
aesni_intel           376832  7
joydev                 28672  0
input_leds             16384  0
crypto_simd            16384  1 aesni_intel
serio_raw              20480  0
cryptd                 24576  4 crypto_simd,ghash_clmulni_intel
hp_wmi                 16384  0
soundcore              16384  2 snd_ctl_led,snd
platform_profile       16384  1 hp_wmi
sparse_keymap          16384  1 hp_wmi
wmi_bmof               16384  0
ccp                    98304  1 kvm_amd
efi_pstore             16384  0
k10temp                16384  0
fam15h_power           16384  0
hp_wireless            16384  0
mac_hid                16384  0
sch_fq_codel           20480  6
ipmi_devintf           20480  0
ipmi_msghandler       114688  1 ipmi_devintf
msr                    16384  0
parport_pc             45056  0
ppdev                  24576  0
lp                     20480  0
parport                65536  3 parport_pc,lp,ppdev
ip_tables              32768  0
x_tables               49152  1 ip_tables
autofs4                45056  2
amdgpu               6348800  0
iommu_v2               24576  1 amdgpu
gpu_sched              36864  1 amdgpu
hid_generic            16384  0
usbhid                 57344  0
hid                   139264  2 usbhid,hid_generic
radeon               1486848  17
i2c_algo_bit           16384  2 amdgpu,radeon
drm_ttm_helper         16384  2 amdgpu,radeon
ttm                    69632  3 amdgpu,radeon,drm_ttm_helper
psmouse               155648  0
drm_kms_helper        253952  2 amdgpu,radeon
syscopyarea            16384  1 drm_kms_helper
crc32_pclmul           16384  0
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
cec                    53248  1 drm_kms_helper
sdhci_pci              65536  0
rc_core                61440  1 cec
cqhci                  32768  1 sdhci_pci
r8169                  77824  0
sdhci                  69632  1 sdhci_pci
ahci                   40960  2
xhci_pci               24576  0
drm                   557056  12 gpu_sched,drm_kms_helper,amdgpu,radeon,drm_ttm_helper,ttm
i2c_piix4              28672  0
realtek                32768  1
bcma                   65536  0
libahci                36864  1 ahci
xhci_pci_renesas       20480  1 xhci_pci
wmi                    32768  2 hp_wmi,wmi_bmof
video                  53248  0
i2c_scmi               20480  0

about the btrtl and btbcm modules, you're probably right about that. How do I go about blacklisting the Realtek bluetooth module? (or whatever has to be done for the bluetooth to work on fresh boot)

I also noticed that btintel gets loaded when sudo modprobe btusb is run. I have an AMD Processor and no intel components whatsoever on my system. Would that be any cause of concern? One more point is that the module bnep is loaded only after a suspend session and isn't present in the other two outputs. Maybe that's a clue? I'll try freshboot -> and then sudo modprobe bnep and report what happens in an edit

EDIT:
I tried sudo modprobe bnep, sudo modprobe btusb, sudo modprobe btbcm and sudo systemctl restart bluetooth. None of that helped, although lsmod showed all those modules to be loaded. Bluetooth starts to work only after a suspend session.

Before suspend:

After suspend:

They are identical... I did not expect that, honestly.

Perhaps it is not the module itself, but Power Management that is interfering...

https://wiki.archlinux.org/title/bluetooth#Adapter_disappears_after_suspend/resume

Just for the fun of testing this bug - if you really felt like cluttering your system with it... You could test this on the 5.4 kernel and then the 5.8 kernel. If you test this in this way, please remember that the system will default boot into the latest installed kernel and when finished, you can modify the install comamnds in the post to replace install with remove to remove the extra kernels:

sudo apt install linux-headers-5.8.0-63-generic linux-modules-5.8.0-63-generic linux-modules-extra-5.8.0-63-generic linux-image-5.8.0-63-generic

sudo apt install linux-headers-5.4.0-81-generic linux-modules-5.4.0-81-generic linux-modules-extra-5.4.0-81-generic linux-image-5.4.0-81-generic

On the Arch Wiki, it is assumed that the card shows up on the lsusb output in the first place, but that isn't the case for me unfortunately... as for testing with different kernels, I did try that but with 5.13, 5.16 and 5.17. The problem persisted. I would try 5.8 but I unfortunately don't have the time and energy for that for the next 3 months at least. I will get back to this post then or create a new one explaining this one and update it then. Thank you so much for your support and time!

Summary for fellow google searchers with the same issue:

Card: Broadcom BCM43142 Integrated (WiFi + Bluetooth)

USB Dongle for WiFi: TP-Link Archer-T2U Plus (rtl8812au using aircrack drivers)

Problem: Bluetooth does not work on the Broadcom card. To solve the issue, go to this repository and copy and paste the required .hcd file your kernel is looking for into /lib/firmware/brcm. You can find that using sudo dmesg | grep blue or sudo dmesg | grep firmware. For kernel 5.13 and most other recent kernels it would be BCM43142A0-0a5c-216d.hcd. Your kernel, if it's old, might be looking for BCM.hcd in which case, you'll need to do some renaming of some files. Refer other forums and guides for the same. So be careful and look for what your kernel is looking for in the dmesg output. This should do the trick for most users. Unfortunately, I had a problem where the bluetooth card would never be detected on a fresh boot but would magically appear after a suspend session. I have not been able to figure out why exactly yet, but we suspect it might be a power management problem. Will update of further developments.

1 Like