HARDWARE ipw2200

From Gentoo Linux Wiki

Jump to: navigation, search
This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

[edit] Resources

[edit] Kernel 2.6.14

As of version 2.6.14, the kernel supports ipw2200 natively.

The ipw2200 driver is under continuous development, though, so the external driver is probably more up-to-date than the in-built driver shipped with your kernel.

Here are the steps to enable kernel build-in driver:

Networking->Generic IEEE 802.11 Networking Stack

 [M] Enable Generic IEEE, WEP/CCMP/TKIP

Device Drivers->Network Device Support->Wireless LAN (non)

 [M] Enable Intel PRO/Wireless 2200BG and 2915ABG Network Connection

For kernel 2.6.14 to 2.6.16, you need to install ipw2200-firmware version 2.4 (3.0 won't work). For installation try:

 emerge -av "=net-wireless/ipw2200-firmware-2.4"

Use -Dwext for wpa_supplicant (-Dipw won't work)

You don't need to emerge the external ieee80211 and ipw2200 modules afterwards.

To start the ipw2200 module:

modprobe ipw2200

To make the module load automatically at boot add ipw2200 to your /etc/modules.autoload.d/kernel-2.6 configuration file.

[edit] Kernel 2.6.17

The native support for ipw2200 in kernel 2.6.17 works as well, but only with ipw2200-firmware-3.0 (and udev-087). (Note: As of version 2.6.17, the kernel expects ipw2200_*.fw names instead of something like ipw-2.4-*.fw. But how will we install the following version of the firmware, while retaining the ability to fall back to version 3.0? Should we find a way to incorporate the version number in the directory name? Or ipw2200-*.fw are just symlinks to names that do incorporate version numbers? Either way, the earlier version of the driver would not automatically get the correct version of the firmware.)

You need to compile ipw2200 support as a module! (You can add the "ipw2200" module to /etc/modules.autoload.d/kernel-2.6 then.) The Generic IEEE 802.11 Networking Stack can be built into the kernel, though.

[edit] Alternative

Build your kernel with:

  • select the 802.11 stack (under 'networking') as a built in (select everything)
  • under the wireless lan category select 'Intel PRO/Wireless...' as a module
  • Now, compile your kernel
  • Emerge the FIRMWARE (version 3).
  • After the firmware is installed make sure you add "ipw2200" to the autoload modules (see above).
  • Restart your computer. next do the following (either as sudo or root):
  • grep ipw2200 /var/log/everything/current

if you get the following:

File: /var/log/everything/current

[kernel] ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, git-1.1.1
[kernel] ipw2200: Copyright(c) 2003-2006 Intel Corporation
[kernel] ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
[kernel] ipw2200: Unable to load boot firmware: -12
[kernel] ipw2200: Unable to load firmware: -12
[kernel] ipw2200: failed to register network device
[kernel] ipw2200: probe of 0000:02:03.0 failed with error -5

that means you have the wrong firmware (probably 2.4). If you get:

File: /var/log/everything/current

[kernel] ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, git-1.1.1
[kernel] ipw2200: Copyright(c) 2003-2006 Intel Corporation
[kernel] ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
[kernel] ipw2200: Radio Frequency Kill Switch is On:
[kernel] ipw2200: Detected geography ZZM (11 802.11bg channels, 0 802.11a channels)

Note: Remember to turn your wifi on if you have a 'radio kill switch'

congrats! your wifi card should now work, try a iwconfig and see what it's listed under!

[edit] Using External Modules (ipw2200 Ebuild)

Warning: Not recommended as they have been hardmasked Christian Heim (19 Jan 2007) Masked, pending removal in 30 days. Please stop using the external package and use the in-kernel equivalents.


Warning: This will probably NOT work for you if you use kernel 2.6.17! However you still might need some of the kernel options describe below. Later kernel versions appear to be fine using the ebuild.

It is very easy to make this card work under Gentoo. You just have to enable the following items in the kernel config:

Linux Kernel Configuration:
Networking --->
   [ ] Generic IEEE 802.11 Networking Stack

Device Drivers --->
   Generic Driver Options --->
      [*] Hotplug firmware loading support
   Network Device support --->
      Wireless LAN (non-hamradio) --->
        [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions

Cryptographic options --->
   [*] Cryptographic API
     <*> AES cipher algorithms (i586)
     <*> ARC4 cipher algorithm
     <*> Michael MIC keyed digest algorithm
     <*> CRC32c CRC algorithm (this wasn't prompted in the emerge of ipw2200)

Note: Under 'Device Drivers -> Generic Driver Options' there are some changes:

  • make sure that 'select only drivers.....' is not selected
  • make sure that 'prevent firmware from being built' is not selected.
  • 'hotplug firmware loading support' may have a different name. For example, 'userspace firmware loading support'

[edit] Installation

  • 'Take note that before continuing with this installation, ensure you have emerged ieee80211

Emerge the wireless-tools package:

emerge -av wireless-tools

Make sure that the symbolic link /usr/src/linux points to the correct source.

As of 2.6.13-gentoo-r3, a few users have been having trouble emerging the ipw2200 drivers. In order to fix this use the following command:

/bin/sh /usr/portage/net-wireless/ieee80211/files/remove-old /usr/src/linux 

Emerge the ipw2200 driver and firmware that is in the portage tree:

emerge -av ipw2200

You should now be able to insert the module called ipw2200 in the kernel:

modprobe ipw2200

To use WEP-encryption (not recommended as its very easy to crack) load the module:

modprobe ieee80211_crypt_wep

To use WPA-encryption (newer and more secure standard) load:

modprobe ieee80211_crypt_tkip
modprobe ieee80211_crypt_ccmp

Nevertheless you should load all modules. It depends on the AP which encryption the network uses.

Additionally add ipw2200 to /etc/modules.autoload.d/kernel-2.x (where x stands for your kernel's minor version) to automatically load the modules when booting (or better yet, use sys-apps/coldplug):

File: /etc/modules.autoload.d/kernel-2.6
ipw2200

[edit] Setup

The card should be set up at this point.

On many newer laptops there is a 'wireless radio' kill switch', sometimes a dedicated button, sometimes a function key (fn+f[1-9]). Make sure it is turned on.

In some laptops the wireless has to be enabled in the bios, especially if you have the wireless builtin - if it's not enabled, the button/fn key won't work anyway - Make sure you have the internal wireless enabled.

Note: This is fine if you want to use the card with WEP encryption, which is trivial to break. If you need half decent security you need to look into WPA - see the net-wireless/wpa_supplicant ebuild.

[edit] Trouble with hwcrypto

If you use net-wireless/ipw2200-1.0.4 and net-wireless/ipw2200-firmware-2.3 or higher you might get errors with WPA:

File: /var/log/messages
ieee80211: eth1: Unknown management packet: 0
ipw2200: Firmware error detected.  Restarting.
ieee80211: eth1: Unknown management packet: 0
ipw2200: failed to send SYSTEM_CONFIG command


If you use WEP you might get a lot of the following errors:

File: /var/log/messages
ipw2200: Firmware error detected.  Restarting.
ipw2200: Sysfs 'error' log already exists.

If this problem occurs you will also notice that the link is very unreliable and slow.


To solve these problems you can simply turn off hardware crypto:

File: /etc/modules.d/ipw2200
options ipw2200 hwcrypto=0

After modifying the file execute the following commands:

modules-update
modprobe -r ipw2200
modprobe ipw2200

[edit] Trouble Loading Firmware 1

If you get the following:

ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Unable to load firmware: -1
ipw2200: Unable to load firmware: -1
ipw2200: failed to register network device
ACPI: PCI interrupt for device 0000:02:02.0 disabled
ipw2200: probe of 0000:02:02.0 failed with error -5 

Then you might try backing UDEV off to at least version 070; there seems to be a conflict with higher versions.

[edit] Trouble Loading Firmware 2

If you get the following:

ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
ipw2200: Unable to load firmware: -2
ipw2200: failed to register network device
ACPI: PCI interrupt for device 0000:03:03.0 disabled
ipw2200: probe of 0000:03:03.0 failed with error -5

for me is UDEV 087 working fine. But I needed to add one rule-which I found in docs for ipw2100 (thx to dunay/Eric)(It's extremely important that you compile the ipw2200 support as a module, otherwhise it won't work)

here is a fix for udev thanks to Eric at http://www.openthought.org/blosxom.cgi/Blog (perm link: http://www.openthought.org/blosxom.cgi/2006/02/13#firmware_and_udev)


It's completely fixable, you just have to tell udev how to load firmware.

To solve it, you need to add a rule to udev. In the dir /etc/udev/rules.d, I created the file '999-firmware.rules' (it has to run last). In that file, I added this line:

    ACTION=="add", SUBSYSTEM=="firmware", RUN+="/sbin/firmware_helper"

I am using udev 100 and instead of the line above i had to add

    ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"

If your system doesn't have firmware_helper, you'll have to get it from the udev source. It's just a single .c file in the 'extras' dir. Compile udev with:

    make EXTRAS=extras/firmware

And it'll compile everything for you... but all you need is firmware_helper. Just copy it to /sbin, or /usr/local/sbin, or where ever you like (making sure that the line you added to 999-firmware.rules matches), and you're set.

Now rmmod ipw2200 and the ieee80211* modules, reinsmod, and you're set (no need to reboot or restart anything).


I did not need to add this rule (I'm using udev-087 as well). Instead these kernel messages were because I was using an incompatible version of ipw2200-firmware with the inbuilt kernel driver (of kernel 2.6.17). Upgrading from ipw2200-firmware 2.4 to 3.0 and compiling ipw2200 support as a module fixed the problem.


I did not need to add this rule except when resuming from Software Suspend.


For me it didn't work, but just remove (unmerge) udev and install (emerge + add to runlevel) coldplug solved this problem. I had udev 104-r11.


Running kernel-2.6.20-gentoo-r8, and udev 104-r12. All I had to do was to build ipw support as module and emerge ipw2200-firmware. Don't even have to list ipw2200 in /etc/modules.autoload/kernel-2.6, as udev seems to load it anyway.


[edit] Trouble Loading Firmware 3

Looks like there is an update from http://www.openthought.org/blosxom.cgi/2006/02/13#firmware_and_udev which shows how to fix a new error:

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8
ipw2200: Copyright(c) 2003-2005 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Unable to load ucode: -62
ipw2200: Unable to load firmware: -62
ipw2200: failed to register network device
ipw2200: probe of 0000:03:03.0 failed with error -5

And in udev logs:

firmware_helper[14006]: main: error loading '/lib/firmware/ipw-2.4-bss.fw'
for device '/class/firmware/0000:03:03.0' with driver 'ipw2200'

The way to fix this from Eric's blog is:

So, instead of compiling 'firmware_helper' as I had initially suggested above (which doesn't seem to work anymore anyways), just create the file '/etc/udev/rules.d/999-firmware.rules', and add the following line in it: ACTION=="add", SUBSYSTEM=="firmware", RUN+="/sbin/udev_run_hotplugd" Then rmmod ipw2200 and the ieee80211* modules, insmod ipw2200, and you should be good to go.

So, put this line in the file '/etc/udev/rules.d/999-firmware.rules':

ACTION=="add", SUBSYSTEM=="firmware", RUN+="/sbin/udev_run_hotplugd"

[edit] LED

For laptops with wireless LED's, simply add (all options must be contained in one single line):

File: /etc/modules.d/ipw2200
options ipw2200 led=1 #(add other options here if applicable)

The "led=1" parameter is a litte bit tricky on laptops without Hardware WLAN-switch (e.g. an IBM Thinkpad X30):

If you use the parameter when insmoding ipw2200, radio stays off and cannot (ot at least not easily) be turned on. I guess the module sees a non existant switch that is always off.

[edit] References

Personal tools
In other languages