Burning gPXE into 3COM 3C905 cards

These cards are possibly the easiest to flash, needing no MS-DOS bootdisk or anything. It can be done inside a standard linux system. This method is known to work for 3C905B and 3C905C, and is expected to work with other members of the 3C90xB family, plus the 3C980C. It is assumed that you have already generated the *.rom image for your card.

Getting flashrom

There are various ways to get flashrom. It may be available in your distribution (eg: sudo aptitude install flashrom), or optionally you can get it via svn and compile it:

svn co svn://coreboot.org/flashrom/trunk flashrom
cd flashrom
make install

The last command must be run as root.

Padding the ROM image

The image created by gPXE will probably be of some irregular size. Mine, for example, was about 55kiB. We need to find out what size your rom chip is. As root:

flashrom -p nic3com | grep "Found chip"

Mine, for example, was 64KiB:

Found chip "SST SST39VF512" (64 KB, Parallel) at physical address 0xffff0000.

Now we bulk out the image with zeroes:

cat gPXEoutputFile.rom /dev/zero | dd bs=1k count=64 > fileToFlash.rom

Replace gPXEoutputFile.rom with the appropriate file and count=64 with count=[your chip size in kiB].

If you look at fileToFlash.rom, it should now be exactly 64kiB, or whatever size you specified.

Burning the gPXE ROM

Now you're ready to burn it. As root, simply:

flashrom -p nic3com -w fileToFlash.rom

If everything went well, the last line should say:

Verifying flash... VERIFIED.