b43
B43 is the OpenSource driver for Broadcom based Wireless hardware. The Asus WL-500G Deluxe has an integrated Broadcom BCM4306 802.11b/g Wireless LAN controler. For not so long a time ago, only the binary driver from Broadcom was the only solution to have this piece of hardware to do its job. The problem was that the Broadcom binary driver was only available for Linux kernel 2.4. Now with the B43 driver this has changed, though the driver is still in an early stage. Performance and stability issues I have seen with various combinations of kernel versions(2.6.28/2.6.25), patches, hostapd(0.6.4 / trunk / 0.6.6) version and patches, b43 driver versions (OpenWRT RC8.09 default and other snapshots) b43 available firmwares are:
- Max transfer limited to ~20MB
After ~20 MB transfer the b43 crashed due to interupt problems – as a result the router freezes entirely - Packets lost after a couple of seconds with connections(like SSH) to the router – not with connections through the router
Connections routed/bridged through the box work fine, but connections to the box will not work or soon after a couple of seconds fail. It seems that packets are transmitted to the kernel (tcpdump shows them) but not received on the other end – tcpdump does not show them there.
With the Asus WL-500G Deluxe I tested on stability and performance with many different set-up’s. In the end the following solution works best as of today:
- OpenWRT Kernel 2.6.28 from SVN trunk – revision 14000
- Latest OpenWRT kernel 2.6.28 patches by Hauke
- Latest OpenWRT b43 patches and b43-firmware patches of Hauke to support a newer version of the Broadcom PHY firmware code [ firmware version 478.104 (2008-07-01 00:50:23) ] ( fixes the ~20 MB limit, but introduces the lost packets)
- b43 driver from wireless kernel snapshot 10 January 2009
- hostapd 0.6.6
Unfortunately WEP/WPA do not perform well in this setup. They do work, but connections (SSH etc) to the router have the above described problem. Without WEP/WPA there are no problems. And therefore this is the only setup as far as I know am aware of, which works. All other setups fail after ~20 mbit/s or other strange freezes.
Performance measured (15.5 GB transfered in 2,5 hours) with this setup (without WPA/WEP) and 10 meters and a thick wall in between:
johan@jvz:~$ iperf -c 10.0.2.2 -t 9000 ------------------------------------------------------------ Client connecting to 10.0.2.2, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.0.2.99 port 51593 connected with 10.0.2.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-9000.0 sec 15.5 GBytes 14.8 Mbits/sec
This is comparable with the performance experienced with the binary kernel 2.4 driver of broadcom. Close range transfers are up to ~2.1 MB/sec. Wireless transfer is CPU bound.