Ubuntu 9.04 (Jaunty Jackalope) with 2.6.30.4 Kernel on HP 2140

Recently I bought an HP mini 2140 netbook and decided to install Ubuntu on it. As I browsing around for known issues on this machine I get into that with default 2.6.28.14 Kernel the Dual Core option from BIOS wouldn't work and installation crashed. After some readings I found that the latest Kernel (currently 2.6.30.4) fixed the problem so I proceed installation with Dual Core option disabled.

After that everything works like charm except wifi. I look around again in Ubuntu forums, blogs etc and come with this solution from Jocelyn's Blog. Let's see it step by step:

- Download and compile latest Kernel, or use my ready made 2.6.30.4

to install these files just run dpkg -i packagename.deb

- preparing the installation of STA Broadcom drivers
sudo apt-get install module-assistant
sudo module-assistant prepare

- download the Broadcom STA driver from
https://launchpad.net/debian/sid/+source/broadcom-sta/5.10.91.9-1

- the 32-bit driver:
https://launchpad.net/debian/sid/+source/broadcom-sta/5.10.91.9-1/+files/broadcom-sta_5.10.91.9.orig.tar.gz

- download also debian patches for this STA drivers version from:
http://patch-tracking.debian.net/package/broadcom-sta

mkdir wifi;cd wifi

# download all needed files
wget http://patch-tracking.debian.net/patch/series/dl/broadcom-sta/5.10.91.9-1/01-hidden-essid.patch
wget http://patch-tracking.debian.net/patch/series/dl/broadcom-sta/5.10.91.9-1/02-license.patch
wget http://patch-tracking.debian.net/patch/series/dl/broadcom-sta/5.10.91.9-1/03-2.6.29.patch
wget http://patch-tracking.debian.net/patch/series/dl/broadcom-sta/5.10.91.9-1/04-2.6.30.patch


mkdir hybrid;cd hybrid

# unpack the driver
tar zxf ../broadcom-sta_5.10.91.9.orig.tar.gz

cd broadcom-sta/

# patch the driver
patch -p1 < ../../01-hidden-essid.patch patch -p1 < ../../02-license.patch patch -p1 < ../../03-2.6.29.patch patch -p1 < ../../04-2.6.30.patch cd i386/

# make the module
make -C /lib/modules/`uname -r`/build M=`pwd`

# copy it to modules location and load the module
sudo cp wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/
sudo depmod -a
sudo modprobe wl

- in order to make sure the wl module is loaded after the reboot I’ve added wl to /etc/modules
sudo echo wl >> /etc/modules

Everything went well but wifi remained unavailable. I tried lspci -v and realize that Kernel driver was in use wasn't the wl but ssb (b43-pci-bridge). Then I read about KernelModuleBlacklisting from Debian Wiki and come up with the following solution:

sudo echo blacklist b43 >> /etc/modprobe.d/b43.conf
sudo echo blacklist ssb >> /etc/modprobe.d/ssb.conf
sudo modprobe -r b43
sudo modprobe -r ssb
sudo modprobe -r wl
sudo modprobe wl
sudo depmod -ae

- recreate initrd and restart Network Manager

update-initramfs -u
sudo service NetworkManager restart

and voila! wifi worked perfectly at last!
This tutorial will probably work for all devices using Broadcom BCM4322.