From flashrom
Jump to navigation Jump to search

I've no code in flashrom yet, but I made a flashrom compatible arduino programmer and participated in testing and documentation.

My hardware

Mainboard based programmers

Device or programmer Flash chip Test result
Asus M4A785T-M mainboard W25x80 (DIP8)
  • Yes with the BIOS
  • Yes with coreboot
Lenovo X60 MX25L1605
  • Yes with coreboot.
Lenovo X60
  • Yes with coreboot.
Lenovo X60T
  • Yes with coreboot
Lenovo T60 MX25L1605D/MX25L1608D
  • Yes with coreboot
PCEngines Alix.1c
  • Yes with coreboot
  • Yes with the recovery LPC dongle
Asus N71JQ
  • Requires some bit flippings in the flash descriptor.
  • Not tested internally.

External programmers

Device or programmer Status
Arduino uno (serprog)
  • Requires a 5v->3.3v level shifter for most current flash chips.
  • Issues with the 8u2/8u3 when using the serial port at high speed.
Arduino duemillanove (serprog)
  • Requires a 5v->3.3v level shifter for most current flash chips.
  • Works fine otherwise.
Arduino Due ( no support for it yet )
  • 3.3v level output on SPI.
  • Not working: No support for it yet.
openmoko debug board (openmoko)
  • Works fine
Old 3com PCI NIC
  • Works fine
Really old PCI realtek cards
  • No parallel chip to test
Some GNU/Linux embedded boards (linux_spi)
  • Backporting some mainline kernel patches is required on some very old (2.6.35) kernel for omap3.
  • Works fine otherwise
  • An atahpt that doesn't work when adding its PCI IDs(but atahpt are known not to work according to the mailing list)
  • A very old AGP Nvidia card => works with a patch
  • A recent geforce 210 that didn't work when adding the PCI IDs

I've also the following hardware:

  • pomona clip for recovering my x60
  • some chips(2MB SO8(currently soldered), 16MB SO8)

Work in progress for the wiki

Don't try that, it's dangerous!!!!

Howto(Dangerous, not ready for the wiki)

Howto flash sgabios on an Nvidia video card

Use case

  • Servers often lack a screen.
  • Some blind people also lack a way to see the startup of the computer until the braille tablet is running.

This Howto will help you transform your Nvidia video card in a something that send to a serial port what would have been displayed on the screen. The card will probably stop working as a graphic card due to the lack of VGA option rom tailored to the card.

The user is expected to see the output trough a serial console.


Here's an example on how to flash sgabios on an Nvidia video card:

  • download flashrom
  • apply that patch:
diff --git a/gfxnvidia.c b/gfxnvidia.c
index d0a9feb..35e4687 100644
--- a/gfxnvidia.c
+++ b/gfxnvidia.c
@@ -110,7 +110,7 @@ int gfxnvidia_init(void)
        rpci_write_long(dev, 0x50, reg32);
        /* Write/erase doesn't work. */
-       programmer_may_write = 0;
+       //programmer_may_write = 0;
        register_par_programmer(&par_programmer_gfxnvidia, BUS_PARALLEL);
        return 0;
  • compile it
  • download and build sgabios
  • Identify your flash chip size by running:
flashrom -pgfxnvidia
  • save the content of the chip with:
flashrom -pgfxnvidia -r original.rom
  • pad sgabios to the size of your flashchip:
dd if=/dev/zero of=sgabios.rom bs=1 count=65536
dd if=10b79200.rom of=sgabios.rom conv=notrunc
  • flash it(and retry in case of failure, it has a high failure rate)

Howto flash ipxe on an 3com network card

Clone ipxe:

$ git clone git://

Then locate your network card with:

# lspci -nnnn

it will look like that:

00:0c.0 Ethernet controller [0200]: 3Com Corporation 3c905C-TX/TX-M [Tornado] [10b7:9200] (rev 78)

Note the pci ids that are here: [10b7:9200]

Ajust your settings in src/config/local/

Then build ipxe:

cd ipxe/src/
make bin/10b79200.rom

Then backup the existing rom:

cd ../../
flashrom -pnic3com -r 3com_rom_backup.rom

The flashchip size is written in the output of that command.

Then generate a rom that is exactly the size of your rom chip:

dd if=/dev/zero of=bin/10b79200.rom.64k bs=1 count=65536
dd if=bin/10b79200.rom of=bin/10b79200.rom.64k conv=notrunc