Translation(s): English - Español - Français - 简体中文 - Русский


Broadcom BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43224, BCM43225, BCM43227, BCM43228, BCM43142, BCM4331, BCM4352, BCM4360 devices (wl)

This page describes how to enable support for WiFi devices based on Broadcom wireless LAN chips, using the vendor driver on Debian systems.

The proprietary Broadcom wireless LAN driver (wl, aka broadcom-sta) provides support for some Broadcom-based PCI/PCIe hardware. It includes a binary-only component targeted for the x86 or x86-64 architecture. Supported devices are listed at the end of this page.

<!> The driver depends on the x86 or x86-64 architecture (Debian i386 and AMD64 ports respectively).

{i} The BCM4313, BCM43224 and BCM43225 chips are alternatively supported by the open source brcmsmac driver. The BCM4311, BCM4312, BCM4321, BCM4322 and BCM4331 chips are alternatively supported by the open source b43 driver.

Installation

  1. Add a "non-free" component to /etc/apt/sources.list for your Debian version, for example:

    # Debian 9 "Stretch"
    deb http://deb.debian.org/debian stretch-backports main contrib non-free

    # Debian 10 "Buster"
    deb http://deb.debian.org/debian buster-backports main contrib non-free

    # Debian 11 "Bullseye"
    deb http://deb.debian.org/debian bullseye main contrib non-free

    # Debian 12 "Bookworm"
    deb http://deb.debian.org/debian bookworm main contrib non-free-firmware non-free
  2. Update the list of available packages. Install the relevant/latest linux-image, linux-headers and broadcom-sta-dkms packages:

    # apt-get update
    # apt-get install linux-image-$(uname -r|sed 's,[^-]*-[^-]*-,,') linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms

    This will also install the recommended wireless-tools package. DKMS will build the wl module for your system.

  3. (Optional) Rescue if install/build fails in previous step

    # apt-get install -f
    # dpkg-reconfigure broadcom-sta-dkms
  4. (Optional) Check all the built DKMS kernel modules. There should be "wl.ko" in the list.

    # find /lib/modules/$(uname -r)/updates
  5. Unload conflicting modules:

    # modprobe -r b44 b43 b43legacy ssb brcmsmac bcma
  6. Load the wl module:

    # modprobe wl
  7. Configure your wireless interface as appropriate. See also known issues.

Switch between wl/OSS drivers

shell script:

 #!/bin/sh

WIFI=$(find /sys/class/net -follow -maxdepth 2 -name wireless 2>/dev/null|cut -d / -f 5|head -1)
echo ip link set $WIFI down
ip link set $WIFI down >/dev/null 2>&1
modprobe -r wl brcmsmac
modprobe -r cfg80211 brcmsmac cordic brcmutil bcma

if [ "$1" = "wl" ]; then
        modprobe wl
else
        modprobe brcmsmac
fi

sleep 0.1
WIFI=$(find /sys/class/net -follow -maxdepth 2 -name wireless 2>/dev/null|cut -d / -f 5|head -1)
echo ip link set $WIFI up
ip link set $WIFI up >/dev/null 2>&1

Known Issues

See bugs reported on this package in the Debian Bug Tracking System.

Supported Devices

Version 6.30.223.271-5

This driver is packaged for the Debian 9 "Stretch" release as broadcom-sta-dkms.

See Also


CategoryHardware | CategoryWireless | CategoryProprietarySoftware