Last year, I wrote a post about my efforts in configuring wireless Ethernet with SuSE Linux 10.0. I couldn’t maintain a connection (at the time I was using an IBM ThinkPad T40, a D-Link DWL-G630 PCMCIA card and a D-Link DWL-2000AP+ access point) but this week I decided to give it all another try, this time on a Fujitsu Siemens Lifebook S7010D, which was already running Fedora Core 5 and has a built-in Intel Centrino chipset (hence it should be more widely supported by Linux than the D-Link card was – avoiding the need to use NDISwrapper).
The good news is that the Lifebook’s wireless chipset does have Linux support in the form of native drivers. The bad news is that it’s still not as easy as it should be to get this working! Having said that, I went down so many blind alleys that I’m not really sure what I did in the end to get the drivers installed. Hopefully the jumble of notes below will provide one or two pointers for someone else.
Identifying the hardware
First of all, I needed to know what type of wireless hardware I had and a spot of googling quickly turned up Jean Tourrilhes Linux Wireless LAN Howto, which contains links to many resources but actually gives me the answer to my question – there are three main Intel PRO/Wireless chipsets – the 2100 is an IEEE 802.11b card, the 2200 adds IEEE 802.11g support and the 2915 supports IEEE 802.11a. The later cards also add support for increased security (WPA, etc.). I already knew that the card in my notebook supported 802.11g (pointing to an Intel PRO/Wireless 2200) but confirmed this with the lspci
command, returning (in part):
01:0d.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
Downloading and installing drivers
After arming me with information about my computer hardware, Jean’s howto set me off in the direction of two open source projects – the IEEE 802.11 subsystem for Linux and the Intel PRO/Wireless 2200BG driver for Linux project. One slight problem for me is that the drivers contained on these two sites need to be compiled… and I’m a sort of namby-pamby-need-to-have-it-already-built-for-me Linux user (sorry, but I am). Time to hit my search engine of choice again, this time turning up tutorials for installing Fedora Core 5 on a Dell Latitude D610 (it seems I’m not alone in not being “a ‘compile from source’ guy”) and installing Fedora Core N on a Dell Latitude D600 (including Intel PRO/Wireless 2200BG support) as well as a comment on a Fedora Core 5 Tips and Tricks page that suggested the following process for installing the earlier Intel PRO/Wireless 2100 (for which the process should be similar except for the actual driver files):
Some have asked for step by steps to install the drivers for the Intel Centrino Pro Wireless 2100 chip set. Here is an easy way to get up and running and have a nice GUI in GNOME. This assumes you already have NetworkManager installed from the base Fedora Core 5 repository.
yum install NetworkManager NetworkManager-gnome
Update your system to the latest kernel. Be careful as this can break other kernel modules you have installed, so be sure you have the source/RPMS handy for any packages that may need to be recompiled/reinstalled.
yum update kernel
Add the ATrpms (atrpms.net) repositiory to yum.
wget http://ATrpms.net/RPM-GPG-KEY.atrpms
rpm --import RPM-GPG-KEY.atrpmsNext, install the drivers using yum. There are several dependacies [sic] that it will install as well.
yum install ipw2100
Next, enable NetworkManager to start on boot up.
chkconfig NetworkManager on
chkconfig NetworkManagerDispatcher onReboot your machine so the new kernel module is loaded.
init 6
Once you boot up and login to GNOME, you should see a new icon by the clock. This is very similar to the wireless manager one can find in a very popular commercial OS. (Names omitted to protect the innocent.)
This was all very well, until I got to the point of installing Intel/PRO 2200 drivers (using yum install ipw2200
in place of the yum install ipw2100 command in the quote above), which just flatly refused to find anything appropriate.
To further complicate things, in the process, I’d updated to the latest i686 kernel (2.6.20-1.2300.fc5 in place of 2.6.17-1.2157_FC5) and I could only find RPMs at ATrpms for:
- IEEE802.11 networking stack and kernel modules.
- Intel PRO/Wireless 2200 firmware.
- Intel PRO/Wireless 2200 driver.
but crucially, not the kernel modules for the Intel PRO/Wireless 2200 (I’ve since found them listed in a section for RPMs that are still being tested) and rpm -Uvh ipw2200-1.2.0-45.1.fc5.at.i386.rpm
returned:
error: Failed dependencies:
ipw2200-kmdl-1.2.0-45.1.fc5.at is needed by ipw2200-1.2.0-45.1.fc5.at.i386
Time to roll up my sleeves and compile some drivers… a task which I approached with some trepidation but with a lot of help from a LinuxQuestions.org thread about getting ipw2200 working with Fedora Core 4.
After downloading and extracting IEEE802.11 (ieee80211) v1.2.16 and Intel PRO/Wireless 2200 (ipw2200) v1.2.0 (with firmware v3.0), I ran ./remove-old
twice – once from the the ieee80211-1.2.16 directory and again from ipw2200-1.2.0 (I had to run chmod +x remove-old
first for ieee80211). Then, I ran make
and make install
for ieee80211 and again for ipw2200, although this produced a lot of errors and I’m not sure that it was successful. Only once I’d done that did I find that Fedora Core 5 includes ipw2200 v1.0.8 and all that is required is to install was the firmware (yum install ipw2200-firmware
), which I had done earlier with rpm -Uvh ipw2200-firmware-3.0-9.at.noarch.rpm
.
Not knowing what sort of state my system was in, I rebooted and hoped for the best. Fortunately, this mixture of installation methods had resulted in a working wireless network stack, as shown by the output from dmesg
(only the relevant output is shown here):
ieee80211_crypt: registered algorithm ‘NULL’
ieee80211: 802.11 data/management/control stack, 1.2.16
ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0kmprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
iwconfig eth1
showed that I had even connected to a network (completely by accident), although it was not mine (G604T_WIRELESS and BELKIN54G are popular free wifi providers in the town where I live)!
Warning: Driver for device eth1 has been compiled with version 21
of Wireless Extension, while this program supports up to version 19.
Some things may be broken…
eth1 IEEE 802.11g ESSID:”G604T_WIRELESS”
Mode:Managed Frequency:2.437 GHz Access Point: 00:0F:3D:BA:1F:B2
Bit Rate:54 Mb/s Tx-Power=20 dBm Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=55/100 Signal level=-68 dBm Noise level=-88 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:14 Missed beacon:15
Connecting to my (secured network)
Once again, I found a guide on the ‘net (Durham University’s wireless Linux quick guide) which helped me enormously with configuring a connection to my (WPA) secured network. For some bizarre reason, NetworkManager
(which should provide a GUI interface to connect to whatever networks are detected) refused to connect; however I managed to maintain a stable connection by configuring the wpa_supplicant configuration file (/etc/wpa_supplicant/wpa_supplicant.conf) to read:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=users
network={
ssid="Home"
scan_ssid=1
pairwise=TKIP
psk="mysecretkey"
group=TKIP
key_mgmt=WPA-PSK
proto=WPA
}
Then, running wpa_supplicant -Dwext -ieth1 -c/etc/wpa_supplicant/wpa_supplicant.conf
to connect to the network (after I’d resolved some issues in the configuration file – diagnosed using the -dd
option for wpa_supplicant – discovering that the SSID is case sensitive).
After issuing the dhclient eth1
command to obtain an IP address (and verifying that one had indeed been obtained using ifconfig eth1
), iwconfig eth1
returned:
Warning: Driver for device eth1 has been compiled with version 21
of Wireless Extension, while this program supports up to version 19.
Some things may be broken…
eth1 IEEE 802.11g ESSID:”Home”
Mode:Managed Frequency:2.437 GHz Access Point: 00:13:46:xx:xx:xx
Bit Rate:54 Mb/s Tx-Power=20 dBm Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx–xxxx Security mode:open
Power Management:off
Link Quality=100/100 Signal level=-19 dBm Noise level=-88 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:1
Start the wireless interface at boot time
In order to make eth1 active at boot time, it was necessary to run system-config-network and add the device to the common profile. At first I followed Bill Moss’ Fedora Core 2 network profiles article but then decided that it would be better to maintain a single profile, with both wired (eth0) and wireless (eth1) interfaces activated when the computer starts.
In order to start wpa_supplicant at boot time it was necessary to add the following commands to /etc/rc.local:
/sbin/ifdown eth1
/usr/sbin/wpa_supplicant -Dwext -ieth1 -c/etc/wpa_supplicant/wpa_supplicant.conf -Bw
sleep 5
/sbin/dhclient eth1
The main drawback with this approach is that the wireless radio is permanently active. Ideally, NetworkManager
could be used with wpa_supplicant
; however, for now the workaround is to use the Lifebook’s radio on/off switch.
Miscellaneous notes
One guide that I found suggested that the following commands were necessary in order to enable the wireless connection:
depmod -a
modprobe ieee80211
modprobe ipw2200
In practice, I haven’t found this to be necessary but this could be because Fedora Core 5 already included the appropriate configuration items by default.
iwlist
, wpa_cli
and wpa_gui
are useful commands for examining connection properties. Other useful commands when troubleshooting are be lsmod | grep ieee80211
and lsmod | grep ipw2200
.
Before the operating system would route packets across the wireless connection, I found it necessary to take down the wired connection (ifdown eth0
).
I just found this in the Fedora Core Wiki:
Seems like that’s a lot easier than installing all the latest versions as I did!