BWN(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1

✨ BWN(4) ✨ β€” the Broadcom BCM43xx SoftMAC IEEE 802.11 wireless network driver, bestie edition πŸ’…

okay so you found a Broadcom BCM43xx PCI/CardBus wifi card and you want it to work, and that's where bwn comes in. literally the whole vibe. let's get into it 🫢


πŸŽ€ SYNOPSIS πŸŽ€

so if you want this driver baked into your kernel (main character energy), you add these lines to your kernel config file, periodt:

device bwn
device bhnd
device bhndb
device bhndb_pci
device bcma
device siba
device gpio
device wlan
device wlan_amrr
device firmware

and if you'd rather load it as a module at boot instead, no cap, you add this to loader.conf(5):

if_bwn_load="YES"

🌸 DESCRIPTION 🌸

the bwn driver provides support for Broadcom BCM43xx based PCI/CardBus network adapters. it's giving "your old laptop can have wifi again" ✨

it supports station and monitor mode operation. only one virtual interface may be configured at any time β€” that's the rule, bestie, don't fight it. for more info on configuring this device, see ifconfig(8).

🚨 important: this driver requires firmware to be loaded before it will work. the ports/net/bwn-firmware-kmod port needs to be installed before ifconfig(8) will work. don't skip this step or you'll be sad 😭

in most cases the bwn_v4_ucode kernel module from the port should be used. however β€” and this is the part people miss β€” if an LP (low power) PHY is being used, the bwn_v4_lp_ucode module should be used. iykyk πŸ’…


πŸ¦‹ HARDWARE πŸ¦‹

the bwn driver supports Broadcom BCM43xx based wireless devices, including these iconic legends:

  • Apple Airport Extreme β€” chip BCM4318, bus PCI, standard b/g
  • ASUS WL-138g β€” chip BCM4318, bus PCI, standard b/g
  • Buffalo WLI-CB-G54S β€” chip BCM4318, bus CardBus, standard b/g
  • Dell Wireless 1390 β€” chip BCM4311, bus Mini PCI, standard b/g
  • Dell Wireless 1470 β€” chip BCM4318, bus Mini PCI, standard b/g
  • Dell Truemobile 1400 β€” chip BCM4309, bus Mini PCI, standard b/g
  • HP Compaq 6715b β€” chip BCM4312, bus PCI, standard b/g
  • HP nx6125 β€” chip BCM4319, bus PCI, standard b/g
  • Linksys WPC54G Ver 3 β€” chip BCM4318, bus CardBus, standard b/g
  • Linksys WPC54GS Ver 2 β€” chip BCM4318, bus CardBus, standard b/g
  • US Robotics 5411 β€” chip BCM4318, bus CardBus, standard b/g
πŸ’€ real talk: users of older Broadcom chipsets (BCM4301, BCM4303 and BCM4306 rev 2) must use bwi(4) because the v4 version of the firmware does not support these chips. the newer firmware is too big to fit into these old chips β€” physically doesn't fit, not a skill issue, just physics 😭

🌈 EXAMPLES 🌈

join an existing BSS network (i.e., connect to an access point) β€” the classic move:

ifconfig wlan create wlandev bwn0 inet 192.168.0.20 \
    netmask 0xffffff00

join a specific BSS network with network name β€œmy_net”:

ifconfig wlan create wlandev bwn0 ssid my_net up

join a specific BSS network with 64-bit WEP encryption (yes we're doing WEP, it's vintage, don't @ me):

ifconfig wlan create wlandev bwn0 ssid my_net \
        wepmode on wepkey 0x1234567890 weptxkey 1 up

⭐ LOADER TUNABLES ⭐

tunables can be set at the loader(8) prompt before booting the kernel or stored in loader.conf(5). very flexible, we love options πŸŽ€

  • hw.bwn.usedma β€” this tunable enables DMA operations on the hardware. if the value is 0, PIO mode would be used. the default value is 1. slay.

πŸ‘‘ SEE ALSO πŸ‘‘

arp(4), bcma(4), bhnd(4), bhndb(4), bwi(4), cardbus(4), intro(4), pci(4), siba(4), wlan(4), wlan_amrr(4), ifconfig(8), wpa_supplicant(8) β€” go read these, fr fr, they're the supporting cast 🫢


🧚 HISTORY 🧚

the bwn driver first appeared in FreeBSD 8.1. the driver was updated to support the common Broadcom bhnd(4) bus interface in FreeBSD 12.0. glow-up era ✨


πŸ’œ AUTHORS πŸ’œ

the bwn driver was written by Weongyo Jeong <weongyo@FreeBSD.org>. support for bhnd(4) was added by Landon Fuller <landonf@FreeBSD.org>. icons, both of them πŸ‘‘


πŸ”₯ CAVEATS πŸ”₯

some LP PHY devices have DMA operation problems β€” and in that case, try to use PIO mode. that's the workaround, bestie, it's giving "just make it work" energy πŸ’…


πŸ“ this page is from the Debian edition, dated December 16, 2017 β€” yes it's old, no we don't care, it's still iconic. mwah πŸ’‹
πŸ“¦ where this page comes from