| |
| BCM43xx Linux Driver Project |
| ============================ |
| |
| Introduction |
| ------------ |
| |
| Many of the wireless devices found in modern notebook computers are |
| based on the wireless chips produced by Broadcom. These devices have |
| been a problem for Linux users as there is no open-source driver |
| available. In addition, Broadcom has not released specifications |
| for the device, and driver availability has been limited to the |
| binary-only form used in the GPL versions of AP hardware such as the |
| Linksys WRT54G, and the Windows and OS X drivers. Before this project |
| began, the only way to use these devices were to use the Windows or |
| OS X drivers with either the Linuxant or ndiswrapper modules. There |
| is a strong penalty if this method is used as loading the binary-only |
| module "taints" the kernel, and no kernel developer will help diagnose |
| any kernel problems. |
| |
| Development |
| ----------- |
| |
| This driver has been developed using |
| a clean-room technique that is described at |
| http://bcm-specs.sipsolutions.net/ReverseEngineeringProcess. For legal |
| reasons, none of the clean-room crew works on the on the Linux driver, |
| and none of the Linux developers sees anything but the specifications, |
| which are the ultimate product of the reverse-engineering group. |
| |
| Software |
| -------- |
| |
| Since the release of the 2.6.17 kernel, the bcm43xx driver has been |
| distributed with the kernel source, and is prebuilt in most, if not |
| all, distributions. There is, however, additional software that is |
| required. The firmware used by the chip is the intellectual property |
| of Broadcom and they have not given the bcm43xx team redistribution |
| rights to this firmware. Since we cannot legally redistribute |
| the firmware we cannot include it with the driver. Furthermore, it |
| cannot be placed in the downloadable archives of any distributing |
| organization; therefore, the user is responsible for obtaining the |
| firmware and placing it in the appropriate location so that the driver |
| can find it when initializing. |
| |
| To help with this process, the bcm43xx developers provide a separate |
| program named bcm43xx-fwcutter to "cut" the firmware out of a |
| Windows or OS X driver and write the extracted files to the proper |
| location. This program is usually provided with the distribution; |
| however, it may be downloaded from |
| |
| http://developer.berlios.de/project/showfiles.php?group_id=4547 |
| |
| The firmware is available in two versions. V3 firmware is used with |
| the in-kernel bcm43xx driver that uses a software MAC layer called |
| SoftMAC, and will have a microcode revision of 0x127 or smaller. The |
| V4 firmware is used by an out-of-kernel driver employing a variation of |
| the Devicescape MAC layer known as d80211. Once bcm43xx-d80211 reaches |
| a satisfactory level of development, it will replace bcm43xx-softmac |
| in the kernel as it is much more flexible and powerful. |
| |
| A source for the latest V3 firmware is |
| |
| http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o |
| |
| Once this file is downloaded, the command |
| 'bcm43xx-fwcutter -w <dir> <filename>' |
| will extract the microcode and write it to directory |
| <dir>. The correct directory will depend on your distribution; |
| however, most use '/lib/firmware'. Once this step is completed, |
| the bcm3xx driver should load when the system is booted. To see |
| any messages relating to the driver, issue the command 'dmesg | |
| grep bcm43xx' from a terminal window. If there are any problems, |
| please send that output to Bcm43xx-dev@lists.berlios.de. |
| |
| Although the driver has been in-kernel since 2.6.17, the earliest |
| version is quite limited in its capability. Patches that include |
| all features of later versions are available for the stable kernel |
| versions from 2.6.18. These will be needed if you use a BCM4318, |
| or a PCI Express version (BCM4311 and BCM4312). In addition, if you |
| have an early BCM4306 and more than 1 GB RAM, your kernel will need |
| to be patched. These patches, which are being updated regularly, |
| are available at ftp://lwfinger.dynalias.org/patches. Look for |
| combined_2.6.YY.patch. Of course you will need kernel source downloaded |
| from kernel.org, or the source from your distribution. |
| |
| If you build your own kernel, please enable CONFIG_BCM43XX_DEBUG |
| and CONFIG_IEEE80211_SOFTMAC_DEBUG. The log information provided is |
| essential for solving any problems. |