Flashrom

From flashrom
Revision as of 14:37, 31 May 2009 by Uwe (talk | contribs) (→‎Supported laptops/notebooks: Add IBM 240 notebook as unsupported, reported by juri_ on IRC.)
Jump to navigation Jump to search

This wiki is retired

Our website is https://www.flashrom.org, instructions on how to add or update documentation are here

All wiki content available in read-only mode at wiki.flashrom.org

flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips. It's often used to flash BIOS/EFI/coreboot/firmware images.

  • Supports more than 160 flash chips, 75 chipsets, 100 mainboards, and 10 PCI devices which can be used as external programmers.
  • Supports parallel, LPC, FWH and SPI flash interfaces and various chip packages (DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40 and more)
  • No physical access needed, root access is sufficient.
  • No bootable floppy disk, bootable CD-ROM or other media needed.
  • No keyboard or monitor needed. Simply reflash remotely via SSH.
  • No instant reboot needed. Reflash your chip in a running system, verify it, be happy. The new firmware will be present next time you boot.
  • Crossflashing and hotflashing is possible as long as the flash chips are electrically and logically compatible (same protocol). Great for recovery.
  • Scriptability. Reflash a whole pool of identical machines at the same time from the command line. It is recommended to check flashrom output and error codes.
  • Speed. flashrom is often much faster than most vendor flash tools.
  • Portability. Supports Linux, FreeBSD, DragonFly BSD, Solaris, Mac OS X, and other Unix-like OSes.


Supported devices

Supported chips

Total amount of supported chips: 169

Vendor Flash part Status
  Probe Read Write Erase
AMD Am29F002(N)BB ? ? ? ?
AMD Am29F002(N)BT OK OK OK OK
AMD Am29F016D ? ? ? ?
AMD Am29F040B OK OK OK OK
AMD Am29F080B ? ? ? ?
AMD Am29LV040B ? ? ? ?
AMD Am29LV081B ? ? ? ?
ASD AE49F2008 ? ? ? ?
Atmel AT25DF021 ? ? ? ?
Atmel AT25DF041A ? ? ? ?
Atmel AT25DF081 ? ? ? ?
Atmel AT25DF161 ? ? ? ?
Atmel AT25DF321 OK OK OK OK
Atmel AT25DF321A ? ? ? ?
Atmel AT25DF641 ? ? ? ?
Atmel AT25F512B ? ? ? ?
Atmel AT25FS010 ? ? ? ?
Atmel AT25FS040 ? ? ? ?
Atmel AT26DF041 ? ? ? ?
Atmel AT26DF081A ? ? ? ?
Atmel AT26DF161 ? ? ? ?
Atmel AT26DF161A ? ? ? ?
Atmel AT26F004 ? ? ? ?
Atmel AT29C010A OK OK OK ?
Atmel AT29C020 OK OK OK OK
Atmel AT29C040A ? ? ? ?
Atmel AT45CS1282 ? ? ? ?
Atmel AT45DB011D ? ? ? ?
Atmel AT45DB021D ? ? ? ?
Atmel AT45DB041D ? ? ? ?
Atmel AT45DB081D ? ? ? ?
Atmel AT45DB161D ? ? ? ?
Atmel AT45DB321C ? ? ? ?
Atmel AT45DB321D ? ? ? ?
Atmel AT45DB642D ? ? ? ?
Atmel AT49BV512 OK OK OK OK
Atmel AT49F002(N) ? ? ? ?
Atmel AT49F002(N)T OK OK OK OK
AMIC A25L40P OK OK OK OK
AMIC A29002B ? ? ? ?
AMIC A29002T OK OK OK OK
AMIC A29040B OK OK ? ?
AMIC A49LF040A OK OK OK OK
EMST F49B002UA ? ? ? ?
EON EN29F002(A)(N)B ? ? ? ?
EON EN29F002(A)(N)T OK OK OK OK
Fujitsu MBM29F004BC ? ? ? ?
Fujitsu MBM29F004TC ? ? ? ?
Fujitsu MBM29F400BC ? ? ? ?
Fujitsu MBM29F400TC ? ? ? ?
Intel 82802AB OK OK OK OK
Intel 82802AC OK OK OK OK
Macronix MX25L512 ? ? ? ?
Macronix MX25L1005 ? ? ? ?
Macronix MX25L2005 ? ? ? ?
Macronix MX25L4005 OK OK OK OK
Macronix MX25L8005 OK OK OK OK
Macronix MX25L1605 OK OK OK OK
Vendor Flash part Status
  Probe Read Write Erase
