Broadcom BCM4306 + FC5
![HARDWARE](/assets/categories/hardware.webp)
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