NOTE: this page is for archival only, see the note at the end of the page.

= Broadcom brcmsmac (mac80211-based softmac PCIe) and brcmfmac (SDIO) drivers =

  • Completely open source host drivers, no binary object files.
  • Framework for supporting new chips, including mac80211-aware embedded chips
  • Does not support older PCI/PCIe chips with SSB backplane

Supported Chips

brcmsmac (PCIe)

Name

PCI Device ID

BCM4313

0x4727

BCM43224

0x4353

BCM43225

0x4357

Support for the following chips: ===============================

  • brcmsmac (PCIe) Name Device ID BCM4313 0x4727 BCM43224 0x4353 BCM43225 0x4357 brcmfmac (SDIO) Name BCM4329

Both brcmsmac and brcmfmac drivers require firmware files that need to be separately downloaded. Firmware is available from the Linux firmware repository at:

===============================================================

Broadcom brcmsmac driver

=============================================================== - Support for both 32 and 64 bit Linux kernels

Firmware installation

====================== Copy brcm/bcm43xx-0.fw and brcm/bcm43xx_hdr-0.fw to /lib/firmware/brcm (or wherever firmware is normally installed on your system).

===============================================================

Broadcom brcmfmac driver

=============================================================== - Support for 32 bit Linux kernel, 64 bit untested

Firmware installation

====================== Copy brcm/bcm4329-fullmac-4.bin and brcm/bcm4329-fullmac-4.txt to /lib/firmware/brcm (or wherever firmware is normally installed on your system).

Contact Info: ============= Brett Rudley brudley@broadcom.com Henry Ptasinski henryp@broadcom.com Dowan Kim dowan@broadcom.com Roland Vossen rvossen@broadcom.com Arend van Spriel arend@broadcom.com

================================================================= Developer information =================================================================

Overview

  • On-chip firmware loaded using standard request_firmware()
  • Uses minstrel_ht rate algorithm
  • HW based encryption not enabled yet
  • Infrastructure for future chips in place.
  • AMPDU support
  • many software, ucode and phy/radio counters available.

fullmac driver specifics

  • Integration with cfg80211 stack
  • Most of Mac functionality is performed in dongle

Get the code

The driver is currently available in staging-next branch of the staging tree, available at:

git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6.git

The driver is also available in the 2.6.38 kernel. When using 'make menuconfig' it can be accessed:

Location: -> Device Drivers

  • -> Staging drivers

    • -> Exclude Staging drivers from being built

      • -> Broadcom IEEE802.11n WLAN drivers

        • -> Broadcom IEEE802.11n driver style

Regulatory Implementation

This generation of chips contain additional regulatory support independent of the driver. The devices use a single worldwide regulatory domain, with channels 12-14 (2.4 GHz band) and channels 52-64 and 100-140 (5 GHz band) restricted to passive operation. Transmission on those channels is suppressed until appropriate other traffic is observed on those channels. Within the driver, we use the ficticious country code "X2" to represent this worldwide regulatory domain. There is currently no interface to configure a different domain. The driver reads the SROM country code from the chip and hands it up to mac80211 as the regulatory hint, however this information is otherwise unused with the driver.

Things to be done before getting into mainline

See the TODO file

To be done once softmac driver is in mainline

  • Add support for
    • RFKill
    • 40MHz channels
    • powersave
    • debugfs (for accessing counters and other diagnostic info)
    • monitor mode
    • IBSS
    • AP
    • LED support
    • HW-based encryption
    • Add support for new chips (obviously an ongoing item).

To be done once fullmac driver is in mainline

  • Add support for
    • RFKill
    • debugfs (for accessing counters and other diagnostic info)
    • monitor mode
    • Add support for new chips (obviously an ongoing item).

This is a static dump of the old wiki, taken after locking it in January 2015. The new wiki is at https://wireless.wiki.kernel.org/.
versions of this page: last, v77, v76, v75, v74, v73, v72, v71, v70, v69, v68, v67, v66, v65, v64, v63, v62, v61, v60, v59, v58, v57, v56, v55, v54, v53, v52, v51, v50, v49, v48, v47, v46, v45, v44, v43, v42, v41, v40, v39, v38, v37, v36, v35, v34, v33, v32, v31, v30, v29, v28, v27, v26, v25, v24, v23, v22, v21, v20, v19, v18, v17, v16, v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1