Macronix MX25L1635D ? ? ? ?
Macronix MX25L3205 OK OK OK OK
Macronix MX25L3235D ? ? ? ?
Macronix MX25L6405 ? ? ? ?
Macronix MX25L12805 ? ? ? ?
Macronix MX29F002B ? ? ? ?
Macronix MX29F002T OK OK OK OK
Macronix MX29LV040C OK OK ? ?
Numonyx M25PE10 ? ? ? ?
Numonyx M25PE20 ? ? ? ?
Numonyx M25PE40 ? ? ? ?
Numonyx M25PE80 OK OK OK OK
Numonyx M25PE16 ? ? ? ?
PMC Pm25LV010 ? ? ? ?
PMC Pm25LV016B ? ? ? ?
PMC Pm25LV020 ? ? ? ?
PMC Pm25LV040 ? ? ? ?
PMC Pm25LV080B ? ? ? ?
PMC Pm25LV512 ? ? ? ?
PMC Pm39LV010 OK OK OK OK
PMC Pm49FL002 OK OK OK OK
PMC Pm49FL004 OK OK OK OK
Sharp LHF00L04 ? ? ? ?
Spansion S25FL016A OK OK OK OK
SST SST25VF016B OK OK OK OK
SST SST25VF032B OK OK OK OK
SST SST25VF040B ? ? ? ?
SST SST25VF040.REMS OK OK ? ?
SST SST25VF040B.REMS OK OK ? ?
SST SST25VF080B OK OK OK OK
SST SST28SF040A ? ? ? ?
SST SST29EE010 OK OK OK OK
SST SST29LE010 ? ? ? ?
SST SST29EE020A OK OK OK OK
SST SST29LE020 ? ? ? ?
SST SST39SF010A OK OK OK OK
SST SST39SF020A OK OK OK OK
SST SST39SF040 OK OK OK OK
SST SST39VF512 OK OK OK OK
SST SST39VF010 OK OK OK OK
SST SST39VF020 OK OK OK OK
SST SST39VF040 OK ? ? ?
SST SST39VF080 ? ? ? ?
SST SST49LF002A/B OK OK OK OK
SST SST49LF003A/B ? ? ? ?
SST SST49LF004A/B OK OK OK OK
SST SST49LF004C ? ? ? ?
SST SST49LF008A OK OK OK OK
SST SST49LF008C ? ? ? ?
SST SST49LF016C OK OK OK OK
SST SST49LF020 OK OK ? ?
SST SST49LF020A ? ? ? ?
SST SST49LF040 OK OK OK OK
SST SST49LF040B OK OK OK OK
SST SST49LF080A OK OK OK OK
SST SST49LF160C OK OK OK OK
ST M25P05-A ? ? ? ?
Vendor Flash part Status
  Probe Read Write Erase
