Broadcom BCM4306 + FC5

Posted by Michael Larabel on April 16, 2006

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


Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. GCC 4.8.0 vs. LLVM Clang 3.3 Compiler Performance
  2. Intel Linux OpenGL Driver Leading Over Apple OS X
  3. The Cost Of Ubuntu Disk Encryption
  4. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
Latest Linux News
  1. A New X.Org-Free Wayland LiveCD Released
  2. Unity 8, Mir Made Progress This Week On Features
  3. LLVM Clang 3.3 RC2 Is Ready For Testing
  4. AMD RadeonSI Gallium3D Begins Simple CL Demos
  5. Intel Shows Off GNOME3-Based Tizen Shell
  6. Linux Desktop Security Could Be A Whole Lot Better
  7. KDE 4.11 Will Be The Last Major KDE4 Workspaces Feature Release
  8. New NVIDIA Linux Driver Supports The GeForce GTX 780
  9. Chrome 28 To Offer More Speed Improvements
  10. Digia Announces "Boot To Qt" Project
  11. X.Org Libraries Hit By Round Of Security Issues
Latest Forum Talk
  1. GCC 4.8.0 vs. LLVM Clang 3.3 Compiler Performance
  2. Linux's "Ondemand" Governor Is No...
  3. Linux Desktop Security Could Be A Whole Lot Better
  4. A New X.Org-Free Wayland LiveCD Released
  5. Microsoft Releases Skype For Linux 4.2, Has...
  6. Unity 8, Mir Made Progress This Week On Features
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite