Fedora Core 2 Linux and Broadcomm B44 driver (e.g. Dell 8600), or just building your own kernel

by Uche Ogbuji

Update: the b44 driver discussed in this article is not wireless. With the Dell 8600 you can choose which Wifi adapter you get. I picked the Centrino (Intel PRO/Wireless 2100). I have it working just fine without ndiswrapper, but I'll cover that in a separate article.



I've been meaning to post this article for a long time, but haven't had a chance. I bought a Dell 8600 laptop as my main workstation and bumped up its RAM to 2GB. Soon after Fedora Core 2 Linux came out I braved the dual-boot-WinXP bug and installed it on the Dell. Turned out I had no problems with my dual boot set-up, but I was having trouble with lockups on boot up while loading the network driver. I upgraded from the original FC2 kernel 2.6.5-1.358.i686 to 2.6.6-1.435.i686 but that didn't help.



I found the relevant bug report (viva OSS). Turns out I'm a victim because I have 2GB of memory. Once kernel-savvy developer Pekka Pietikäinen borrowed enough memory to
trigger the bug on his machine with the Broadcomm chipset, he confirmed the bug and worked up a patch that avoids the problem in exchange for some harsh restrictions
on the driver. Pekka has since refined the patch enough that it's expected to be released in 2.6.9 or so, but for now I used Pekka's original patch to build a new kernel. Here's how I did so. I assume you have apt-rpm set up.



#I do all the following as root.
#You might want to take a more paranoid approach

#Make sure kernel source is available
#Pick from several available kernel versions
apt-get install kernel-sourcecode=2.6.6-1.435

cd /usr/src/linux-2.6.6-1.435/

#Copy over one of the stock Fedora Core configs
#Pick the right one for your architecture from the ones in the configs dir
cp configs/kernel-2.6.6-i686.config .config

#Grab and apply the patch
mkdir /usr/local/src/kernel-patches
wget -O /usr/local/src/kernel-patches/b44-largemem.pat \
https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=100988
#You should get no patch errors or failures
patch -p1 < /usr/local/src/kernel-patches/b44-largemem.pat

#Build it
make #Took about 27 minutes
make modules_install
make install

#You should now have in /boot the likes of vmlinuz-2.6.6-1.435custom,
#initrd-2.6.6-1.435custom.img and System.map-2.6.6-1.435custom
#You should now have /lib/modules/2.6.6-1.435custom
#/boot/grub/grub.conf should also be updated to launch the new kernels

#mv arch/i386/boot/bzImage /boot/vmlinuz-2.6.6-1.435.patched


If you happened to edit the kernel config I recommend copying the updated
config to /boot (e.g. cp .config /boot/config-2.6.6-1.435custom)



Despite Pekka's modest and cautious description of his patch, I've had no problems with it, and the performance is just fine. I haven't bothered to update the patch to any of his more recent refinements because it just ain't broke right now. Thanks Pekka. Drinks are on me if we meet.



I've installed some kernel updates since then in the hopes Pekka's patch was incorporated. Each time, Grub is set up to make the new kernel the default, and I just manually edit /etc/grub.conf to make 2.6.6-1.435custom the default. It's just a matter of moving the stanza (e.g.)



title Fedora Core (2.6.6-1.435custom)
root (hd0,4)
kernel /boot/vmlinuz-2.6.6-1.435custom ro root=LABEL=/ noapic allowcddma apm=off acpi=on rhgb
initrd /boot/initrd-2.6.6-1.435custom.img


back up above all similar entries and then running "grub" by hand.



5 Comments

llimllib
2004-10-01 21:01:12
b44 driver on fedora
Uche, did Fedora install the b44 driver by default? I have the same laptop as you (and love it) but I had to use the windows wireless drivers with ndiswrapper to get my card to work (detailed here).


I just did a quick check, and it looks like I have the driver, so I'll try and install it. It'd be nice to have a native driver.

uche
2004-10-01 21:33:44
b44 driver on fedora
The b44 is the reguler (wired) Ethernet adapter, not the wireless. Which wireless adapter you got depends on how you configured your Dell. If you got one of the Centrino adapters (2100 or 2200), you can use Intel's OSS drivers (on Sourceforge) without worrying about ndiswrapper. There are a couple of gotchas and tomorrow I'll post an article covering how I got my wireless working.
llimllib
2004-10-02 18:59:32
ahha
gotcha. I have the Dell licensed broadcomm wireless card, not the intel one. My wired card always worked fine, so I never worried about it. The wireless one, however, took some effort to get going right.
uche
2004-10-02 21:13:19
ahha
O. Interesting. I didn't know the Dell "TrueMobile" cards were Broadcomm OEMs. I think perhaps Dell should find a new supplier :-) 'specially if they wanna keep on pretending they care about Linux users.


Anyway, seems the clarification you prompted me to make was extra important. Thanks.

jimcooncat
2004-12-23 08:38:51
Thank you!
Bought a 1GB module to add to the paltry 256MB that was in a new Dell machine. Couldn't understand why Knoppix worked when my fairly new Fedora Core wouldn't. You saved the day! Popped out the original 256 and now it works fine on 1GB.


I see from the bug report you linked to that the fix has been incorporated in a newer kernel. Sometime soon I'll try it, but right now gotta go on holiday.