Flash Intel WiFi Cards for HP Laptops

Under Construction!
(Originally posted February 2009, Updated May 2020)

104-Unsupported wireless network device detected.
System Halted. Remove device and restart.

HP and some other companies have whitelists in their BIOS that allow only certain WiFi cards to work.

There are methods to modify the BIOS file and re-flash the system. That wasn't an option on the laptop I was using, an HP nx6110.

The other option was to change the EEPROM of the WiFi device to make it identify itself as one of the whitelisted cards.

I had recently purchased an Intel 2915ABG card to use in the system. Its hardware ID said it was an Intel card. The HP system I was using would ONLY accept HP-branded cards.
The solution then was to change the hardware ID from Intel to HP.

Basically, I wanted to change this:
PCI\VEN_8086&DEV_4223&SUBSYS_10018086 (Identified as Intel/Europe)

To this:
PCI\VEN_8086&DEV_4223&SUBSYS_1351103C (Identified as HP/America)

I've only read about this working on Intel 2200BG and Intel 2915ABG cards.

The drivers were made for Intel cards.

I've personally done this on an Intel 2915ABG card, and it worked perfectly.

I got info from this thread on HP's site:
(Removed by HP)

Which pointed me here:
(Mirror Here)

Pre-patches drivers here:
ipw2200.tar.gz (981 KB)
(pre-compiled Intel 2200 drivers that have the ability to write/modify the EEPROM)

I first tried the commands listed in the guide under Knoppix 5.1.1 (2007-01-04). I got some weird error.
I then tried the commands under Ubuntu 8.04, and got some weird error.
I then tracked down "KNOPPIX_V3.8.2-2005-05-05-EN.iso", because it was that older version of Knoppix that someone used when making the patched drivers. I found some torrent trackers with that file, but with zero seeds they were worthless.

I found some FTP sites with KNOPPIX_V3.8.2-2005-05-05-EN.iso on it, and was able to download it from there.
(Source 1, Source 2, Source 3, MD5: 224830a3a36233cfbd1972a6c96f39f6)

I booted Knoppix 3.8.2, and the commands worked fine then.

So, how do you alter the EEPROM of a WiFi card if the system will not boot with the WiFi card inserted? Simple: You power on the system, allow it to POST, and then you plug in the WiFi card while the system is powered on, before the OS loads.
Yes, this can really hurt your system.
The safest method would be finding another system that can boot with the WiFi card and modify it there. Some older system, non HP/IBM systems, or even a Desktop system with a MiniPCI to PCI adapter would be some options.

1. Insert the Knoppix CD.
2. Shut off the system.
3. Remove the MiniPCI / WiFi Card.
4. Power on the system. When the system gets to Knoppix's boot: prompt, insert the MiniPCI card. I kept my laptop on its side while doing this.
5. Hit Enter to continue loading Knoppix.

Once Knoppix has loaded and you are looking at the Desktop, click on the penguin on the taskbar and select "Root Shell". Then run the following commands:

#iwconfig (this will list the name of your WiFi adapter, such as "eth1")

Now, with the rest of the commands, replace "X" with the number that goes with your WiFi adapter.

#ethtool -e ethX (this will display the first 256 bytes of the adapter's EEPROM)

#mkdir /usr/tmp (make a temp folder)
#cd /usr/tmp (change to that temp folder)
#wget https://xenomorph.net/data/firmware/intel2200/ipw2200.tar.gz (download the pre-patched drivers)
#tar xvzf ipw2200.tar.gz (extract the drivers)
#cd ipw2200-1.0.3 (change to the folder with the drivers)
#sh unload (unload the current drivers)
#sh load (load the patched drivers)

To change an Intel 2915ABG card to be identified as HP/America:

ethtool -E ethX magic 0x2200 offset 0x8 value 0x51
ethtool -E ethX magic 0x2200 offset 0x9 value 0x13
ethtool -E ethX magic 0x2200 offset 0xa value 0x3c
ethtool -E ethX magic 0x2200 offset 0xb value 0x10

To change an Intel 2200BG card to be identified as HP/America:

ethtool -E ethX magic 0x2200 offset 0x8 value 0xf5
ethtool -E ethX magic 0x2200 offset 0x9 value 0x12
ethtool -E ethX magic 0x2200 offset 0xa value 0x3c
ethtool -E ethX magic 0x2200 offset 0xb value 0x10