The _Real_ Way to Install the New Madwifi Driver for the EEE PC

The _Real_ Way to Install the New Madwifi Driver for the EEE PC

Warning: these instructions no longer work. For one, the madwifi archive is now contained as a .tar.gz within the source archive. Which makes things a little easier. The basic outline of what you need to do (replace the source, uupdate, dpkg-buildpackage) is the same, but don't try blindly following along with these instructions.

Up until a few weeks ago, your options for getting wireless working with a different distribution on the eee PC were limited. You could use the Windows drivers, in combination with ndiswrapper, or you could use the supplied kernel: That all changed after Atheros released the HAL the madwifi-ng guys needed to support the eee's AR5007 chipset.

But, all I could find around the place were really bad instructions for installing the updated drivers. Most authors recommended removing the linux-restricted-modules package altogether, then installing madwifi-ng with the usual "make && make install" dance. Not only is removing linux-restricted-modules inconvenient, it's also an overblown measure; you can disable just the parts you don't want in /etc/default/linux-restricted-modules-common.

I find it disatisfying to not use packaging. But I also don't want to use a tailored distribution like eeeXubuntu. Debian-based distros have a powerful, easy way of dealing with building from source (don't let Gentoo or Arch users tell you otherwise) and you should use it! Here's what you should do if you want to keep on using Ubuntu or Xubuntu, and you want a future-proof way of trying the new driver now. Here's the right way to do it:

Grab what you need:
# apt-get install dpkg-dev build-essential fakeroot devscripts  # Needed to build any packages
# apt-get build-dep linux-restricted-modules-2.6.22-14-386  # Needed to build this package

$ mkdir build  # Because apt-get source puts things in the current directory, and we're going to have a fair bit of crap in there
$ cd build
$ apt-get source linux-restricted-modules-2.6.22-14-386  # Ensure you have a deb-src line for restricted in /etc/apt/sources.list first

Those downloads, together, should put you back a couple of hundred megabytes. I didn't say this was the most efficient way, just the best. I'd recommend doing all this on a different Ubuntu machine to your eee PC, if you have one lying around; things will build faster, and space is less likely to be an issue. Anyway, next up:

Update the source:
$ tar zxf linux-restricted-modules-2.6.22_2.6.22.4.orig.tar.gz
$ cd linux-restricted-modules-2.6.22-
$ rm madwifi-0.9.3.tar.bz2

$ wget
$ tar zxf madwifi-ng-r2756-20071018.tar.gz  # A renaming dance
$ rm madwifi-ng-r2756-20071018.tar.gz
$ mv madwifi-ng-r2756-20071018 madwifi-r2756
$ tar -cf madwifi-r2756.tar madwifi-r2756/ --remove-files
$ bzip2 madwifi-r2756.tar

$ cd ../../
$ tar -cf linux-restricted-modules-2.6.22- linux-restricted-modules-2.6.22-
$ mv linux-restricted-modules-2.6.22- linux-restricted-modules-2.6.22-

$ cd linux-restricted-modules-2.6.22-
$ uupdate -u linux-restricted-modules-2.6.22- -v  # Should get a "success!"

$ cd ../linux-restricted-modules-2.6.22-
$ rm *
$ wget '' -O 0-ar5007.diff

Now you have the source that was used to build linux-restricted-modules, only with a snapshot of madwifi, and a patch for the new HAL. All that remains is to get it built into a nice binary package you can ship off to your eee PC.

Getting it all to build:
$ cd ../../debian
$ mv rules rules.old
$ sed 's/madwifi_version = 0\.9\.3/madwifi_version = r2756/' < rules.old > rules
$ chmod +x rules

$ dch -D UNRELEASED  # Optional - update the changelog with a description

$ cd ../  # You should be back in linux-restricted-modules-2.6.22-
$ dpkg-buildpackage -rfakeroot  # Now grab some coffee or a beer

The resulting .deb is 17MB. Otherwise I'd throw it up somewhere. Email me (my name at dubdot dot com) if you want it.