Commit | Line | Data |
---|---|---|
f222313a JL |
1 | |
2 | BCM43xx Linux Driver Project | |
3 | ============================ | |
4 | ||
70a73439 LF |
5 | Introduction |
6 | ------------ | |
f222313a | 7 | |
70a73439 LF |
8 | Many of the wireless devices found in modern notebook computers are |
9 | based on the wireless chips produced by Broadcom. These devices have | |
10 | been a problem for Linux users as there is no open-source driver | |
11 | available. In addition, Broadcom has not released specifications | |
12 | for the device, and driver availability has been limited to the | |
13 | binary-only form used in the GPL versions of AP hardware such as the | |
14 | Linksys WRT54G, and the Windows and OS X drivers. Before this project | |
15 | began, the only way to use these devices were to use the Windows or | |
16 | OS X drivers with either the Linuxant or ndiswrapper modules. There | |
17 | is a strong penalty if this method is used as loading the binary-only | |
18 | module "taints" the kernel, and no kernel developer will help diagnose | |
19 | any kernel problems. | |
f222313a | 20 | |
70a73439 LF |
21 | Development |
22 | ----------- | |
f222313a | 23 | |
70a73439 LF |
24 | This driver has been developed using |
25 | a clean-room technique that is described at | |
26 | http://bcm-specs.sipsolutions.net/ReverseEngineeringProcess. For legal | |
27 | reasons, none of the clean-room crew works on the on the Linux driver, | |
28 | and none of the Linux developers sees anything but the specifications, | |
29 | which are the ultimate product of the reverse-engineering group. | |
f222313a | 30 | |
70a73439 LF |
31 | Software |
32 | -------- | |
33 | ||
34 | Since the release of the 2.6.17 kernel, the bcm43xx driver has been | |
35 | distributed with the kernel source, and is prebuilt in most, if not | |
36 | all, distributions. There is, however, additional software that is | |
37 | required. The firmware used by the chip is the intellectual property | |
38 | of Broadcom and they have not given the bcm43xx team redistribution | |
39 | rights to this firmware. Since we cannot legally redistribute | |
40 | the firwmare we cannot include it with the driver. Furthermore, it | |
41 | cannot be placed in the downloadable archives of any distributing | |
42 | organization; therefore, the user is responsible for obtaining the | |
43 | firmware and placing it in the appropriate location so that the driver | |
44 | can find it when initializing. | |
45 | ||
46 | To help with this process, the bcm43xx developers provide a separate | |
47 | program named bcm43xx-fwcutter to "cut" the firmware out of a | |
48 | Windows or OS X driver and write the extracted files to the proper | |
49 | location. This program is usually provided with the distribution; | |
50 | however, it may be downloaded from | |
51 | ||
52 | http://developer.berlios.de/project/showfiles.php?group_id=4547 | |
f222313a | 53 | |
70a73439 LF |
54 | The firmware is available in two versions. V3 firmware is used with |
55 | the in-kernel bcm43xx driver that uses a software MAC layer called | |
56 | SoftMAC, and will have a microcode revision of 0x127 or smaller. The | |
57 | V4 firmware is used by an out-of-kernel driver employing a variation of | |
58 | the Devicescape MAC layer known as d80211. Once bcm43xx-d80211 reaches | |
59 | a satisfactory level of development, it will replace bcm43xx-softmac | |
60 | in the kernel as it is much more flexible and powerful. | |
f222313a | 61 | |
70a73439 | 62 | A source for the latest V3 firmware is |
f222313a | 63 | |
70a73439 | 64 | http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o |
f222313a | 65 | |
70a73439 LF |
66 | Once this file is downloaded, the command |
67 | 'bcm43xx-fwcutter -w <dir> <filename>' | |
68 | will extract the microcode and write it to directory | |
69 | <dir>. The correct directory will depend on your distribution; | |
70 | however, most use '/lib/firmware'. Once this step is completed, | |
71 | the bcm3xx driver should load when the system is booted. To see | |
72 | any messages relating to the driver, issue the command 'dmesg | | |
73 | grep bcm43xx' from a terminal window. If there are any problems, | |
74 | please send that output to Bcm43xx-dev@lists.berlios.de. | |
f222313a | 75 | |
70a73439 LF |
76 | Although the driver has been in-kernel since 2.6.17, the earliest |
77 | version is quite limited in its capability. Patches that include | |
78 | all features of later versions are available for the stable kernel | |
79 | versions from 2.6.18. These will be needed if you use a BCM4318, | |
80 | or a PCI Express version (BCM4311 and BCM4312). In addition, if you | |
81 | have an early BCM4306 and more than 1 GB RAM, your kernel will need | |
82 | to be patched. These patches, which are being updated regularly, | |
83 | are available at ftp://lwfinger.dynalias.org/patches. Look for | |
84 | combined_2.6.YY.patch. Of course you will need kernel source downloaded | |
85 | from kernel.org, or the source from your distribution. | |
f222313a | 86 | |
70a73439 LF |
87 | If you build your own kernel, please enable CONFIG_BCM43XX_DEBUG |
88 | and CONFIG_IEEE80211_SOFTMAC_DEBUG. The log information provided is | |
89 | essential for solving any problems. |