Difference between revisions of "User:GNUtoo"

From flashrom
Jump to: navigation, search
(External programmers)
(Howto(Dangerous, not ready for the wiki))
 
(24 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.
 +
 +
== Wiki contributions ==
 +
My contributions to this wiki are available under the following licenses:
 +
* [https://creativecommons.org/licenses/by-sa/3.0/legalcode CC-BY-SA 3.0]
 +
* [https://creativecommons.org/licenses/by-sa/4.0/legalcode CC-BY-SA 4.0] or later
 +
* [https://www.gnu.org/licenses/fdl.txt GFDL 1.3] or later
 +
 +
== My interests ==
 +
* Easily available external flashers.
 +
* BIOS->Coreboot flashing on the Libreboot compatible laptops.
 +
* NIC flashing (to flash ipxe)
 +
* GPU flashing (to flash sgabios)
  
  
Line 9: Line 21:
 
! Test result
 
! Test result
 
|-
 
|-
| Asus M4A785T-M mainboard
+
| Asrock E350M1
| W25x80 (DIP8)
+
|
 +
* A25L032
 +
|
 +
* Works from coreboot
 +
* Untested from the BIOS
 +
|-
 +
| Asus F2A85M-PRO
 +
|
 +
|
 +
|-
 +
| Asus M4A785T-M
 +
|  
 +
* W25x80 (DIP8)
 
|
 
|
* Yes with the BIOS
+
* Works with the BIOS
* Yes with coreboot
+
* Works with coreboot
 
|-
 
|-
| Asrock E350M1
+
| Lenovo Thinkpad T400
| A25L032
+
|
 +
|
 +
|-
 +
| Lenovo Thinkpad T60
 +
|
 +
* MX25L1605D/MX25L1608D
 
|
 
|
* Yes from coreboot
+
* Works with coreboot
* Untested from the BIOS
 
 
|-
 
|-
| <s> Lenovo X60 </s>
+
| Lenovo Thinkpad X200
| <s>  MX25L1605D/MX25L1608D  </s>
+
|
 
|
 
|
* Yes with coreboot.
 
 
|-
 
|-
| Lenovo X60
+
| Lenovo Thinkpad X200 Tablet
 
|
 
|
 
|
 
|
* Yes with coreboot.
 
 
|-
 
|-
| Lenovo X60T
+
| Lenovo Thinkpad X60
|  MX25L1605D/MX25L1608D
 
 
|
 
|
* Yes with coreboot
+
* SST25VF016B
 +
|
 +
* Works with coreboot.
 
|-
 
|-
| Lenovo T60
+
| Lenovo Thinkpad X60T
| MX25L1605D/MX25L1608D
 
 
|
 
|
* Yes with coreboot
+
* MX25L1605D/MX25L1608D
 +
|
 +
* Works with coreboot
 
|-
 
|-
| PCEngines Alix.1c
+
| PC Engines Alix.1c
 
|
 
|
 
|
 
|
* Yes with coreboot
+
* Works with coreboot
* Yes with the recovery LPC dongle
+
* Works with the recovery LPC dongle
 
|-
 
|-
| Asus N71JQ
+
| PC Engines APU1D4
 
|
 
|
 
|
 
|
* Requires some bit flippings(with ifdtool and an external programmer) in the flash descriptor.
+
|-
* Not tested internally.
 
 
|}
 
|}
  
Line 74: Line 101:
 
* Not working: No support for it yet.
 
* Not working: No support for it yet.
 
|-
 
|-
| openmoko debug board (openmoko)
+
| openmoko debug board (ft2232_spi:type=openmoko)
 
|
 
|
 
* Works fine
 
* Works fine
 
|-
 
|-
| Old 3com PCI NIC
+
| 3com PCI NIC (10b7:9200) (nic3com)
 
|  
 
|  
 
* Works fine
 
* Works fine
Line 104: Line 131:
 
|-
 
|-
 
| Nvidia geforce 210 PCIe 16x card
 
| Nvidia geforce 210 PCIe 16x card
| didn't work when adding the PIC IDs
+
|
 +
* didn't work when adding the PIC IDs
 
|}
 
|}
  
Line 115: 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
 

Latest 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)