User:GNUtoo: Difference between revisions

From flashrom
Jump to navigation Jump to search
(45 intermediate revisions by the same user not shown)
Line 1: Line 1:
I've no code in flashrom yet, but I made a flashrom compatible arduino programmer and participated in testing and documentation.
I've no code in flashrom yet, but I made a flashrom compatible arduino programmer and participated in testing and documentation.


With regard to testing I've the following programmers:
== Wiki contributions ==
* (old) M4A785T-M with W25x80 DIP8(with and without coreboot) => works fine
My contributions to this wiki are available under the following licenses:
* (old) X60 with coreboot and MX25L1605 => works fine
* [https://creativecommons.org/licenses/by-sa/3.0/legalcode CC-BY-SA 3.0]
* Arduino uno and duemillanove (serprog based) => 5v only, which is problematic
* [https://creativecommons.org/licenses/by-sa/4.0/legalcode CC-BY-SA 4.0] or later
* openmoko debug board (FTDI based) => worked fine until broken in lastest svn at the time of writing,also had speed issues with some chips...
* [https://www.gnu.org/licenses/fdl.txt GFDL 1.3] or later
* (really old) 3com Nic => works fine
 
* some (really really old) reaktek cards but without chip on them.
== My interests ==
* linux_spi compatible hardwre... => works fine too so far...
* Easily available external flashers.
* An atahpt that doesn't work when adding its PCI IDs(but atahpt are known not to work according to the mailing list)
* BIOS->Coreboot flashing on the Libreboot compatible laptops.
* A very old AGP Nvidia card => works with a patch
* NIC flashing (to flash ipxe)
* A recent geforce 210 that didn't work when adding the PCI IDs
* GPU flashing (to flash sgabios)
 
 
== My hardware ==
=== Mainboard based programmers ===
{| class="wikitable"  border="1"
! Device or programmer
! Flash chip
! Test result
|-
| Asrock E350M1
|
* A25L032
|
* Works from coreboot
* Untested from the BIOS
|-
| Asus F2A85M-PRO
|
|
|-
| Asus M4A785T-M
|
* W25x80 (DIP8)
|
* Works with the BIOS
* Works with coreboot
|-
| Lenovo Thinkpad T400
|
|
|-
| Lenovo Thinkpad T60
|
* MX25L1605D/MX25L1608D
|
* Works with coreboot
|-
| Lenovo Thinkpad X200
|
|
|-
| Lenovo Thinkpad X200 Tablet
|
|
|-
| Lenovo Thinkpad X60
|
* SST25VF016B
|
* Works with coreboot.
|-
| Lenovo Thinkpad X60T
|
* MX25L1605D/MX25L1608D
|
* Works with coreboot
|-
| PC Engines Alix.1c
|
|
* Works with coreboot
* Works with the recovery LPC dongle
|-
| PC Engines APU1D4
|
|
|-
|}
 
=== External programmers ===
{| class="wikitable"  border="1"
! 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 (ft2232_spi:type=openmoko)
|
* Works fine
|-
| 3com PCI NIC (10b7:9200) (nic3com)
|
* 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
|-
| <s> An atahpt PCI card </s>
|
*Didn't work when adding the PCI IDS, but the atahpt is known not to work according to the mailing list.
|-
| <s> old AGP Nvidia card </s>
|
* 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:
I've also the following hardware:
* [http://www.tme.eu/en/details/pom-5250/test-clips/pomona/5250/ pomona clip] for recovering my x60
* [http://www.tme.eu/en/details/pom-5250/test-clips/pomona/5250/ pomona clip] for recovering my x60
* some chips(2MB SO8(currently soldered), 16MB SO8)
* some chips(2MB SO8(currently soldered), 16MB SO8)


== Work in progress for the wiki ==
== Work in progress for the wiki ==
Line 22: Line 143:
== Howto(Dangerous, not ready for the wiki) ==
== Howto(Dangerous, not ready for the wiki) ==


=== Howto flash sgabios on an Nvidia video card ===
* [[/Howto_flash_sgabios_on_an_Nvidia_video_card | 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/
* [[/Howto_flash_ipxe_on_an_3com_network_card| Howto flash ipxe on an 3com network card]]


Then build ipxe:
* [[/Howto_flash_coreboot_on_a_pcengine_apu1 | Howto flash coreboot on an PC Engine APU1]]
cd ipxe/src/
make bin/10b79200.rom


Then backup the existing rom:
* [[/Benchmarks]]
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:
* [[/Arduino_flasher_3v3]]
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

Revision as of 07:01, 10 May 2018

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

Wiki contributions

My contributions to this wiki are available under the following licenses:

My interests

  • Easily available external flashers.
  • BIOS->Coreboot flashing on the Libreboot compatible laptops.
  • NIC flashing (to flash ipxe)
  • GPU flashing (to flash sgabios)


My hardware

Mainboard based programmers

Device or programmer Flash chip Test result
Asrock E350M1
  • A25L032
  • Works from coreboot
  • Untested from the BIOS
Asus F2A85M-PRO
Asus M4A785T-M
  • W25x80 (DIP8)
  • Works with the BIOS
  • Works with coreboot
Lenovo Thinkpad T400
Lenovo Thinkpad T60
  • MX25L1605D/MX25L1608D
  • Works with coreboot
Lenovo Thinkpad X200
Lenovo Thinkpad X200 Tablet
Lenovo Thinkpad X60
  • SST25VF016B
  • Works with coreboot.
Lenovo Thinkpad X60T
  • MX25L1605D/MX25L1608D
  • Works with coreboot
PC Engines Alix.1c
  • Works with coreboot
  • Works with the recovery LPC dongle
PC Engines APU1D4

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 (ft2232_spi:type=openmoko)
  • Works fine
3com PCI NIC (10b7:9200) (nic3com)
  • 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)