ST M25P10-A ? ? ? ?
ST M25P20 ? ? ? ?
ST M25P40 ? ? ? ?
ST M25P40-old ? ? ? ?
ST M25P80 ? ? ? ?
ST M25P16 OK OK OK OK
ST M25P32 OK OK OK OK
ST M25P64 ? ? ? ?
ST M25P128 ? ? ? ?
ST M29F002B ? ? ? ?
ST M29F002T/NT OK OK OK OK
ST M29F040B OK OK OK OK
ST M29F400BT ? ? ? ?
ST M29W010B ? ? ? ?
ST M29W040B ? ? ? ?
ST M50FLW040A ? ? ? ?
ST M50FLW040B ? ? ? ?
ST M50FLW080A OK OK OK OK
ST M50FLW080B ? ? ? ?
ST M50FW002 ? ? ? ?
ST M50FW016 ? ? ? ?
ST M50FW040 OK OK OK OK
ST M50FW080 OK OK OK OK
ST M50LPW116 ? ? ? ?
SyncMOS S29C31004T ? ? ? ?
SyncMOS S29C51001T ? ? ? ?
SyncMOS S29C51002T OK OK OK OK
SyncMOS S29C51004T ? ? ? ?
TI TMS29F002RB ? ? ? ?
TI TMS29F002RT ? ? ? ?
Winbond W25x10 ? ? ? ?
Winbond W25x20 ? ? ? ?
Winbond W25x40 OK OK OK OK
Winbond W25x80 OK OK OK OK
Winbond W29C011 OK OK OK OK
Winbond W29C020C OK OK OK OK
Winbond W29C040P ? ? ? ?
Winbond W29EE011 OK OK OK OK
Winbond W39V040A OK OK OK OK
Winbond W39V040B OK OK OK OK
Winbond W39V040C OK OK OK OK
Winbond W39V040FA OK OK OK OK
Winbond W39V080A OK OK OK OK
Winbond W49F002U OK OK OK OK
Winbond W49V002A OK OK OK OK
Winbond W49V002FA ? ? ? ?
Winbond W39V080FA OK OK OK OK
Winbond W39V080FA (dual mode) ? ? ? ?

Supported chipsets

Total amount of supported chipsets: 76

Vendor Southbridge PCI IDs Status
ALi M1533 10b9:1533 OK
AMD AMD-768 1022:7440 OK
AMD AMD8111 1022:7468 OK
AMD CS5530(A) 1078:0100 OK
AMD CS5536 1022:2080 OK
AMD Elan SC520 1022:3000 OK
AMD SB600 1002:438d OK
AMD SB700 1002:439d OK
AMD SC1100 100b:0510 ?
ATI SB400 1002:4377 OK
Broadcom HT-1000 1166:0205 OK
Intel 440MX 8086:7198 OK
Intel 6300ESB 8086:25a1 OK
Intel 631xESB/632xESB/3100 8086:2670 OK
Intel EP80579 8086:5031 OK
Intel ICH0 8086:2420 OK
Intel ICH10 8086:3a18 OK
Intel ICH10D 8086:3a1a OK
Intel ICH10DO 8086:3a14 OK
Intel ICH10R 8086:3a16 OK
Intel ICH2 8086:2440 OK
Intel ICH2-M 8086:244c OK
Intel ICH3-M 8086:248c OK
Intel ICH3-S 8086:2480 OK
Intel ICH4/ICH4-L 8086:24c0 OK
Intel ICH4-M 8086:24cc OK
Intel ICH5/ICH5R 8086:24d0 OK
Vendor Southbridge PCI IDs Status
Intel ICH6/ICH6R 8086:2640 OK
Intel ICH6-M 8086:2641 OK
Intel ICH7DH 8086:27b0 OK
Intel ICH7/ICH7R 8086:27b8 OK
Intel ICH7M 8086:27b9 OK
Intel ICH7MDH 8086:27bd OK
Intel ICH 8086:2410 OK
Intel ICH8DH 8086:2812 OK
Intel ICH8DO 8086:2814 OK
Intel ICH8/ICH8R 8086:2810 OK
Intel ICH8M 8086:2815 OK
Intel ICH8M-E 8086:2811 OK
Intel ICH9 8086:2918 OK
Intel ICH9DH 8086:2912 OK
Intel ICH9DO 8086:2914 OK
Intel ICH9M 8086:2919 OK
Intel ICH9M-E 8086:2917 OK
Intel ICH9R 8086:2916 OK
Intel MPIIX 8086:1234 ?
Intel PIIX3 8086:7000 OK
Intel PIIX4/4E/4M 8086:7110 OK
Intel PIIX 8086:122e OK
NVIDIA CK804 10de:0050 OK
NVIDIA CK804 10de:0051 OK
NVIDIA NForce2 10de:0060 OK
NVIDIA CK804 10de:00d3 OK
Vendor Southbridge PCI IDs Status
NVIDIA MCP51 10de:0260 ?
NVIDIA MCP51 10de:0261 ?
NVIDIA MCP51 10de:0262 ?
NVIDIA MCP51 10de:0263 ?
NVIDIA MCP55 10de:0360 OK
NVIDIA MCP55 10de:0361 OK
NVIDIA MCP55 10de:0362 OK
NVIDIA MCP55 10de:0363 OK
NVIDIA MCP55 10de:0364 OK
NVIDIA MCP55 10de:0365 OK
NVIDIA MCP55 10de:0366 OK
NVIDIA MCP55 10de:0367 OK
NVIDIA MCP67 10de:0548 OK
SiS SiS5595 1039:0008 OK
SiS SiS630 1039:0630 ?
VIA CX700 1106:8324 OK
VIA VT8231 1106:8231 ?
VIA VT8235 1106:3177 OK
VIA VT8237 1106:3227 OK
VIA VT8237A 1106:3337 OK
VIA VT8237S 1106:3372 OK
VIA VT82C586A/B 1106:0586 OK
VIA VT82C686A/B 1106:0686 ?

