User:GNUtoo

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
Asrock E350M1 A25L032
  • Yes from coreboot
  • Untested from the BIOS
Lenovo X60 MX25L1605D/MX25L1608D
  • Yes with coreboot.
Lenovo X60
  • Yes with coreboot.
Lenovo X60T MX25L1605D/MX25L1608D
  • 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(with ifdtool and an external programmer) 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
Sata SII PCI card
  • writing and erasing worked 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 PCI card
  • Didn't work when adding the PCI IDS, but the atahpt is known not to work according to the mailing list.
old AGP Nvidia card
  • Worked with a patch (documented below)
Nvidia geforce 210 PCIe 16x card
  • didn't work when adding the PIC 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.

Howto

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://git.ipxe.org/ipxe.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