Quote Originally Posted by luca_linux
Hi!
I've seen there are many requests about how to get ipw2200 and wpa to work. So, as I've managed to get them to work, I've decided to write a howto. It's also good if you just want to get ipw2200 without wpa; just follow the first part in this case.

We have to compile and install the latest ipw2200 1.0.6 driver from http://ipw2200.sourceforge.net and we also have to install the firmware, as the ipw2200 0.19 included in the standard installation of Hoary doesn't support wpa.

Since ipw2200 1.0.5, ipw2200 project does not include ieee80211 subsystem anymore, so we also have to compile and install them from http://ieee80211.sourceforge.net.

Since we have to compile the driver from sources, we need the packages: build-essential, gcc, linux-headers-myOwnKernelVersion.
So:
Code:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gcc
sudo apt-get install linux-headers-$(uname -r)
Note: if you have the kernel sources installed, you won't need the linux-headers. And if you're running a custom kernel compiled by you, you won't need to install the packages mentioned above.

First of all, follow these instructions to add extra repositories, which are always handy to have.

Here are the steps (for newbies: the following commands are supposed to be typed in the same console session):

First of all, download the firmware from here.
Then install it:
Code:
sudo tar xvzf ipw2200-fw-2.3.tgz
sudo cp ipw-2.3-*.fw /usr/lib/hotplug/firmware/
Now download the latest ieee80211 subsystem from here.
Then untar it and change your current directory into the driver's one:
Code:
sudo tar xvzf ieee80211-1.0.3.tgz
cd ieee80211-1.0.3
Now run the remove-old.sh script that comes with the driver package in order to make sure that any old module is deleted:
Code:
sudo sh remove-old
Now download the latest ipw22000 driver from here.
Then untar it and change your current directory into the driver's one:
Code:
cd ..
sudo tar xvzf ipw2200-1.0.6.tgz
cd ipw2200-1.0.6
Now run the remove-old.sh script that comes with the driver package in order to make sure that any old module is deleted:
Code:
sudo sh remove-old
Now your system is clean and it's time to make and install ieee80211, so:
Code:
cd ..
cd ieee80211-1.0.3
make
sudo make install
Then make and install ipw2200 as well:
Code:
cd ..
cd ipw2200-1.0.6
make
sudo make install
Note: it seems there's currently a bug of remove-old script on some systems; if you get errors when compiling ieee80211 about the presence of old modules, you'll have to delete them manually, after having unloded all ieee80211* modules through "modprobe -r module_name" (type "lsmod" to see the current loaded modules).


Now we have to download and install the wpa_supplicant package:
Code:
sudo apt-get install wpasupplicant
Then you have to create a wpa_supplicant.conf in /etc, so:
Code:
sudo gedit /etc/wpa_supplicant.conf
And paste the following lines in the text editor:
Code:
ctrl_interface=/var/run/wpa_supplicant

network={
       ssid="your_network_name"
       scan_ssid=1
       proto=WPA
       key_mgmt=WPA-PSK
       psk="your_secret_key"
}
Anyway there are further configuration examples in /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz.

Then reboot to make sure that the new modules are loaded successfully and type:
Code:
dmesg | grep ipw
to see if there are errors.
Then type the following command to configurate wpa_supplicant:
Code:
sudo wpa_supplicant -B -i eth1 -c /etc/wpa_supplicant.conf -D ipw -w -dd
Note: "eth1" is your wireless device.
If you get troubles establishing the connection with the AP, try to take the "-w" flag out.

Some systems may have problems in finding the AP; so, if you get troubles finding your AP, add the "ap_scan=2" option to let wpa_supplicant performing the scan instead of the wireless card driver. So your /etc/wpa_supplicant.conf will look like the following:
Code:
ctrl_interface=/var/run/wpa_supplicant
ap_scan=2

network={
       ssid="your_network_name"
       scan_ssid=1
       proto=WPA
       key_mgmt=WPA-PSK
       psk="your_secret_key"
}
Some systems may have problems in connecting to the AP; if you get this issue, try to add the directive "pairwise=TKIP" in the relative network section of /etc/wpa_supplicant.conf, so that it looks like this:
Code:
ctrl_interface=/var/run/wpa_supplicant

network={
       ssid="your_network_name"
       scan_ssid=1
       proto=WPA
       key_mgmt=WPA-PSK
       pairwise=TKIP
       psk="your_secret_key"
}
Of course, if you have problems both findind the AP and connecting to it, you have to add both "ap_scan=2" and "pairwise=TKIP", like the following:
Code:
ctrl_interface=/var/run/wpa_supplicant
ap_scan=2

network={
       ssid="your_network_name"
       scan_ssid=1
       proto=WPA
       key_mgmt=WPA-PSK
       pairwise=TKIP
       psk="your_secret_key"
}
Now we have to create a small script (first provided by fulco and edited by me) in order to get wpa starting automatically at boot:
Code:
sudo gedit /etc/init.d/wifi_wpa.sh
Here's the script:
Code:
#! /bin/sh
# wifi: wpa_supplicant init
echo " * [Wifi]: Enabling WPA supplicant..."
if [ -x /usr/sbin/wpa_supplicant ]; then
    /usr/sbin/wpa_supplicant -B -i eth1 -c /etc/wpa_supplicant.conf -D ipw -w
fi

exit 0
Change the script's permissions to allow it to be executed:
Code:
sudo chmod +x /etc/init.d/wifi_wpa.sh
And create a symlink to define the relative service:
Code:
sudo ln -s /etc/init.d/wifi_wpa.sh /etc/rcS.d/S40netwifiwpa
Ok, that's all!
I hope this howto will be helpful.

thanks for this. can it be added to the wiki