The Compaq W200 Multiport WiFi adapter uses an Orinoco chipset which has an experimental driver that is not in the stock Linux kernel. The driver does WEP only - there are no reports of success with WPA.
You must download the driver source and compile the kernel module yourself. Fortunately, this is not difficult.
The orinoco_usb driver is regarded as very unfinished by the Orinoco driver project, having had little work since 2004, though there are plans to merge it into orinoco_pci. SVN version 1284 of July 2007 is updated for kernel 2.6.22. 1276 of Apr 2007 is updated for kernel 2.6.21. Users of Ubuntu 6.06 or 6.10 must check out an earlier revision.
This device can be very frustrating indeed under Linux (and only slightly less frustrating under Windows). The MultiPort interface inside the lid-mounted shell is in fact USB electrically - if you are good with electronics, you may seriously consider gutting the shell and putting a well-supported USB wifi adapter inside it (Tom's Hardware forums).
There is a driver patch which lets the driver work with kernel 2.6.27 or 2.6.28. David Gerard has a git tree that incorporates patches for 2.6.27 through 2.6.31. If you are using Karmic Koala, follow the instructions here rather than the ones below.
Karmic Koala (9.10): SVN rev 1300 might work with 2.6.31 using David Gerard's patches.
Jaunty Jackalope (9.04): SVN rev 1300 works for 2.6.28-11-generic with the patch (Compaq Evo N610c).
Intrepid Ibex (8.10): SVN rev 1300 works for 2.6.27-9-generic with the patch. You can also use gcc-4.3 and cpp-4.3 without problems (Compaq Evo N410c).
Hardy Heron (8.04): SVN rev 1300 works for 2.6.24-16-generic without the patch being needed (Compaq Evo N610c).
Gutsy Gibbon (7.10): There have been some reports of system being extremely unstable in the orinoco-devel mailing list. One report of a stable system (N610c?). If you have stability problems, do not use Network Manager or KWifiManager - you may in fact need to remove network-manager entirely and set up your wifi from the command line (ip, iwconfig, iwlist, dhclient3). This is annoying, though possibly less annoying than a wifi card sticking out the side of your laptop.
Feisty Fawn (7.04): Using the Network Manager hangs the system. Manual connection with either static IP address or DHCP works. SVN rev 1284 compiles for 2.6.20-16-generic.
For initial setup, you must already be connected to the internet (e.g. via the internal Ethernet).
First, save a copy of this page, so you have instructions to hand on how to recompile the module as needed. You will need to recompile every time your kernel is upgraded, even slightly.
Second, open a Terminal window. All the driver installation is done from the command line.
The following packages are required:
- gcc-3.4 (gcc-3.4-base on ubuntu 6.06)
Where XXX is your hardware type - to find this out, run:
To install these all in one go::
sudo apt-get install build-essential subversion linux-headers-`uname -r` gcc-3.4-base cpp-3.4 curl
Installing the driver
Get a suitable revision of the orinoco_usb driver from SVN. For 6.06 and 6.10:
svn co -r 1273 https://orinoco.svn.sourceforge.net/svnroot/orinoco/branches/usb/
svn co -r 1276 https://orinoco.svn.sourceforge.net/svnroot/orinoco/branches/usb/
For 7.10 (2.6.22-14-generic):
svn co -r 1297 https://orinoco.svn.sourceforge.net/svnroot/orinoco/branches/usb/
For 8.04 (2.6.24-16-generic), 8.10 (2.6.27-7-generic) and 9.04:
svn co -r 1300 https://orinoco.svn.sourceforge.net/svnroot/orinoco/branches/usb/
Download the driver patch (if you're on 8.10 or later) and save it in the same usb directory where the orinoco files are stored
You now need to patch rev 1300 files if you're on 8.10 or 9.04:
cd usb patch -p0 <orinoco_usb-2.6.27.patch
The following 3 files should be patched
orinoco.c orinoco.h orinoco_usb.c
We now need to compile and install the driver:
make sudo make install
Downloading the firmware
Next, download the device firmware. There is a nice script to help us with this. For 6.10 and higher:
cd firmware ./get_ezusb_fw
The firmware file is about 6066kB and the actual firmware is 6976 bytes. If you've downloaded it correctly, you'll see lines like these in an ls -l :
-rw-r--r-- 1 fun fun 6211983 2009-07-10 16:33 AV_WINXP_PC_USB_SR0201.zip ... -rw-r--r-- 1 fun fun 6976 2009-07-10 16:33 orinoco_ezusb_fw
If you get an error "gzip: stdin has more than one entry--rest ignored" edit the get_ezusb_fw file and comment the following line
gzip -cd <$DL_FRAG >ezusb.drv || true
Run the get_ezusb_fw script again and it should work correctly.
The firmware needs to go in the same folder as other firmware.
On Ubuntu 6.06 and higher, you can copy it to the correct place by doing:
sudo cp orinoco_ezusb_fw /lib/firmware/`uname -r`/
On 5.04 and 5.10, do:
sudo cp orinoco_ezusb_fw /usr/lib/hotplug/firmware
Activating the adapter
We now need to load the driver into the kernel:
sudo modprobe -v orinoco_usb
If the green light on the adapter goes on, it's worked! If not, it should work after a reboot.
Tell the system to load the driver automatically on startup. Open a text editor using sudo (e.g. gksudo gedit /etc/modules) and edit /etc/modules and add a new line at the bottom of the file:
Now you should be able to start configuring and using your adapter. Switch the adapter on by pressing Fn and F2. If the adapter has a green light showing then it's switched on.
We can now start configuring the card, using System -> Administration -> Networking. You should read WiFiHowto to find out how to do this if you're not sure.
After a kernel upgrade
You will need to recompile the adapter every time the installed Linux kernel changes even slightly, i.e. once you've rebooted after a linux-kernel update. Go through the steps above in "Installing the driver" (make, sudo make install), then reboot.
If the driver does not then work, connect the system to the Internet (via Ethernet or whatever) and run through all steps above, from getting the drivers from SVN onwards.
Odd things can happen after the adapter's DHCP lease runs out, e.g. the keyboard stops working in X. That it was the wifi was confirmed by hitting Fn-F2 twice, once to switch the wifi off and once to switch it back on; keyboard works again, wait thirty seconds and it gets a new address. Similar things can happen coming back from suspend or hibernate.
So, if in doubt: Fn-F2 to switch the adapter off (green light goes out), wait 10-20 seconds, Fn-F2 to switch it back on (green light goes on). After about 10 seconds, the interface should pick up an address.
(If you're curious, running xconsole while you do this will give you some idea of what your system is doing.)
If after rebooting the wireless adapter stops working, then restarting the wireless interface may fix it. Do ip addr to check the interface name (likely either eth1 or eth2 - the laptop's wired Ethernet socket is likely to be eth0), then do:
sudo ifdown eth1 && sudo ifup eth1
(or eth2 as needed).