Due to the problem I was having connecting to ad-hoc network in Ubuntu 8.10, I decided to take the plunge and try using the ipw3945 driver instead of iwl3945 (which is in the kernel since ubuntu 8.04 I think?).
To save the suspense, I was able to compile a new (old) ipw3945 driver for my system, install the driver, and get my system connecting to an ad-hoc network, tethering to an iPhone running PdaNet.
The iPhone/PdaNet stuff is for another post.
But here’s what I did to install iwl3945…
This was my first “linux driving compiley kinda thing”, so I just followed the advice from the following posts (including comments) word-for-word hahaha:
In my own words…
Download ipw3954-1.2.2 from http://ipw3945.sourceforge.net/downloads.php.
Download unicode from http://bughost.org/ipw3945/ucode/ipw3945-ucode-1.14.2.tgz.
Download debian package from http://snapshot.debian.net/archive/2007/08/06/debian/pool/non-free/i/ipw3945d/ipw3945d1.7.22-5amd64.deb *NOTICE: amd64, the 64bit deb for me, i386 deb is available at the same location ;-)
Download the 3 patches from Juergen’s website:
http://funknetztest.de/downloads/ipw3945/ipw3945-1.2.2-build.patch - This patches the ipw3945-1.2.2 Makefile to build on 2.6+ kernels
http://funknetztest.de/downloads/ipw3945/ipw3945-1.2.2-kernel-2.6.24.patch - This patches ipw3945.h to compile on 2.6+ kernels
http://funknetztest.de/downloads/ipw3945/ipw3945-1.2.2-kernel-2.6.27.patch - This patches ipw3945.c to compile on 2.6.27 kernel, and later too hopefully(?).
Extract everything into a tidy place.
sudo cp ipw3945-ucode-1.14.2/ipw3945.ucode /lib/firmware
- Patch driver:
patch ipw3945-1.2.2/Makefile ipw3945-1.2.2-build.patch patch ipw3945-1.2.2/ipw3945.c ipw3945-1.2.2-kernel-2.6.27.patch patch ipw3945-1.2.2/ipw3945.h ipw3945-1.2.2-kernel-2.6.24.patch
- Build driver:
- Create and install deb package:
- Install ipw3945 daemon (notice 64bit again, also the daemon will not start since the driver is not loaded yet):
sudo dpkg -i ipw3945d_1.7.22-5_amd64.deb
- Tell Ubuntu to load ipw3945 instead of iwl3945.
Create the /etc/modprobe.d/00local file as root:
- And add the following lines to it:
#disable iwl3945 to allow ipw3945 install iwl3945 /bin/true
- And reboot :-)
- Discussion: http://www.ubuntugeek.com/using-ipw3945-instead-iwl3945-in-hardy.html
- Step-by-step for old kernel: http://forums.debian.net/viewtopic.php?t=29245&highlight=howto+ipw3945
- Patches for 2.6.x kernel: http://www.funknetztest.de/?p=6
- Essentially this page in Spanish: http://proyectok.co.cc/index.php/Howto/Linux/Ubuntu-8.10-usando-el-driver-ipw3945.html