Supported mainboards

In general, it is very likely that flashrom works out of the box even if your mainboard is not listed below.

This is a list of mainboards where we have verified that they either do or do not need any special initialization to make flashrom work (given flashrom supports the respective chipset and flash chip), or that they do not yet work at all. If they do not work, support may or may not be added later.

Mainboards which don't appear in the list may or may not work (we don't know, someone has to give it a try). Please report any further verified mainboards on the mailing list.

Known good (worked out of the box)

Total amount of boards: 68

Vendor Mainboard Status
Abit AX8 OK
Advantech PCM-5820 OK
ASI MB-5BLMP OK
ASUS A8N-E OK
ASUS A8NE-FM/S OK
ASUS A8N-SLI Premium OK
ASUS A8V-E Deluxe OK
ASUS M2A-VM OK
ASUS M2N-E OK
ASUS M2V OK
ASUS P2B OK
ASUS P2B-F OK
ASUS P2B-D OK
ASUS P2B-DS OK
ASUS A7N8X Deluxe OK
ASUS A7V400-MX OK
ASUS A7V8X-MX OK
ASUS A8V-E SE OK
ASUS P2L97-S OK
ASUS M2A-MX OK
ASUS P5B-Deluxe OK
ASUS P6T Deluxe V2 OK
A-Trend ATC-6220 OK
BCOM WinNET100 OK
Vendor Mainboard Status
GIGABYTE GA-6BXC OK
GIGABYTE GA-6BXDU OK
GIGABYTE GA-6ZMA OK
Intel EP80759 OK
Jetway J7F4K1G5D-PB OK
MSI MS-6570 (K7N2) OK
MSI MS-7065 OK
MSI MS-7236 (945PL Neo3) OK
MSI MS-7345 (P35 Neo2-FIR) OK
MSI MS-7168 (Orion) OK
NEC PowerMate 2000 OK
PC Engines Alix.1c OK
PC Engines Alix.2c2 OK
PC Engines Alix.2c3 OK
PC Engines Alix.3c3 OK
PC Engines Alix.3d3 OK
RCA RM4100 OK
Supermicro H8QC8 OK
Sun Blade x6250 OK
Thomson IP1000 OK
T-Online S-100 OK
Tyan S1846 OK
Tyan S2881 OK
Vendor Mainboard Status
Tyan S2882 OK
Tyan S2882-D OK
Tyan S2891 OK
Tyan S2892 OK
Tyan S2895 OK
Tyan S3095 OK
Tyan S5180 OK
Tyan S5191 OK
Tyan S5197 OK
Tyan S5211 OK
Tyan S5211-1U OK
Tyan S5220 OK
Tyan S5375 OK
Tyan iS5375-1U OK
Tyan S5376G2NR/S5376WAG2NR OK
Tyan S5377 OK
Tyan S5397 OK
VIA EPIA-LN OK
VIA VB700X OK
VIA NAB74X0 OK
VIA pc2500e OK

Known good (with write-enable code in flashrom)

Total amount of boards: 33

