Broadcom BCM4306 + FC5

Written by Michael Larabel in Hardware on 16 April 2006 at 01:00 AM EDT. Add A Comment
HARDWARE

Back during COMDEX Las Vegas in 2002, Broadcom had shipped the industry's first 54Mb/s 2.4GHz wireless LAN solution, which was named the BCM4306. This 802.11g/b BCM4306 solution was accompanied by the BCM4309 dual-band, BCM2050, and BCM4702. While we haven't had much in the way of problems with some Linux distributions -- specifically Debian-based distros -- some others haven't faired quite as well with out-of-the-box support. The Broadcom BCM4306 solution that we have been using is PCI based and came from Minitar with a model number of MN54GPC. With a bit of tweaking, we have had no troubles getting the Minitar MN54GPC (BCM4306) working with Fedora Core 5 and the 2.6.16-1.2080_FC5 kernel.

lspci -v

03:04.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller
        Subsystem: Micro-Star International Co., Ltd. Unknown device 6825
        Flags: bus master, fast devsel, latency 32, IRQ 19
        Memory at fb028000 (32-bit, non-prefetchable) [size=8K]
        Capabilities: [40] Power Management version 2

While the Broadcom BCM4306 Linux support isn't comparable to the magnificent open-source capabilities with the Atheros 802.11g Chipsets and the use of MadWifi, the BCM4306 does have some Linux drivers available. The open-source Broadcom 43xx Linux driver is quite experimental as Broadcom has yet to publicly release the specifications for their WiFi chips. We had attempted to use these BC43XX drivers with the Minitar MN54GPC, however, the module would fail to work in our tests. We had used the bcm43xx-fwcutter RPM from the official Fedora 5 Extras repository, and had extracted the card's firmware out of the Windows wireless drivers. In fact, we had tried cutting multiple Windows drivers to attain the firmware but in all instances in combination with the Linux BCM43XX drivers, the card had failed to work. Below is an example of the bcm43xx-fwcutter at work.

bcm43xx-fwcutter -w /lib/firmware ~/Desktop/bcmwl5a/bcmwl5.sys

bcm43xx-fwcutter can cut the firmware out of /root/Desktop/bcmwl5a/bcmwl5.sys

  filename :  bcmwl5.sys
  version  :  3.40.25.3
  MD5      :  5e58a3148b98c9f356cde6049435cb21

extracting bcm43xx_microcode2.fw ...
extracting bcm43xx_microcode4.fw ...
extracting bcm43xx_microcode5.fw ...
*****: Sorry, it's not posible to extract "bcm43xx_microcode11.fw".
*****: Extracting firmware from an old driver is bad. Choose a more recent one.
*****: Luckily bcm43xx driver doesn't include microcode11 uploads at the moment.*****: 
But this can be added in the future...
extracting bcm43xx_pcm4.fw ...
extracting bcm43xx_pcm5.fw ...
extracting bcm43xx_initval01.fw ...
extracting bcm43xx_initval02.fw ...
extracting bcm43xx_initval03.fw ...
extracting bcm43xx_initval04.fw ...
extracting bcm43xx_initval05.fw ...
extracting bcm43xx_initval06.fw ...
extracting bcm43xx_initval07.fw ...
extracting bcm43xx_initval08.fw ...
extracting bcm43xx_initval09.fw ...
extracting bcm43xx_initval10.fw ...

The alternate option (which ultimately worked) was using ndiswrapper. After building ndiswrapper on Fedora Core 5, we simply had installed the Windows Broadcom display drivers (bcmwl5/bcmwl5a) following by creating a network-script entry for wlan0, and then loading the ndiswrapper module. With those steps (among a few other tweaks) accomplished, the Minitar MN54GPC (BCM4306) had no problems running under Fedora Core 5 with the 2.6.16 kernel. One little issue that we had faced though, was while running NetworkManager, we had experienced some connection issues with one of our wireless networks.

ndiswrapper -i bcmwl5.inf

ndiswrapper -l

Installed drivers:
bcmwl5          driver installed
bcmwl5a         driver installed, hardware present

ndiswrapper -v

utils version: 1.8
driver version:        1.13
vermagic:       2.6.16-1.2080_FC5 686 REGPARM 4KSTACKS gcc-4.1

cat /etc/sysconfig/network-scripts/ifcfg-wlan0

DEVICE=wlan0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Wireless
NETMASK=
DHCP_HOSTNAME=
IPADDR=
DOMAIN=
HWADDR=
ESSID=phoronix
CHANNEL=1
MODE=Auto
RATE=Auto
USERCTL=no
IPV6INIT=no
PEERDNS=yes

With a bit of tweaking, it certainly wasn't difficult to get the Broadcom BCM4306 802.11g device working with Fedora Core 5 using ndiswrapper.

ifconfig

wlan0     Link encap:Ethernet  HWaddr 00:0C:76:71:4D:89
          inet addr:192.168.0.123  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:76ff:fe71:4d89/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3490 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4691 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:271196 (264.8 KiB)  TX bytes:4223349 (4.0 MiB)
          Interrupt:19 Memory:fb028000-fb02a000

iwconfig

wlan0     IEEE 802.11g  ESSID:"phoronix"  Nickname:"phortest"
          Mode:Auto  Frequency:2.437 GHz  Access Point: 00:11:95:BC:10:CF
          Bit Rate=24 Mb/s   Tx-Power:25 dBm
          RTS thr=2347 B   Fragment thr=2346 B
          Encryption key:off
          Power Management:off
          Link Quality:100/100  Signal level:-73 dBm  Noise level:-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week