Recently in hardware Category

Linux kernel powered wireless card.

| 9 Comments | 1 TrackBack

A bit of background first. Last year I got a new laptop (HP dv6420la). All worked fine, except for the wireless card. It is a BCM4312 rev 02. It only worked using ndiswrapper. This was acceptable, because in the end the important thing was that the tool (the laptop) worked. But I always had the feeling that it was not perfect. Besides, half the time it didn't booted correctly because the wireless card didn't initialized ok. This hanged the machine and the only solution was to cold reboot the laptop. Not very good for my files but that was the price to pay in order to have a working wireless card. All the time I follow the news on linuxwireless.org waiting for the time when native kernel support for my wireless card were incorporated to the mainline kernel. From time to time I installed new versions of the kernel and tested the card without success, but the progress was evident. My hopes were bigger and bigger as the months passed. Finally (thanks Larry Finger, the author of the patch, and the linux wireless team) mainstream kernel included the code necessary to drive the BCM4312 rev 02 card.

It was included in kernel 2.6.25 and this kernel was stamped stable just two days ago. So, one more time (hoping it were the last) I put to test a new kernel in my laptop.

I downloaded the full sources from kernel.org (because it isn't yet in debian repositories). As root:


laptop:~# cd /usr/src
laptop:~# wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2

Then I installed the required dependencies needed to custom compile/install a kernel (instructions here):

laptop:~# apt-get install build-essential fakeroot

I unpacked the sources:

laptop:~# tar jxf linux-2.6.25.tar.bz2
laptop:~# cd linux-2.6.25

I copied the config file from my current kernel:

laptop:~# cp /boot/config-2.6.24-1-amd64 .config

and made the kernel package:

laptop:~# fakeroot make-kpkg --initrd --revision=miguel.1.0 kernel_image

This compiled the kernel and built the deb package leaving it in /usr/src/linux-image-2.6.25_miguel.1.0_amd64.deb. I chose the default answers in the config phase. Finally I installed it with:

laptop:~# dpkg -i /usr/src/linux-image-2.6.25_miguel.1.0_amd64.deb

As I was using ndiswrapper (as told here), I had to undo the changes made for ndiswrapper to work:

laptop:~# /etc/init.d/networking stop
laptop:~# rmmod ndiswrapper
laptop:~# ndiswrapper -r bcmwl5
laptop:~# m-a purge ndiswrapper --force
laptop:~# dpkg -l |grep ndiswrapper # to check ndiswrapper packages
# update the following accordingly
laptop:~# aptitude purge ndiswrapper-common ndiswrapper-source ndiswrapper-modules-2.6.22-2-amd64 ndiswrapper-utils-1.9

Also, I removed bcm43xx from /etc/modprobe.d/blacklist, and finally left just the following lines in /etc/network/interfaces:

auto lo
iface lo inet loopback

in order to let NetworkManager to manage the network interfaces (wired and wireless).

The time to test this setup came, so I rebooted the laptop and watched the boot messages. No errors. Finally the led turned blue and when I logged in with my user the NetworkManager showed a list with all the wireless networks available. I chose mine and I was showed a windows asking for my password. I entered it and the connection was made.
So here I am, writing this from my recently and brand new kernel powered BCM4312 rev 02 wireless card.

So, thanks to the ndiswrapper team, but I have to say goodbye. I invite you to update to kernel 2.6.25 and to left behind ndiswrapper.

Thanks to the Linux Wireless team, and in general to the FOSS community for the work made. Thank you all.

Blame Apple. Laptop on sale!

| 3 Comments | No TrackBacks

Macbook Air

And my current laptop is just 5 months old! Grrr.

Well, does anyone want to buy a laptop? :)

About this Archive

This page is a archive of recent entries in the hardware category.

gnu/linux is the previous category.

humor is the next category.

Find recent content on the main index or look in the archives to find all content.