.TH FLASHROM 8 "Jun 06, 2010"
.SH NAME
flashrom \- detect, read, write, verify and erase flash chips
.SH SYNOPSIS
.B flashrom \fR[\fB\-n\fR] [\fB\-V\fR] [\fB\-f\fR] [\fB\-h\fR|\fB\-R\fR|\
\fB\-L\fR|\fB\-z\fR|\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\
\fB\-v\fR <file>]
         [\fB\-c\fR <chipname>] [\fB\-m\fR [<vendor>:]<board>] \
[\fB\-l\fR <file>]
         [\fB\-i\fR <image>] [\fB\-p\fR <programmername>[:<parameters>]]
.SH DESCRIPTION
.B flashrom
is a utility for detecting, reading, writing, verifying and erasing flash
chips. It's often used to flash BIOS/EFI/coreboot/firmware images in-system
using a supported mainboard, but it also supports flashing of network cards
(NICs), SATA controller cards, and other external devices which can program
flash chips.
.PP
It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40,
and TSOP48 chips, which use various protocols such as LPC, FWH, parallel flash,
or SPI.
.SH OPTIONS
.B IMPORTANT:
Please note that the command line interface for flashrom will change before
flashrom 1.0. Do not use flashrom in scripts or other automated tools without
checking that your flashrom version won't interpret options in a different way.
.PP
You can specify one of
.BR \-h ", " \-R ", " \-L ", " \-z ", " \-E ", " \-r ", " \-w ", " \-v
or no operation.
If no operation is specified, flashrom will only probe for flash chips. It is
recommended that if you try flashrom the first time on a system, you run it
in probe only mode and check the output. Also you are advised to make a
backup of your current ROM contents with
.B \-r
before you try to write a new image.
.TP
.B "\-r, \-\-read <file>"
Read flash ROM contents and save them into the given
.BR <file> .
.TP
.B "\-w, \-\-write <file>"
Write
.B <file>
into flash ROM. This will first automatically
.B erase
the chip, then write to it.
.TP
.B "\-n, \-\-noverify"
Skip the automatic verification of flash ROM contents after writing. Using this
option is
.B not
recommended, you should only use it if you know what you are doing and if you
feel that the time for verification takes too long.
.sp
Typical usage is:
.B "flashrom \-n \-w <file>"
.sp
This option is only useful in combination with
.BR \-\-write .
.TP
.B "\-v, \-\-verify <file>"
Verify the flash ROM contents against the given
.BR <file> .
.TP
.B "\-E, \-\-erase"
Erase the flash ROM chip.
.TP
.B "\-V, \-\-verbose"
More verbose output. This option can be supplied multiple times
(max. 2 times, i.e.
.BR \-VV )
for even more debug output.
.TP
.B "\-c, \-\-chip" <chipname>
Probe only for the specified flash ROM chip. This option takes the chip name as
printed by
.B "flashrom \-L"
without the vendor name as parameter. Please note that the chip name is
case sensitive.
.TP
.B "\-m, \-\-mainboard" [<vendor>:]<board>
Override mainboard settings.
.sp
flashrom reads the coreboot table to determine the current mainboard. If no
coreboot table could be read or if you want to override these values, you can
specify \-m, e.g.:
.sp
.B "  flashrom \-\-mainboard AGAMI:ARUMA \-w agami_aruma.rom"
.sp
See the 'Known boards' or 'Known laptops' section in the output
of 'flashrom \-L' for a list of boards which require the specification of
the board name, if no coreboot table is found.
.TP
.B "\-f, \-\-force"
Force one or more of the following actions:
.sp
* Force chip read and pretend the chip is there.
.sp
* Force chip access even if the chip is bigger than the maximum supported \
size for the flash bus.
.sp
* Force erase even if erase is known bad.
.sp
* Force write even if write is known bad.
.TP
.B "\-l, \-\-layout <file>"
Read ROM layout from
.BR <file> .
.sp
flashrom supports ROM layouts. This allows you to flash certain parts of
the flash chip only. A ROM layout file looks like follows:
.sp
  00000000:00008fff gfxrom
  00009000:0003ffff normal
  00040000:0007ffff fallback
