Monday, November 30, 2009

More ipw2200 eeprom fun

As written in my last post, I have packaged an ipw2200 kmp that enables writing to the eeprom. Incidentally, looking closer at one of my other machines, it turned out to have an ipw2200 that had the same problem as Obi's, namely not being able to use all 13 11b/g channels that are allowed here:
ipw2200: Detected geography ZZM (11 802.11bg channels, 0 802.11a channels)

The hexdump of the eeprom showed that the location of the geography code was the same as in Obi's case:
0040 9c e8 00 0e 35 d0 fa 25  00 46 00 01 5a 5a 4d 00 ....5..%.F..ZZM.


So I installed the ipw2200-eepromwrite-kmp from my build service repo and fixed the card.
blub:~ # ethtool -E eth1 magic 0x2200 offset 0x4e value 0x44
Cannot set EEPROM data: Invalid argument

That's one of the errors I wrote about in my last post, but it did no harm:
blub:~ # dmesg|tail -1
ipw2200 eeprom_write_u16(27, 0044)

shows that the eeprom write function was actually called.
Unloading and reloading the ipw2200 module then gave me:
ipw2200 0000:02:06.0: PCI INT A disabled
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kdmprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ipw2200 0000:02:06.0: PCI INT A -> Link[LNKE] -> GSI 11 (level, low) -> IRQ 11
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200 0000:02:06.0: firmware: requesting ipw2200-bss.fw
ipw2200: device failed to start within 500ms
ipw2200: EEPROM checksum is invalid (0xe89c, should be 0xe895 instead).
ipw2200: To let the driver fix it use the module option 'repair_eeprom'.
ipw2200: Unable to load firmware: -62
ipw2200: failed to register network device
ipw2200 0000:02:06.0: PCI INT A disabled
ipw2200: probe of 0000:02:06.0 failed with error -5

So I did what the driver asked me and used "modprobe ipw2200 repair_eeprom=1":
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kdmprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ipw2200 0000:02:06.0: PCI INT A -> Link[LNKE] -> GSI 11 (level, low) -> IRQ 11
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200 0000:02:06.0: firmware: requesting ipw2200-bss.fw
ipw2200: device failed to start within 500ms
ipw2200: EEPROM checksum is invalid (0xe89c, should be 0xe895 instead).
ipw2200 eeprom_write_u16(20, e895)
ipw2200: Detected geography ZZD (13 802.11bg channels, 0 802.11a channels)

Now everything is fine and I can also use channels 12 and 13.

Note that you should know what you are doing and be willing to sacrifice your wifi card if you are attempting anything like this. It worked for me, but that does not at all imply that it will work for anybody else. You have been warned! ;)

No comments:

Post a Comment