Flashrom: Difference between revisions

From flashrom
Jump to navigation Jump to search
(→‎Supported laptops: added section)
(No difference)

Revision as of 15:49, 7 May 2009

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

Highlights of flashrom include:

  • Supports parallel, LPC, FWH and SPI flash interfaces.
  • Supports more than 150 flash chip families and half a dozen variants of each family.
  • Flash chip package agnostic. DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40 and more have all been verified to work.
  • Supports more than 75 different chipsets, some with multiple flash controllers.
  • Features special mainboard enabling code for dozens of nonstandard mainboards.
  • 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 ROM 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 much faster than most vendor flash tools.
  • Supports Linux, FreeBSD, DragonFly BSD, Solaris, Mac OS X, and other Unix-like OSes.


Supported devices

Note: There are probably some flash ROM chips which are compatible to the ones listed below.

Vendor Flash part Status
  Probe Read Write Erase
AMD Am29F002(N)BB ? ? ? ?
AMD Am29F002(N)BT OK OK OK OK
AMD Am29F040B OK OK OK OK
AMD Am29LV040B ? ? ? ?
AMD Am29F016D ? ? ? ?
AMIC A25L40P OK OK OK OK
AMIC A29002B ? ? ? ?
AMIC A29002T OK OK OK OK
AMIC A29040B OK OK ? ?
AMIC A49LF040A OK OK OK OK
ASD AE49F2008 ? ? ? ?
Atmel AT25DF321 OK OK OK OK
Atmel AT29C040A ? ? ? ?
Atmel AT29C020 OK OK OK OK
Atmel AT49F002(N) OK OK ? ?
Atmel AT49F002(N)T OK OK OK OK
EON EN29F002(A)(N)T OK OK OK OK
EON EN29F002(A)(N)B ? ? ? ?
EMST F49B002UA ? ? ? ?
Fujitsu MBM29F400TC OK OK ? ?
Intel® 82802AB OK OK OK OK
Intel® 82802AC OK OK OK OK
Macronix MX29F002 ? ? ? ?
Macronix MX29F002B ? ? ? ?
Macronix MX25L4005 OK OK OK OK
Macronix MX25L8005 OK OK OK OK
Macronix MX25L3205 OK OK OK OK
Numonyx M25PE10 ? ? ? ?
Numonyx M25PE20 ? ? ? ?
Numonyx M25PE40 ? ? ? ?
Numonyx M25PE80 OK OK OK OK
Numonyx M25PE16 ? ? ? ?
PMC Pm49FL002 OK OK OK OK
PMC Pm49FL004 OK OK OK OK
PMC Pm25LV512 ? ? ? ?
PMC Pm25LV010 ? ? ? ?
PMC Pm25LV020 ? ? ? ?
PMC Pm25LV040 ? ? ? ?
PMC Pm25LV080B ? ? ? ?
PMC Pm25LV016B ? ? ? ?
Sharp LHF00L04 ? ? ? ?
Spansion S25FL016A OK OK OK OK
Vendor Flash part Status
  Probe Read Write Erase
SST SST25VF040B ? ? ? ?
SST SST25VF080B OK ? ? ?
SST SST25VF016B OK OK OK OK
SST SST25VF032B OK OK OK OK
SST SST29EE010A OK OK OK OK
SST SST29EE020A ? ? ? ?
SST SST28SF040A ? ? ? ?
SST SST39SF010A OK OK OK OK
SST SST39SF020A OK OK OK OK
SST SST39SF020 OK OK OK OK
SST SST39SF040 OK OK OK OK
SST SST39VF020 OK OK OK OK
SST SST39VF040 OK ? ? ?
SST SST49LF040B OK OK OK OK
SST SST49LF040 OK OK OK OK
SST SST49LF020A ? ? ? ?
SST SST49LF080A OK OK OK OK
SST SST49LF002A/B OK OK OK OK
SST SST49LF003A/B ? ? ? ?
SST SST49LF004A/B OK OK OK OK
SST SST49LF008A OK OK OK OK
SST SST49LF004C ? ? ? ?
SST SST49LF008C ? ? ? ?
SST SST49LF016C OK OK OK OK
SST SST49LF160C OK OK OK OK
SST SST49LF020 OK OK ? ?
Vendor Flash part Status
  Probe Read Write Erase
