Broadcom wifi no longer working on Fedora 37

My wifi card (PCI, ASUS) no longer works after upgrading to Fedora 37 from Fedora 35. Looking at dmesg it seems my wifi driver isn’t loading:

[    5.990057] wl driver 6.30.223.271 (r587334) failed with code 1
[    5.990063] ERROR @wl_cfg80211_detach : 
[    5.990065] NULL ndev->ieee80211ptr, unable to deref wl

Output of lspci -v:

08:00.0 Network controller: Broadcom Inc. and subsidiaries Device 43c3 (rev 04)
	Subsystem: ASUSTeK Computer Inc. Device 86fb
	Flags: bus master, fast devsel, latency 0, IRQ 37, IOMMU group 12
	Memory at f7000000 (64-bit, non-prefetchable) [size=32K]
	Memory at f6800000 (64-bit, non-prefetchable) [size=8M]
	Memory at f2400000 (64-bit, prefetchable) [size=4M]
	Capabilities: <access denied>
	Kernel modules: brcmfmac, wl

I also tried the following to no avail:

akmodsbuild /usr/src/akmods/wl-kmod.latest
sudo rpm --force -i kmod-wl-$(uname -r)-*.rpm
rpm -q kmod-wl-$(uname -r)
rpm -V kmod-wl-$(uname -r)
sudo depmod -a
sudo modprobe wl

I have broadcom-wl installed, as well as kmod-wl. Any thoughts?

Yes.

  1. first see what kmod packages are installed.
    dnf list kmod-\*
    Once you know exactly which kmod packages are locally compiled and installed, then you can remove the one created for the broadcom card with and make certain everything is up to date with
  2. sudo dnf remove broadcom-wl akmod-wl kmod-wl-\*
  3. and reinstall it all with sudo dnf install broadcom-wl which will also pull in the akmod-wl package then compile the drivers and install the kmod-wl package it creates locally.

It is possible that the newer kernels may not include drivers for an older broadcom card but unless you are up to date with everything installed it is unlikely that any of us would be able to test with matching hardware and software.

Posting the output of commands suggested will help us to follow what occurs on your system and to see the results. You posted several commands but did not include the output from any of them so we cannot tell what you may have seen.

  1. dnf list kmod-\* yields
kmod-libs.x86_64                                                                                               30-2.fc37                                                                                       @fedora                        
kmod-nvidia-470xx-6.5.7-100.fc37.x86_64.x86_64                                                                 3:470.199.02-3.fc37                                                                             @@commandline                  
kmod-wl.x86_64                                                                                                 6.30.223.271-49.fc37                                                                            @rpmfusion-nonfree-updates     
kmod-wl-6.5.7-100.fc37.x86_64.x86_64                                                                           6.30.223.271-49.fc37                                                                            @@commandline                  
  1. Done

  2. Yields

==============================================================================================================================================================================================================================================
 Package                                              Architecture                                    Version                                                        Repository                                                          Size
==============================================================================================================================================================================================================================================
Installing:
 broadcom-wl                                          noarch                                          6.30.223.271-21.fc37                                           rpmfusion-nonfree                                                   24 k
Installing dependencies:
 akmod-wl                                             x86_64                                          6.30.223.271-49.fc37                                           rpmfusion-nonfree-updates                                          5.5 M

Transaction Summary
==============================================================================================================================================================================================================================================
Install  2 Packages

Total download size: 5.5 M
Installed size: 5.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): broadcom-wl-6.30.223.271-21.fc37.noarch.rpm                                                                                                                                                            153 kB/s |  24 kB     00:00    
(2/2): akmod-wl-6.30.223.271-49.fc37.x86_64.rpm                                                                                                                                                                25 MB/s | 5.5 MB     00:00    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                         6.5 MB/s | 5.5 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                      1/1 
  Installing       : akmod-wl-6.30.223.271-49.fc37.x86_64                                                                                                                                                                                 1/2 
  Running scriptlet: akmod-wl-6.30.223.271-49.fc37.x86_64                                                                                                                                                                                 1/2 
  Installing       : broadcom-wl-6.30.223.271-21.fc37.noarch                                                                                                                                                                              2/2 
  Running scriptlet: akmod-wl-6.30.223.271-49.fc37.x86_64                                                                                                                                                                                 2/2 
  Running scriptlet: broadcom-wl-6.30.223.271-21.fc37.noarch                                                                                                                                                                              2/2 
  Verifying        : broadcom-wl-6.30.223.271-21.fc37.noarch                                                                                                                                                                              1/2 
  Verifying        : akmod-wl-6.30.223.271-49.fc37.x86_64                                                                                                                                                                                 2/2 

