View Full Version : Howto: Recycling BIOS chips as etherboot roms for Knoppix

04-30-2003, 11:50 PM
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
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.

05-01-2003, 12:29 AM
Very interesting stonent- I'll have to try that as soon as I get my LCD connected, my server built, my FM xmitter finished and a few other things.

05-01-2003, 02:21 AM
Does this mean we can use just an old motherboard instead of a ROM Flasher by "hot-swapping" the BIOS?

05-01-2003, 03:35 AM
Yes, that was what I did since I have a lot of old boards laying around.

06-08-2003, 11:40 PM
Yes, that was what I did since I have a lot of old boards laying around.Hmmm, really interesting! Just out of curiosity, what kinds of memory can be flashed like this? I am thinking of the chips with a little "window" for UV light on their upper side (How are they called? EEPROMS I believe). Those are used in many devices for firmware. Since you have many boards sitting around, perhaps you could try one of those as well.

06-09-2003, 04:38 AM
Those are eproms, you can't flash them, you have to have an eprom programmer which I don't.

06-11-2003, 04:05 AM
by hotswap, do you mean unplug the flash when the system is on ? I am a bit confused here.

BTW, is there a 'pure' linux solution as uniflash seems to be a window program :wink:

06-11-2003, 05:04 AM
Yes that is exactly what I mean. Uniflash runs under DOS or freedos. If you want a linux version I guess google for it. I dunno.