ST M25P16 OK OK OK OK
ST M25P32 OK OK OK OK
ST M50FLW040A ? ? ? ?
ST M50FLW040B ? ? ? ?
ST M50FLW080A OK OK OK OK
ST M50FLW080B ? ? ? ?
ST M50FW002 ? ? ? ?
ST M50FW040 OK OK OK OK
ST M50FW080 OK OK OK OK
ST M50FW016 ? ? ? ?
ST M50LPW116 ? ? ? ?
ST M29F002B ? ? ? ?
ST M29F002T OK OK OK OK
ST M29F002NT ? ? ? ?
ST M29F400BT ? ? ? ?
ST M29F040B OK OK OK OK
ST M29W010B ? ? ? ?
ST M29W040B ? ? ? ?
SyncMOS S29C51001T/B ? ? ? ?
SyncMOS S29C51002T/B OK OK OK OK
SyncMOS S29C51004T/B ? ? ? ?
SyncMOS S29C31004T ? ? ? ?
Winbond™ W29C011 OK OK OK OK
Winbond™ W29C020C OK OK OK OK
Winbond™ W29C040P ? ? ? ?
Winbond™ W29EE011 OK OK OK OK
Winbond™ W49F002U OK OK OK OK
Winbond™ W49V002A OK OK OK OK
Winbond™ W49V002FA ? ? ? ?
Winbond™ W39V040FA OK OK OK OK
Winbond™ W39V040A ? ? ? ?
Winbond™ W39V040B OK OK OK OK
Winbond™ W39V040C OK OK OK OK
Winbond™ W39V080A OK OK OK OK
Winbond™ W39V080FA OK OK OK OK
Winbond™ W25x10 ? ? ? ?
Winbond™ W25x20 ? ? ? ?
Winbond™ W25x40 OK OK OK OK
Winbond™ W25x80 OK OK OK OK

Supported chipsets

Vendor Southbridge Status
ALi M1533 OK
AMD Geode™ CS5530/A OK
AMD Geode™ SC1100 ?
AMD AMD-768 OK
AMD AMD-8111 OK
AMD SB600 OK
AMD SB700 OK
ATI SB400 OK
Broadcom HT-1000 OK
Intel®  ICH* OK1
Intel®  6300ESB OK
Intel®  631xESB/632xESB/3100 OK
Intel®  EP80579 OK
Intel®  PIIX OK
Intel®  MPIIX ?
Intel®  PIIX3 OK
Intel®  PIIX4/PIIX4E/PIIX4M OK
Intel®  440MX OK
Vendor Southbridge Status
NVIDIA CK804 OK
NVIDIA MCP51 ?
NVIDIA MCP55 OK
NVIDIA MCP67 OK
SiS 630 ?
SiS 5595 ?
VIA CX700 OK
VIA VT8231 ?
VIA VT8235 OK
VIA VT8237 OK
VIA VT8237S OK
VIA VT82C586A/B OK
VIA VT82C686A/B ?

1 This includes the ICH, ICH0, ICH2, ICH2-M, ICH3-S, ICH3-M, ICH4/ICH4-L, ICH4-M, ICH5/ICH5R, ICH6/ICH6R, ICH6-M, ICH7DH, ICH7/ICH7R, ICH7M, ICH7MDH, ICH8/ICH8R, ICH8M-E, ICH8DH, ICH8DO, ICH8M, ICH9DH, ICH9DO, ICH9R, ICH9M-E, ICH9, ICH9M, ICH10DO, ICH10R, ICH10, ICH10D chipsets.

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 southbridge and ROM 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 or add them here directly.

Known-good

Vendor Mainboard Status
Abit AX8 OK
Advantech PCM-5820 OK
ASI MB-5BLMP1 OK
ASUS A8N-E OK
ASUS A8NE-FM/S OK
ASUS A8N-SLI Premium OK
ASUS A8V-E Deluxe OK
ASUS M2A-VM OK4
ASUS M2N-E OK
ASUS P2B OK
ASUS P2B-F OK
ASUS P2B-D OK
ASUS P2B-DS OK
ASUS A7V400-MX OK
ASUS A7V8X-MX OK
ASUS P4B266 OK
ASUS A8V-E SE OK6
ASUS P2L97-S OK
ASUS M2A-MX OK
A-Trend ATC-6220 OK
BCOM WinNET1005 OK
GIGABYTE GA-6BXC OK
GIGABYTE GA-6BXDU OK
MSI KT4V OK
MSI MS-7046 OK
MSI MS-7065 OK
MSI MS-7236 (945PL Neo3) OK
NEC PowerMate 2000 (Celeron) OK
PC Engines Alix.1c OK
PC Engines Alix.2c2 OK
PC Engines Alix.2c3 OK
PC Engines Alix.3c3 OK