.sp
  i.e.:
  startaddr:endaddr name
.sp
All addresses are offsets within the file, not absolute addresses!
If you only want to update the normal image in a ROM you can say:
.sp
.B "  flashrom \-\-layout rom.layout \-\-image normal \-w agami_aruma.rom"
.sp
To update normal and fallback but leave the VGA BIOS alone, say:
.sp
.B "  flashrom \-l rom.layout \-i normal \"
.br
.B "           \-i fallback \-w agami_aruma.rom"
.sp
Currently overlapping sections are not supported.
.TP
.B "\-i, \-\-image <name>"
Only flash image
.B <name>
from flash layout.
.TP
.B "\-L, \-\-list\-supported"
List the flash chips, chipsets, mainboards, and PCI card "programmers"
supported by flashrom.
.sp
There are many unlisted boards which will work out of the box, without
special support in flashrom. Please let us know if you can verify that
other boards work or do not work out of the box.
.sp
.B IMPORTANT:
For verification you have
to test an ERASE and/or WRITE operation, so make sure you only do that
if you have proper means to recover from failure!
.TP
.B "\-z, \-\-list\-supported-wiki"
Same as
.BR \-\-list\-supported ,
but outputs the supported hardware in MediaWiki syntax, so that it can be
easily pasted into the wiki page at http://www.flashrom.org/. Please note
that MediaWiki output is not compiled in by default.
.TP
.B "\-p, \-\-programmer <name>[:parameter[,parameter[,parameter]]]"
Specify the programmer device. Currently supported are:
.sp
.BR "* internal" " (default, for in-system flashing in the mainboard)"
.sp
.BR "* dummy" " (just prints all operations and accesses)"
.sp
.BR "* nic3com" " (for flash ROMs on 3COM network cards)"
.sp
.BR "* nicrealtek" " (for flash ROMs on Realtek network cards)"
.sp
.BR "* nicsmc1211" " (for flash ROMs on RTL8139-compatible SMC2 network cards)"
.sp
.BR "* nicnatsemi" " (for flash ROMs on National Semiconductor DP838* network \
cards)"
.sp
.BR "* gfxnvidia" " (for flash ROMs on NVIDIA graphics cards)"
.sp
.BR "* drkaiser" " (for flash ROMs on Dr. Kaiser PC-Waechter PCI cards)"
.sp
.BR "* satasii" " (for flash ROMs on Silicon Image SATA/IDE controllers)"
.sp
.BR "* atahpt" " (for flash ROMs on Highpoint ATA/RAID controllers)"
.sp
.BR "* it87spi" " (for flash ROMs behind an ITE IT87xx Super I/O LPC/SPI \
translation unit)"
.sp
.BR "* ft2232_spi" " (for SPI flash ROMs attached to a FT2232H/FT4232H/JTAGkey \
based USB SPI programmer)"
.sp
.BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog)"
.sp
.BR "* buspirate_spi" " (for SPI flash ROMs attached to a Bus Pirate)"
.sp
.BR "* dediprog" " (for SPI flash ROMs attached to a Dediprog SF100)"
.sp
.BR "* rayer_spi" " (for SPI flash ROMs attached to a RayeR parport \
based programmer)"
.sp
.BR "* nicintel_spi" " (for SPI flash ROMs attached to an Intel Gigabit \
network cards)"
.sp
Some programmers have optional or mandatory parameters which are described
in detail in the
.B PROGRAMMER SPECIFIC INFO
section. Support for some programmers can be disabled at compile time.
.B "flashrom \-h"
lists all supported programmers.
.TP
.B "\-h, \-\-help"
Show a help text and exit.
.TP
.B "\-R, \-\-version"
Show version information and exit.
.SH PROGRAMMER SPECIFIC INFO
Some programmer drivers accept further parameters to set programmer-specific
parameters. These parameters are separated from the programmer name by a
colon. While some programmers take arguments at fixed positions, other
programmers use a key/value interface in which the key and value is separated
by an equal sign and different pairs are separated by a comma or a colon.
.TP
.BR "internal " programmer
Some mainboards require to run mainboard specific code to enable flash erase
and write support (and probe support on old systems with parallel flash).
The mainboard brand and model (if it requires specific code) is usually
autodetected using one of the following mechanisms: If your system is
running coreboot, the mainboard type is determined from the coreboot table.
Otherwise, the mainboard is detected by examining the onboard PCI devices
and possibly DMI info. If PCI and DMI do not contain information to uniquely
identify the mainboard (which is the exception), it might be necessary to
specify the mainboard using the
.B \-m
switch (see above).
.sp
Some of these board-specific flash enabling functions (called
.BR "board enables" )
in flashrom have not yet been tested. If your mainboard is detected needing
an untested board enable function, a warning message is printed and the
board enable is not executed, because a wrong board enable function might
cause the system to behave erratically, as board enable functions touch the
low-level internals of a mainboard. Not executing a board enable function
(if one is needed) might cause detection or erasing failure. If your board
protects only part of the flash (commonly the top end, called boot block),
flashrom might encounter an error only after erasing the unprotected part,
so running without the board-enable function might be dangerous for erase
and write (which includes erase).
.sp
The suggested procedure for a mainboard with untested board specific code is
to first try to probe the ROM (just invoke flashrom and check that it
detects your flash chip type) without running the board enable code (i.e.
without any parameters). If it finds your chip, fine. Otherwise, retry
probing your chip with the board-enable code running, using
.sp
.B "  flashrom \-p internal:boardenable=force"
.sp
If your chip is still not detected, the board enable code seems to be broken
or the flash chip unsupported. Otherwise, make a backup of your current ROM
contents (using
.BR \-r )
and store it to a medium outside of your computer, like
a USB drive or a network share. If you needed to run the board enable code
already for probing, use it for reading too. Now you can try to write the
new image. You should enable the board enable code in any case now, as it
has been written because it is known that writing/erasing without the board
enable is going to fail. In any case (success or failure), please report to
the flashrom mailing list, see below.
.sp
On systems running coreboot, flashrom checks whether the desired image matches
your mainboard. This needs some special board ID to be present in the image.
If flashrom detects that the image you want to write and the current board
do not match, it will refuse to write the image unless you specify
.sp
.B "  flashrom \-p internal:boardmismatch=force"
.sp
If your mainboard uses an ITE IT87 series Super I/O for LPC<->SPI flash bus
translation, flashrom should autodetect that configuration. You can use the
.sp
.B "  flashrom \-p internal:it87spiport=portnum"
.sp
syntax as explained in the
.B it87spi
programmer section to use a non-default port for controlling the IT87 series
Super I/O. In the unlikely case flashrom doesn't detect an active
IT87 LPC<->SPI bridge, you can try to force recognition by using the
.B it87spi
programmer.
.sp
Using flashrom on laptops is dangerous and may easily make your hardware
unusable (see also the
.B BUGS
section). The embedded controller (EC) in these
machines often interacts badly with flashing.
.B http://www.flashrom.org/Laptops
has more information. If flash is shared with the EC, erase is guaranteed to
brick your laptop and write is very likely to brick your laptop.
Chip read and probe may irritate your EC and cause fan failure, backlight
failure, sudden poweroff, and other nasty effects.
flashrom will attempt to detect laptops and abort immediately for safety
reasons.
If you want to proceed anyway at your own risk, use
.sp
.B "  flashrom \-p internal:laptop=force_I_want_a_brick"
.sp
You have been warned.
.sp
We will not help you if you force flashing on a laptop because this is a really
dumb idea.
.TP
.BR "dummy " programmer
An optional parameter specifies the bus types it
should support. For that you have to use the
.B "flashrom \-p dummy:bus=[type[+type[+type]]]"
syntax where
.B type
can be any of
.BR parallel ", " lpc ", " fwh ", " spi
in any order. If you specify bus without type, all buses will be disabled.
If you do not specify bus, all buses will be enabled.
.sp
Example:
.B "flashrom \-p dummy:bus=lpc+fwh"
.TP
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " gfxnvidia\
" , " satasii " and " atahpt " programmers
These programmers have an option to specify the PCI address of the card
your want to use, which must be specified if more than one card supported
by the selected programmer is installed in your system. The syntax is
.BR "flashrom \-p xxxx:pci=bb:dd.f" ,
where
.B xxxx
is the name of the programmer
.B bb
is the PCI bus number,
.B dd
is the PCI device number, and
.B f
is the PCI function number of the desired device.
.sp
Example:
.B "flashrom \-p nic3com:pci=05:04.0"
.TP
.BR "it87spi " programmer
An optional
.B it87spiport
parameter sets the I/O base port of the IT87 series SPI controller
interface to the port specified in the parameter instead of using the port
address set by the BIOS. For that you have to use the
.sp
.B "  flashrom \-p it87spi:it87spiport=portnum"
.sp
syntax where
.B portnum
is an I/O port number which must be a multiple of 8.
.TP
.BR "ft2232_spi " programmer
An optional parameter specifies the controller
type and interface/port it should support. For that you have to use the
.sp
.B "  flashrom \-p ft2232_spi:type=model,port=interface"
.sp
syntax where
.B model
can be any of
.BR 2232H ", " JTAGkey ", or " 4232H
and
.B interface
can be any of
.BR A ", or " B .
The default model is
.B 4232H
and the default interface is
.BR B .
.TP
.BR "serprog " programmer
A mandatory parameter specifies either a serial
device/baud combination or an IP/port combination for communication with the
programmer. In the device/baud combination, the device has to start with a
slash. For serial, you have to use the
.sp
.B "  flashrom \-p serprog:dev=/dev/device:baud"
.sp
syntax and for IP, you have to use
.sp
.B "  flashrom \-p serprog:ip=ipaddr:port"
.sp
instead. More information about serprog is available in
.B serprog-protocol.txt
in the source distribution.
.TP
.BR "buspirate_spi " programmer
A required
.B dev
parameter specifies the Bus Pirate device node and an optional
.B spispeed
parameter specifies the frequency of the SPI bus. The parameter
delimiter is a comma. Syntax is
.sp
.B "flashrom \-p buspirate_spi:dev=/dev/device,spispeed=frequency"
.sp
where
.B frequency
can be any of
.BR 30k ", " 125k ", " 250k ", " 1M ", " 2M ", " 2.6M ", " 4M ", " 8M
(in Hz). The default is the maximum frequency of 8 MHz.
.TP
.BR "dediprog " programmer
No parameters defined yet.
.TP
.BR "rayer_spi " programmer
The default I/O base address used for the parallel port is 0x378 and you can use
the optional
.B iobase
parameter to specify an alternate base I/O address with the
.sp
.B "  flashrom \-p rayer_spi:iobase=baseaddr"
.sp
syntax where
.B baseaddr
is base I/O port address of the parallel port, which must be a multiple of
four. Make sure to not forget the "0x" prefix for hexadecimal port addresses.
.sp
More information about the hardware is available at
http://rayer.ic.cz/elektro/spipgm.htm
.SH EXIT STATUS
flashrom exits with 0 on success, 1 on most failures but with 2 if /dev/mem
(/dev/xsvc on Solaris) can not be opened and with 3 if a call to mmap() fails.
.SH REQUIREMENTS
flashrom needs different access permissions for different programmers.
.sp
.B internal
needs raw memory access, PCI configuration space access, raw I/O port
access (x86) and MSR access (x86).
.sp
.B it87spi
needs raw I/O port access (x86).
.sp
.BR nic3com ", " nicrealtek ", " nicsmc1211 " and " nicnatsemi "
need PCI configuration space read access and raw I/O port access.
.sp
.B atahpt
needs PCI configuration space access and raw I/O port access.
.sp
.BR gfxnvidia " and " drkaiser
need PCI configuration space access and raw memory access.
.sp
.B rayer_spi
needs raw I/O port access.
.sp
.B satasii
needs PCI configuration space read access and raw memory access.
.sp
.B serprog
needs TCP access to the network or userspace access to a serial port.
.sp
.B buspirate_spi
needs userspace access to a serial port.
.sp
.BR dediprog " and " ft2232_spi
need access to the USB device via libusb.
.sp
.B dummy
needs no access permissions at all.
.sp
.BR internal ", " it87spi ", " nic3com ", " nicrealtek ", " nicsmc1211 ", "
.BR nicnatsemi ", " "gfxnvidia" ", " drkaiser ", " satasii " and " atahpt
have to be run as superuser/root, and need additional raw access permission.
.sp
.BR serprog ", " buspirate_spi ", " dediprog " and " ft2232_spi
can be run as normal user on most operating systems if appropriate device
permissions are set.
.sp
On OpenBSD, you can obtain raw access permission by setting
securelevel=-1 in /etc/rc.securelevel and rebooting, or rebooting into single
user mode.
.SH BUGS
Please report any bugs at
.sp
.B "  http://www.flashrom.org/trac/flashrom/newticket"
.sp
or on the flashrom mailing list at
.B "<flashrom@flashrom.org>"
.sp
We recommend to subscribe first at
.sp
.B "  http://www.flashrom.org/mailman/listinfo/flashrom"
.sp
Using flashrom on laptops is dangerous and may easily make your hardware
unusable unless you can desolder the flash chip and have a full flash chip
backup. This is caused by the embedded controller (EC) present in many laptops,
which interacts badly with any flash attempts. This is a hardware limitation
and flashrom will attempt to detect it and abort immediately for safety reasons.
.SH LICENCE
.B flashrom
is covered by the GNU General Public License (GPL), version 2. Some files are
additionally available under the GPL (version 2, or any later version).
.SH COPYRIGHT
.br
Please see the individual files.
.SH AUTHORS
Andrew Morgan
.br
Carl-Daniel Hailfinger
.br
Claus Gindhart
.br
David Borg
.br
David Hendricks
.br
Dominik Geyer
.br
Eric Biederman
.br
Giampiero Giancipoli
.br
Helge Wagner
.br
Idwer Vollering
.br
Joe Bao
.br
Jörg Fischer
.br
Joshua Roys
.br
Luc Verhaegen
.br
Li-Ta Lo
.br
Markus Boas
.br
Mattias Mattsson
.br
Michael Karcher
.br
Nikolay Petukhov
.br
Patrick Georgi
.br
Peter Lemenkov
.br
Peter Stuge
.br
Reinder E.N. de Haan
.br
Ronald G. Minnich
.br
Ronald Hoogenboom
.br
Sean Nelson
.br
Stefan Reinauer
.br
Stefan Wildemann
.br
Stephan Guilloux
.br
Steven James
.br
Uwe Hermann
.br
Wang Qingpei
.br
Yinghai Lu
.br
some others, please see the flashrom svn changelog for details.
.br
All authors can be reached via e-mail at <flashrom@flashrom.org>.
.PP
This manual page was written by Uwe Hermann <uwe@hermann-uwe.de>
and Carl-Daniel Hailfinger.
It is licensed under the terms of the GNU GPL (version 2 or later).