Vendor Mainboard Required option Status
Acorp 6A815EPD -m acorp:6a815epd OK
agami Aruma -m AGAMI:ARUMA OK
Artec Group DBE61 -m artecgroup:dbe61 OK
Artec Group DBE62 -m artecgroup:dbe62 OK
ASUS A7V8-MX SE OK
ASUS P4B266 OK
ASUS P5A -m asus:p5a OK
BioStar P4M80-M4 OK
EPoX EP-8K5A2 OK
EPoX EP-BX3 -m epox:ep-bx3 OK
GIGABYTE GA-2761GXDK -m gigabyte:2761gxdk OK
GIGABYTE GA-7VT600 OK
GIGABYTE GA-M57SLI-S4 -m gigabyte:m57sli OK
Vendor Mainboard Required option Status
GIGABYTE GA-M61P-S3 -m gigabyte:m61p OK
GIGABYTE GA-MA78G-DS3H OK
GIGABYTE GA-MA78GM-S2H OK
GIGABYTE GA-MA790FX-DQ6 -m gigabyte:ma790fx-dq6 OK
HP DL145 G3 -m hp:dl145_g3 OK
IBM x3455 -m ibm:x3455 OK
Intel D201GLY OK
IWILL DK8-HTX -m iwill:dk8_htx OK
Kontron 986LCD-M -m kontron:986lcd-m OK
Kontron 986LCD-M -m kontron:986lcd-m OK
MSI MS-7135 (K8N Neo3) -m msi:k8n-neo3 OK
MSI MS-6702E (K8T Neo2-F) OK
Vendor Mainboard Required option Status
MSI MS-6712 (KT4V) -m msi:kt4v OK
MSI MS-6590 (KT4 Ultra) -m msi:kt4ultra OK
MSI MS-7046 OK
Tyan S2498 (Tomcat K7M) OK
VIA EPIA-CN OK
VIA EPIA M/MII/... OK
VIA EPIA SP OK
VIA PC3500G -m via:pc3500g OK

Not supported (yet)

Total amount of boards: 20

Vendor Mainboard Status
Abit IS-10 No
ASUS M3N78 Pro No
ASUS MEW-AM No
ASUS MEW-VM No
ASUS P3B-F No
ASUS P5B No
ASUS P5BV-M No
Biostar M6TBA No
Vendor Mainboard Status
Boser HS-6637 No
DFI 855GME-MGF No
FIC VA-502 No
GIGABYTE GA-K8N-SLI No
MSI MS-6178 No
MSI MS-7260 (K9N Neo) No
PCCHIPS M537DMA33 No
Vendor Mainboard Status
Soyo SY-5VD No
Sun Fire x4540 No
Sun Fire x4150 No
Sun Fire x4200 No
Sun Fire x4600 No

Supported programmers

This is a list of supported PCI devices flashrom can use as programmer:

Vendor Device PCI IDs Status
3COM 3C90xB: PCI 10/100 Mbps; shared 10BASE-T/100BASE-TX 10b7:9055 OK
3COM 3C90xB: PCI 10/100 Mbps; shared 10BASE-T/100BASE-T4 10b7:9001 ?
3COM 3C90xB: PCI 10BASE-T (TPO) 10b7:9004 ?
3COM 3C90xB: PCI 10BASE-T/10BASE2/AUI (COMBO) 10b7:9005 ?
3COM 3C90xB: PCI 10BASE-T/10BASE2 (TPC) 10b7:9006 ?
3COM 3C90xB: PCI 10BASE-FL 10b7:900a ?
3COM 3C90xB: PCI 10BASE-FX 10b7:905a ?
3COM 3C905C: EtherLink 10/100 PCI (TX) 10b7:9200 OK
3COM 3C980C: EtherLink Server 10/100 PCI (TX) 10b7:9805 ?
Silicon Image PCI0680 Ultra ATA-133 Host Ctrl 1095:0680 OK
Silicon Image SiI 3114 [SATALink/SATARaid] SATA Ctrl 1095:3114 OK
Silicon Image SiI 3124 PCI-X SATA Ctrl 1095:3124 ?
Silicon Image SiI 3132 SATA Raid II Ctrl 1095:3132 OK
Silicon Image SiI 3512 [SATALink/SATARaid] SATA Ctrl 1095:3512 ?

Board notes