Known-good (continued)

Vendor Mainboard Status
RCA RM4100 OK
Sun Blade x6250 OK
Thomson IP1000 OK
T-Online S-100 OK
Tyan S1846 OK
Tyan S2498 (Tomcat K7M) OK
Tyan S2881 OK
Tyan S2882 OK
Tyan S2882-D 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 S5375-1U OK
Tyan S5376G2NR/S5376WAG2NR OK
Tyan S5377 OK
Tyan S5397 OK
VIA EPIA-M OK2
VIA EPIA-MII OK2
VIA EPIA-CN OK
VIA EPIA-LN OK
VIA VB700X OK
VIA NAB74X0 OK
VIA pc2500e OK

Known-good (but special setup required)

Vendor Mainboard Required option Status
Acorp 6A815EPD -m acorp:6a815epd OK
agámi Aruma/AIS6000 -m AGAMI:ARUMA OK
Artec Group DBE61 -m artecgroup:dbe61 OK
Artec Group DBE62 -m artecgroup:dbe62 OK
ASUS P5A -m asus:p5a OK
EPoX EP-BX3 -m epox:ep-bx3 OK
IBM x3455 -m ibm:x3455 OK
GIGABYTE GA-M57SLI-S4 -m gigabyte:m57sli OK
GIGABYTE GA-M61P-S3 -m gigabyte:m61p OK
GIGABYTE GA-MA78G-DS3H autodetected OK
IWILL DK8-HTX -m iwill:dk8_htx OK
Kontron Kontron 986LCD-M mITX -m kontron:986lcd-m OK
MSI K8N Neo3 -m msi:k8n-neo3 OK
MSI KT3 Ultra2 -m msi:kt4v OK

Known-bad

Vendor Mainboard Status
ASUS A7N8X-E Deluxe No
ASUS MEW-AM No
ASUS MEW-VM No
ASUS P3B-F No
Biostar M6TBA No
FIC VA-502 No
MSI MS-7260 (K9N Neo) WIP3
PCCHIPS M537DMA33 No
Soyo SY-5VD No
Sun Fire x4540 No
Sun Fire x4150 No
Sun Fire x4200 No
Sun Fire x4600 No

1 Used in the IGEL WinNET III thin client.
2 Might also work for other CLE266 based EPIAs.
3 Interestingly flashrom does not work when the vendor BIOS is booted, but it does work flawlessly when the machine is booted with coreboot.
4 See http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html.
5 Used in the IGEL-316 thin client.
6 See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html.

Supported laptops/notebooks

In general, flashing laptops is more difficult because

  • laptops often use the flash ROM 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.

Known-good

Vendor Model Status
Lenovo 3000 V100 OK

Installation

Requirements

Flashrom requires the pciutils and zlib and the respective development packages in order to be built. In addition, the subversion package is required to download it.

In Debian unstable these development packages are called pciutils-dev/libpci-dev, zlib1g-dev, and subversion. Most other distributions call them pciutils-devel, zlib-devel, and subversion.

Manual Installation

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

Debian

$ sudo aptitude install flashrom

Fedora

$ sudo yum install flashrom

Gentoo

$ emerge flashrom

Mandriva

$ urpmi flashrom

openSUSE

$ yast -i coreboot-utils

For distributions older than openSUSE Factory (11.0) you find "backports" in the openSUSE Build Service.

T2 SDE

Installation from source:

$ Emerge-Pkg flashrom

Installation of binaries:

$ mine -i flashrom-0.9.0.tar.bz2

Windows

There is a Windows port of the flashrom utility. Download the latest version at http://google-summer-of-code-2007-coresystems.googlecode.com/files/DarmawanMappatutu_Salihun.tar.gz

Usage

Detect whether flashrom knows about your chipset/mainboard/BIOS chip:

$ flashrom

Read the current BIOS image into a file:

$ flashrom -r backup.bin

Depening on the chip driver, you may have to erase the chip before writing:

$ flashrom -E

Write a BIOS image (proprietary or coreboot) on the ROM chip:

$ flashrom -wv newbios.bin
WARNING: This will overwrite your current BIOS! Make sure you know what you're doing!

For more documentation please see the flashrom README or the man page.

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 ROM chip).

Flashrom Live CD

Flashrom Live CD

ROM chip overview

Modern mainboards store the BIOS in a reprogrammable flash ROM chip. There are hundreds of different flash ROMs, 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 ROMs 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

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.