[Update: As pointed out by Dean Brettle and, subsequently, by AM in the comments, rpmfusion added the kmod-staging package. The steps below may be useful if I ever need to compile a single module again.]
The driver for the wireless on the Lenovo S10-3 is included in the staging directory of the kernel. Fedora 15, unfortunately, did not enable it and wl.kmod or brcm80211.kmod were not available from rpmfusion repository either.
So, the best option was to download the source and enable it. The instructions to download the source of the kernel and prepare the source tree were available at http://fedoraproject.org/wiki/Docs/CustomKernel. The kernel source was now in the rpmbuild/BUILD/kernel-2.6.38.fc15/ directory.
The following steps helped to build only the desired module
Notes:
The driver for the wireless on the Lenovo S10-3 is included in the staging directory of the kernel. Fedora 15, unfortunately, did not enable it and wl.kmod or brcm80211.kmod were not available from rpmfusion repository either.
So, the best option was to download the source and enable it. The instructions to download the source of the kernel and prepare the source tree were available at http://fedoraproject.org/wiki/Docs/CustomKernel. The kernel source was now in the rpmbuild/BUILD/kernel-2.6.38.fc15/ directory.
The following steps helped to build only the desired module
- Modify the .config file to include
CONFIG_BRCM80211=m - Make sure that the following details in Makefile are as per the running kernel, e.g.
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 38
EXTRAVERSION = .6-27.fc15.x86_64 - Run the command
$ make drivers/staging/brcm80211
This step prompted me to enable the additional option -
CONFIG_BRCM80211_PCI=y - $ make M=drivers/staging/brcm80211/
- $ sudo make modules_install M=drivers/staging/brcm80211/
- Looking at the OpenSuse's /lib/firmware/brcm, I created two softlinks:
$ sudo ln -s bcm43xx-0-610-809-0.fw bcm43xx-0.fw
$ sudo ln -s bcm43xx_hdr-0-610-809-0.fw bcm43xx_hdr-0.fw - Add the driver:
$ sudo modprobe brcm80211
Notes:
- If step 2 was not done, modprobe failed to load brcm80211 - invalid module format. The log reported a more meaningful problem - version magic mismatch and the driver was unloaded.
- If step 6 was not done, the driver was loaded but the log reported an error that failed to find firmware /lib/firmware/brcm/bcm43xx-0.fw.
- While searching (unsuccessfully) for an explanation for why steps 3 and 4 were needed, I came across a somewhat different way to compile just one module - http://www.debian-administration.org/articles/640.
Thanks for the post! It got me 95% of the way there. I just needed to add step 3.5:
ReplyDelete$ make modules_prepare
and replace steps 5-7 with:
$ su
# mkdir /lib/modules/`uname -r`/kernel/drivers/staging/brcm80211
# cp drivers/staging/brcm80211 /lib/modules/`uname -r`/kernel/drivers/staging/brcm80211
# depmod -a
# yum update linux-firmware
# modprobe brcm80211
Actually, it looks like just installing the kmod-staging package from RPM Fusion is now sufficient.
ReplyDeleteThanks. It makes life much easier.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteHere is a better solution for Googlers:
ReplyDeleteInstall kernel-staging
Install bcm43xx-fwcutter
blacklist "wl" in case you have installed it
BAM !
Let me know if it doesn't work
ReplyDelete