How to Make Broadcom WiFi Modules Work in Fedora

/img/broadcom-wifi/wifi.png

Due to the fact that broadcom use proprietary drivers for their wireless modules it is not usually possible for them to work out of the box with Fedora. This tutorial is aimed at helping you to get the adapter working.

Notes and Pre-requisites #

First I want to mention a couple of points:

  1. to complete this tutorial you will need an internet connection. I know that sounds a little silly, but there is no other way. You therefore need a temporary wifi adaptor that works in Fedora already, or a hardwired connection
  2. this process has been tested on Fedora 26, 27 and 28, and I know it to be working for those systems
  3. the specific wifi adapter I have is BCM4352 (802.11ac Wireless Network Adapter (rev 03)). Although this process should work for all (or most) broadcom adaptors I can't guarantee it
  4. UEFI secure boot must be disabled in BIOS

Let's get started #

The process itself can be quite simple, but I am aware of some pitfalls that you may come up against in some cases. I know how to get around some of these. With this in mind I will try to highlight potential problems and their fixes as we go through.

The simple way #

You should first make sure you are up to date

sudo dnf update

Then add the rpmfusion repositories

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Get the broadcom drivers:

sudo dnf install kmod-wl akmods akmod-wl

Check if you have kernel-devel installed. It should be, but if not this will install it for you.

sudo dnf install kernel-devel

Now reboot / restart your system

Once the system has booted and you have logged in again we need to check if the driver "broadcom-wl" has installed. Obviously the the actual driver version might be slightly different to the output below, but you should get a similar response

[testspecimen@localhost ~]$ rpm -qa | grep broadcom-wl
broadcom-wl-6.30.223.271-1.fc22.noarch

Run modprobe

sudo modprobe wl

Check that akmods can be run

[testspecimen@localhost ~]$ sudo akmods

Checking kmods exist for 4.17.19-200.fc28.x86_64           [  OK  ]

There is a chance that you will get a warning that "files needed for building modules against kernel could not be found" and "Is the correct kernel devel package installed?". If that is the case don't worry, just continue.

We then need to check that the kernel-devel package in the system is the same as the kernel-devel package installed with the $(uname -r) kernel of your system. First check the system:

[testspecimen@localhost ~]$ ls /usr/src/kernels/
4.17.19-200.fc28.x86_64

then the $(uname -r)

[testspecimen@localhost ~]$ uname -r
4.17.19-200.fc28.x86_64

If they are the same you can skip to the "Load the "wl" module" part just after the system restart in red below, otherwise you need to do the following

You now need to install the correct kernel devel for your system. This is the version that was output when you ran the "uname -r" command. Go to the following website:

Kernel Devel RPM files

You then need to find the correct rpm file for your system for example in my case it would be:

kernel-devel-4.17.19-200.fc28.x86_64.rpm

...and download the file.

Once downloaded (I am assuming you will download the file to the Downloads folder) run the following commands replacing the rpm file name with the correct one for your system that you just downloaded

[testspecimen@localhost ~]$ cd ~/Downloads
[testspecimen@localhost Downloads]$ sudo rpm -Uvh --force kernel-devel-4.17.19-200.fc28.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:kernel-devel-4.17.19-200.fc28 ################################# [50%]
Cleaning up / removing...
2:kernel-devel-4.17.19-200.fc28 ################################# [100%]

Run akmods again

[testspecimen@localhost ~]$ sudo akmods
Checking kmods exist for 4.17.19-200.fc28.x86_64 [ OK ]
Building and installing wl-kmod [ OK ]

Reboot / restart the system

Load the "wl" module

sudo modprobe wl

Check "wl" is loaded

[testspecimen@localhost ~]$ lsmod | grep wl
wl                   6463488  0
cfg80211              770048  3 wl,rtlwifi,mac80211

Check that module "wl" is used as a wifi adapter. Please note that the terminal will output a lot of different components like the one below, so you will have to search for the wireless controller specifically.

[testspecimen@localhost ~]$ lspci -v
05:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4352 802.11ac Wireless Network Adapter (rev 03)
    Subsystem: ASUSTeK Computer Inc. Device 855c
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at dfa00000 (64-bit, non-prefetchable) [size=32K]
    Memory at df800000 (64-bit, non-prefetchable) [size=2M]
    Capabilities: <access denied>
    Kernel driver in use: wl
    Kernel modules: bcma, wl

At this point unplug the temporary wifi card you are using or unplug the hardwired connection you are using. Then we can get a list of networks up

[testspecimen@localhost ~]$ nmcli dev wifi list
IN-USE  SSID            MODE   CHAN  RATE        SIGNAL  BARS  SECURITY  
        OnePlus5        Infra  11    130 Mbit/s  95      ▂▄▆█  WPA2        
        COSMOTE-F0CEBB  Infra  6     270 Mbit/s  57      ▂▄▆_  WPA1 WPA2    
        COSMOTE-0EF1CE  Infra  11    270 Mbit/s  35      ▂▄__  WPA1 WPA2 
        conn-x71aa38    Infra  4     135 Mbit/s  34      ▂▄__  WPA1

Then you can connect to the wifi network of your choice

[testspecimen@localhost ~]$ nmcli dev wifi con "your_ssid" password "your_ssid_password"

That should be it!

Let me know if it worked for you, and if so which driver it worked for so I can create a working list for other people to reference.

Credits #

After many hours trawling through the internet I found the method detail above worked for me. The information in this article predominantly comes from one place:

Source

🙏🙏🙏

Since you've made it this far, sharing this article on your favorite social media network would be highly appreciated. For feedback, please ping me on Twitter.

...or if you want fuel my next article, you could always:

Buy Me a Coffee at ko-fi.com

Published