IBM ThinkPad T41 – going from ipw(4) to ath(4)
I have an IBM ThinkPad T41. It’s a great little laptop. It’s been very reliable,
despite some initial hardware problems. One major
problem has been the wireless NIC. I’ve been having problems with it for over a year.
The original problem
was a total system freeze. This thread
shows how the problem was resolved with a drive upgrade.
This is where my memory becomes hazy. With more recent versions of FreeBSD (e.g. 6), I found
the ipw driver displayed the same problem again. This time, not even ndis(4) could rescue me.
The NIC is pretty stable under Windows XP but under FreeBSD, the ipw driver was just not up to scratch.
I quickly became annoyed with the situation.
I eventually decided that I would not spend any more time on this problem. It was time for new
hardware. I ordered a ThinkPad 11a/b/g Wireless LAN Mini-PCI Adapter II (US) from IBM.
The part number is 73P4301. I ordered it over the phone, but the
IBM web page
outlines all the details. Total cost was CAD$113 including shipping. Delivery took about a month, but
IBM told me upfront that it would be 4-6 weeks.
I highly recommend the Linux ThinkPad Wiki. It is a
great resource of ThinkPad information. They have a page for my T41
and it was there that I found a link to the Hardware Maintenance Manual. This very useful
document has detailed instructions for replacing your NIC. I will not go into details here, but go slowly
and do not miss any steps. Be gentle.
After replacement
After I replaced the NIC, I booted into XP to try out the card. I did not need to add any drivers
and everything worked as expected.
For FreeBSD, I needed to add ath(4) support to the kernel. I did this by adding
the following to the kernel configuration file:
device ath device ath_hal # Atheros HAL (includes binary component) device ath_rate_sampleThen I recompiled and installed the kernel.
After a reboot, the ath0 device was found during probing. DHCP just worked. All good.Infrastructure changes
With a new NIC comes a new MAC address. You may want to alter any filtering you have on your WAP.
In addition, I had to alter my
/usr/local/etc/dhcpd.conf
because of the way I handed out
IP addresses under Windows. Here is what I had:# windows XP host laptop { hardware ethernet 00:94:02:27:67:32; fixed-address laptop.wifi.example.org; }I added a new line for the additional NIC:
# windows XP host laptop { hardware ethernet 00:94:02:27:67:32; hardware ethernet 00:19:ae:06:45:23; fixed-address laptop.wifi.example.org; }The entry I used for FreeBSD did not require modification:
host laptop.example.org {
option dhcp-client-identifier “laptop.example.org”;
fixed-address laptop.wifi.example.org;
}This is because my
/etc/dhclient.conf
contains:send dhcp-client-identifier "laptop.example.org";There is no such setting for Windows as far as I know.
Much happier
I’m much happier with ath(4) than I was with was with ipw(4). If anyone wishes to work on ipw(4) and
needs a NIC, I’ll gladly loan it out in the hopes of providing others with a better wifi experience.