The following text describes what has to be done in order to
allow the BIOS to recognise a different card. I've deliberately
left this vague - replacing the BIOS is likely to void your
warranty, make things go wrong and leave you generally
miserable. It may well leave your hardware unbootable. IBM won't
just reflash the BIOS, so you'll have to replace the system
board. Don't expect this to be covered under warranty.
Oh, and DON'T EMAIL ME TO ASK HOW TO DO
THIS. I'll ignore you. I don't have time to teach people
how to do these modifications, and if you don't feel happy doing
it without my assistance then you shouldn't be thinking about
doing it at all.
Things that have to be done:
You need an uncompressed copy of the BIOS. The easiest way to
obtain this is probably to use phlash16 under DOS with the /BU
option. This will write out an uncompressed copy as BIOS.BAK.
Find out the PCI vendor, device and subsystem IDs of your
card. In Linux, doing lspci -v will tell you this.
Open the BIOS file in a hex editor. Find the BCPUSB header
(there's an index near the start of the file that contains
references to lots of BCP stuff. Ignore the one that appears
here). Shortly after this is a set of PCI IDs, split up with
0s. The file is in little endian format, so the first byte in
the file is the second byte of the ID. For instance, an IBM
Pro/Wireless 2100 is 8086:1043 with a subsystem id of
8086:2551. This will appear as 8680431086805125. Make the
modifications to suit your card.
Find the string EXTD. The 4 bytes after that are an additive
checksum. When all the 4 byte blocks in the file are added up,
they must equal 0. Change the checksum as appropriate. At some
point I'll probably get round to writing a tool to do this.
Reflash your BIOS. Make sure that you use the /CS option to
phlash16 in order to check the checksum.
If it's worked, your card should now work. If it hasn't, your
laptop is probably dead.
Many thanks to Paul
Sladen who helped out immensely. His page has a set of
dumps of chunks of BIOS and further information.
Last modified: Thu Apr 29 15:05:32 BST 2004