Supported laptops/notebooks

In general, flashing laptops is more difficult because

  • Laptops often use the flash chip for stuff besides the BIOS.
  • Laptops often have special protection stuff which has to be handled by flashrom.
  • Laptops often use flash translation circuits which need extra drivers in flashrom.

IMPORTANT: At this point we recommend to not use flashrom on untested laptops unless you have a means to recover from a flashing that goes wrong (a working backup flash chip and/or good soldering skills).

Known-good

Vendor Model Status
Lenovo 3000 V100 TF05Cxx OK

Known-bad

Vendor Model Status
IBM/Lenovo Thinkpad T40p No
IBM/Lenovo 240 No
Acer Aspire One No1

1 http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html

Installation

Requirements:

  • pciutils development package (pciutils-dev/libpci-dev/pciutils-devel, depending on OS/distribution)
  • zlib development package (zlib1g-dev/zlib-devel, depending on OS/distribution)
  • subversion (if you checkout the source and build manually)

Manual Installation From Source:

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

Binary Packages:

  • Debian: sudo aptitude install flashrom
  • Fedora: sudo yum install flashrom
  • Gentoo: emerge flashrom
  • Mandriva: urpmi flashrom
  • openSUSE: yast -i coreboot-utils
  • T2 SDE
    • Installation from source: Emerge-Pkg flashrom
    • Installation of binaries: mine -i flashrom-0.9.0.tar.bz2
  • FreeBSD: cd /usr/ports/sysutils/flashrom && make install clean
  • Windows: There is a Windows port of the flashrom utility. Download the latest version: DarmawanMappatutu_Salihun.tar.gz.

Usage

Please see the flashrom(8) manpage.

Fully testing flashrom chip/southbridge/mainboard support

See this page for instructions on how to test flashrom properly (this may be risky, make sure you have a working backup flash chip).

Flashrom Live CD

Flashrom Live CD

Flash chip overview

Modern mainboards store the BIOS in a reprogrammable flash chip. There are hundreds of different flash (EEPROM) chips, with variables such as memory size, speed, communication bus (LPC vs. ISA/PCI) and packaging to name just a few. The three most common packages are called DIP, PLCC and TSOP. The BIOS copyright holders often place a fancy sticker on the BIOS chip showing a name or logotype, BIOS version, serial number and copyright notice.

DIP32: Dual In-line Package, 32 pins

A rectangular black plastic block with lots of pins along the two longer sides of the package. DIP chips can be socketed which means they are detachable from the mainboard using physical force. Since they haven't been moved in and out of the socket very much (yet, hehe) they can appear to be quite difficult to release from the socket. One way to remove a DIP from a socket is by prying a thin screwdriver in between the plastic package and the socket, along the shorter sides where there are no pins, and then gently bending the screwdriver to push the DIP upwards, away from the mainboard. Alternate between the two sides to avoid bending the pins, and don't touch any of the pins with the screwdriver, see FAQ about ESD, electro-static discharge. If the DIP is soldered directly to the mainboard, it has to be desoldered in order to be reprogrammed outside the mainboard. If you do this, it's a good idea to solder a socket to the mainboard instead, to ease any future experiments.

PLCC32: Plastic Leaded Chip Carrier, 32 pins

Black plastic block again, but this one is much more square. PLCC is becoming the standard for mainboards because of it's smaller physical size. PLCC can also be socketed or soldered directly to the mainboard. Socketed PLCC chips can be removed using a special PLCC removal tool, or using a piece of nylon line tied in a loop around the chip and pulled swiftly straight up, or bending/prying using small screwdrivers if one is careful. PLCC sockets are often fragile so the screwdriver approach is not recommended. While the nylon line method sounds onorthodox it works well. Desoldering PLCC can be painful without specialized desoldering equipment particularly because PLCC chips have leads on all four sides of the package.

DIP8: Dual In-line Package, 8 pins

SO8/SOIC8: Small-Outline Integrated Circuit, 8 pins

TSOP: Thin Small-Outline Package

TSOPs are often used in embedded systems where size is important and there is no need for replacement in the field. It is possible to (de)solder TSOPs by hand, but it comes close to wizardry.