| « Scroll wheel on IBM/Lenovo Thinkpads | Transcoding with Amarok » |
One blob less for New Year
In order to celebrate New Year in a bit geeky way I decided to rid på IBM Thinkpad x60s of yet another blob that have been irritating me for a long time, the blob provided by ipw3945d. Instead I installed the completely open iwlwifi driver (note:only needing the binary ucode as some have pointed out). For future reference here is a short writeup of what I did.
First rid your system of the binary blobs:
emerge -Cv ipw3945d ipw3945-ucode
Get ready to install iwlwifi by reconfiguring your kernel and ensure the following options are enabled:
CONFIG_MAC80211=m
And then recompile your kernel. Note that you need a pretty recent kernel to have the new mac80211 stack .
As iwlwifi is still masked we have to unmask it by editing /etc/portage/package.unmask:
net-wireless/iwlwifi
net-wireless/iwl3945-ucode
Also they are still not stable so we also have to edit /etc/portage/package.keywords:
net-wireless/iwlwifi ~x86
net-wireless/iwl3945-ucode ~x86
At last I only have a 3945ABG card, lspci output shows:
Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
So I enabled ipw3945 and disabled ipw4945 by editing /etc/portage/package.use:
net-wireless/iwlwifi ipw3945 -ipw4965
Now we're ready to emerge iwlwifi:
emerge -va iwlwifi
Now for somw reason udev rename the master interface to eth2 as shown in by dmesg output:
udev: renamed network interface wmaster0 to eth2
As long as you don't reconfigure udev your real interface will be named wlan0_rename. I worked around that problem by commenting out the following line in /etc/udev/rules.d/70-persistent-net.rules:
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:18:de:73:9b:c5", NAME="eth2"
Then your real interface will be named wlan0. This appears currently undocumented on the Gentoo Wiki HARDWARE ipw3945.
For network setup and wpa_supplicant you just have to substitue wlan0 for eth2:
sed -i -e "s/eth2/wlan0/g" /etc/conf.d/net
Ensure that the iwl3945 module is loaded at bootup:
echo iwl3945 >> /etc/modules.autoload.d/kernel-2.6
Then update init scripts and you're ready to reboot:
rc-update del default ipw3945d
rc-update del default net.eth2
cd /etc/init.d
rm net.eth2
ln -s net.lo net.wlan0
rc-udpate add default net.wlan0
reboot
Enjoy networking with one blob less and Happy New Year!
Trackback address for this post
7 comments
AP denied association (code=1)
do you got any idea about how to solve this ?
myhost # wpa_supplicant -Dwext -i eth1 -c /etc/wpa_supplicant/wpa_supplicant.conf
Trying to associate with 00:1d:7e:55:45:5e (SSID='linksys5' freq=2462 MHz)
Associated with 00:1d:7e:55:45:5e
ioctl[SIOCSIWENCODEEXT]: Invalid argument
WPA: Failed to set PTK to the driver.
I'm a little concerned installing the hard masked iwlwifi driver. Do you have any hints how to make wpa work with ipw3945 in my case?
Thx in advance, Dolfy
Sorry I don't have any hints for the problem you're seeing. But it took me quite some time to get WPA working for the ipw3945 in the first place. Anyway the setup of wpa_supplicant should be almost the same running either the iwl or ipw driver.