Installed:
  akmod-wl-6.30.223.271-49.fc37.x86_64                                                                                 broadcom-wl-6.30.223.271-21.fc37.noarch                                                                                

Complete!

When I ran the series of commands in my OP, the wl module built successfully. However after running the commands in step 3, I do not see kmod-wl installed any longer.

Check the output:

mokutil --sb-state
mokutil -l | grep -i -e $(modinfo -F sig_key wl)
sudo mokutil -t /etc/pki/akmods/certs/public_key.der
sudo modprobe wl
lsmod | grep -e ^wl
lspci -n -n -k -s 08:00.0

See also:
Broadcom BCM4377b wifi card not working - #14 by soennchen

You can load the module at startup like this:

sudo tee /etc/modules-load.d/brcmfmac.conf << EOF > /dev/null
brcmfmac
EOF
sudo systemctl restart systemd-modules-load.service
[fmain@fedora ~]$ mokutil --sb-state
SecureBoot disabled
Platform is in Setup Mode
[fmain@fedora ~]$ mokutil -l | grep -i -e $(modinfo -F sig_key wl)
[fmain@fedora ~]$ sudo mokutil -t /etc/pki/akmods/certs/public_key.der
/etc/pki/akmods/certs/public_key.der is not enrolled
[fmain@fedora ~]$ sudo modprobe wl
fmain@fedora ~]$ lsmod | grep -e ^wl
wl                   6512640  0
1 Like

This is likely one of the problems.

kmod-wl.x86_64                                                                                                 6.30.223.271-49.fc37                                                                            @rpmfusion-nonfree-updates     
kmod-wl-6.5.7-100.fc37.x86_64.x86_64                                                                           6.30.223.271-49.fc37                                                                            @@commandline                  

The akmod-wl package builds the kmod-wl-6.5.7-100.fc37.x86_64 package specifically for your kernel.
Having the kmod-wl package separately installed may cause the issues since the first is compiled locally for your kernel and the other is not.

It is not normally recommended to install both kmod-wl and akmod-wl.

There are similar issues when a user installs both the kmod-nvidia package and the akmods-nvidia package – the locally built package often conflicts with the other.

That doesn’t matter for Fedora as kmod-wl is a package with no files but requires akmod-wl as a dependency.

Please forward the issue to the wl-kmod maintainer at rpmfusion (https://bugzilla.rpmfusion.org)
Thanks in advance.

[fmain@fedora ~]$ lspci -n -n -k -s 08:00.0
08:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries Device [14e4:43c3] (rev 04)
	Subsystem: ASUSTeK Computer Inc. Device [1043:86fb]
	Kernel modules: brcmfmac, wl
[fmain@fedora ~]$

Update: I managed to get wifi working by running sudo modprobe brcmfmac. It doesn’t seem to survive a reboot though – I have to manually enter that command to get wifi working after a reboot.

Use modinfo brcmfmac to see the list of supported devices and subsystems. Here I only see a couple subsystems. There may be some issues that block support for your subsystem, but maybe they aren’t critical for your use case. If you don’t encounter issues, you should be able to force loading brcmfmac on the kernel command line or by adding a .conf file to /etc/modprobe.d. It has been a while since I needed to do that, so you should read man modprobe.d .

I downloaded a bunch of those firmware files from here and that combined with modprobe brcmfmac seemed to do the trick. Thanks for your help everyone!

Instead of using modprobe on boot, you can drop a brcmfmac into a
/etc/modules-load.d/brcmfmac.conf file.

Probably that this line won’t be needed anymore at some point. But you shouldn’t use wl-kmod on new hardware IMO.

Also it’s weird that you should use firmware from Apple on non-apple devices.
Probably you need to fetch a more recent firmware for your device that might be a common devices with some apple product.
Using b43-fwcutter might helps.

Firmware often comes as a binary blob specific to a chipset. If you are running linux on an Apple system the firmware from Apple will match your chipset and may not be available elsewhere.

This is perfectly true.

What I was pointing at is that if broadcom users with a different chipset than what’s available in this apple-firmware location, then it will be no use for them…

This same applies to all firmware– including the broadcom firmware already included in fedora distros from the linux-firmware meta package…

There are several hundred versions of firmware even on a plain fedora install, many of them for broadcom, and if they do not fit the specific chipset then the system cannot use them. Does that mean having them loaded is wrong? – No, it merely means that the specific one necessary is available if the user has the chipset that requires it.

Having many firmware packages to choose from allows the system to select what is needed and ignore what does not fit.