HOWTO: Recycling old BIOS chips for NIC boot roms

Posts worthy of archiving. Maybe your problem is already solved here.
Post Reply
stonent
BIOS Rookie
Posts: 40
Joined: Tue Jul 16, 2002 6:10 am

I had an idea for a while but was never able to test it until now. My local used computer store has a big bin full of old motherboards for 2$ each. So I thought I could harvest the bios chips and flash them with boot proms. I tried and it worked! Here's what I did.

Flash Chip : 29ee010 128KB 5V Flash
Software : Uniflash 1.30
3c59xcfg.exe (from the driver set on 3com.com)
Compressed Rom image from Rom-O-Matic
http://www.rom-o-matic.net/5.1.8/
Cygwin for Windows with Perl
NIC : 3Com 3C595-TX (PCI ID: 10b7:5950)

First before you do anything, make sure that you have the correct rom image by using the lzdisk version of the rom (dd if=3c595.lzdsk of=/dev/fd0) or (fdimage 3c595.dsk a: {You'll have to shorten the long filename that rom-o-matic makes into an 8.3 filename for fdimage to work} ). Once you have confirmed the image works with the card, go to the next step.

First I tried to flash the 16kb boot rom image into the 128kb flash chip. Uniflash gave me an error saying there was a size mismatch and I said continue anyway. Then Uniflash crashed with error #100.

I figured it didn't like the mismatched file so I did the following within Cygwin (linux will work as well)
(cat 5950.rom; perl -e 'print "\xFF" x 114688') > 5950128.rom

What this does is takes the 16kb rom file (in this case 5950.rom) and pads it with 114688 bytes of xFF. You end up with a 131072 byte file beginning with the 16kb image.

I then started up uniflash and hot-swapped the flash chip on the motherboard and loaded the 128KB image. (I had earlier tried to flash the chip while it was in the 3com card, but uniflash said it was write protected) It gave me a boot block error and recommended flashing with the boot block. I said "ok". I then exited uniflash but then started it again and flashed one more time for good measure. This time it didn't give me a boot block error.

I put the newly flashed chip into the 3C595 card and booted. But nothing. The card was detected but it didn't load the boot rom. I then remembered 3c59xcfg.exe. I loaded it and enabled the rom with 16kb. Again it didn't work. So I just set to the largest rom it supported which was 64kb.

Finally.... Success!!

So now I can set up a computer as a diskless workstation to load Knoppix via net boot or any of the other thin/thick client linux distros.

I guess I was just lucky that this NIC had a socket that would fit the larger 32 pin bios chips. I've seen other nics that only took 28 pin bios chips. I'm not sure what would happen if you flashed a chip and let the extra 4 pins hang over the edge.. If they are address pins then it might not matter.. I have more NICs floating around so I might try those also.

I hope you found this informative and of use to you.
edwin
The Hardware Archivist
Posts: 6286
Joined: Wed Mar 20, 2002 7:11 pm
Location: Netherlands
Contact:

You want to publish this on a webpage somewhere so Google can pick it up. Also send it to some linux documentation projects or something, usergroups. Absolute stunning info.
edwin/evasive

Do not assume anything

System error, strike any user to continue...
stonent
BIOS Rookie
Posts: 40
Joined: Tue Jul 16, 2002 6:10 am

I never was able to get it to work in a smaller socket, the pins appear to be added to both ends so an adaptor would have to be made to line up the address lines.
Stonent
http://home.comcast.net/~stonent Stonent's Dell laptop site
aurel
New visitors - please read the rules.
Posts: 1
Joined: Wed Dec 17, 2003 1:48 am

I tested this technique successfully too !

I flashed an AM29F010B (128KB) on an asus P5A using the hot-flash methode with uniflash. The firmware I flashed is a PXE boot rom for Realtek 8139 NIC ( http://www.peabird.com/drivers_peab_fast.html ). I also needed to pad the file with 0xFF to make it exactly 131072 bytes.

Then I just had to use rset8139.exe to enable the boot rom and set it to 128KB and then... PXE boot working :-)

So, congratulation for uniflash. It's a really nice software ! With a Linux version it would be perfect ;-)

BTW: I first tried to flash directly onto my realtek 8139 NIC but uniflash 1.33 don't find it when I use the -pcirom option. I don't know if this is normal or not as even the official rtflash.exe didn't allowed me to flash directly on the NIC.
Post Reply