.TH FLASHROM 8 "Jul 25, 2011"
.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. However, it also supports various external
PCI/USB/parallel-port/serial-port based devices which can program flash chips,
including some network cards (NICs), SATA/IDE controller cards, graphics cards,
the Bus Pirate device, various FTDI FT2232/FT4232H based USB devices, and more.
.PP
It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40,
TSOP48, and BGA 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> .
If the file already exists, it will be overwritten.
.TP
.B "\-w, \-\-write <file>"
Write
.B <file>
into flash ROM. This will first automatically
.B erase
the chip, then write to it.
.sp
In the process the chip is also read several times. First an in-memory backup
is made for disaster recovery and to be able to skip regions that are
already equal to the image file. This copy is updated along with the write
operation. In case of erase errors it is even re-read completely. After
writing has finished and if verification is enabled, the whole flash chip is
read out and compared with the input image.
.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. 3 times, i.e.
.BR \-VVV )
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 external programmers
(including PCI, USB, parallel port, and serial port based devices)
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
.BR 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" " (virtual programmer for testing flashrom)"
.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 "* nicintel" " (for parallel flash ROMs on Intel 10/100Mbit 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 "* satamv" " (for flash ROMs on Marvell SATA controllers)"
.sp
.BR "* atahpt" " (for flash ROMs on Highpoint ATA/RAID controllers)"
.sp
.BR "* ft2232_spi" " (for SPI flash ROMs attached to an FT2232/FT4232H family \
based USB SPI programmer), including the DLP Design DLP-USB1232H, \
FTDI FT2232H Mini-Module, FTDI FT4232H Mini-Module, openbiosprog-spi, Amontec \
JTAGkey/JTAGkey-tiny/JTAGkey-2, Olimex ARM-USB-TINY/-H, and Olimex \
ARM-USB-OCD/-H."
.sp
.BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog), \
including AVR flasher by Urja Rannikko, AVR flasher by eightdot, \
Arduino Mega flasher by fritz, InSystemFlasher by Juhana Helovuo, and \
atmegaXXu2-flasher by Stefan Tauner."
.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 on Intel Gigabit network cards)"
.sp
.BR "* ogp_spi" " (for SPI flash ROMs on Open Graphics Project graphics card)"
.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. If you want to
set the I/O base port of the IT87 series SPI controller manually instead of
using the value provided by the BIOS, use the 
.sp
.B "  flashrom \-p internal:it87spiport=portnum"
.sp
syntax where
.B portnum
is the I/O port number (must be a multiple of 8). In the unlikely case
flashrom doesn't detect an active IT87 LPC<->SPI bridge, please send a bug
report so we can diagnose the problem.
.sp
If you have an Intel chipset with an ICH6 or later southbridge and if you want
to set specific IDSEL values for a non-default flash chip or an embedded
controller (EC), you can use the
.sp
.B "  flashrom \-p internal:fwh_idsel=value"
.sp
syntax where value is the 48-bit hexadecimal raw value to be written in the
IDSEL registers of the Intel southbridge. The upper 32 bits use one hex digit
each per 512 kB range between 0xffc00000 and 0xffffffff, and the lower 16 bits
use one hex digit each per 1024 kB range between 0xff400000 and 0xff7fffff.
The rightmost hex digit corresponds with the lowest address range. All address
ranges have a corresponding sister range 4 MB below with identical IDSEL
settings. The default value for ICH7 is given in the example below.
.sp
Example:
.B "flashrom \-p internal:fwh_idsel=0x001122334567"
.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
The dummy programmer operates on a buffer in memory only. It provides a safe
and fast way to test various aspects of flashrom and is mainly used in
development and while debugging.
.sp
It is able to emulate some chips to a certain degree (basic
identify/read/erase/write operations work).
.sp
An optional parameter specifies the bus types it
should support. For that you have to use the
.sp
.B "  flashrom \-p dummy:bus=[type[+type[+type]]]"
.sp
syntax where
.B type
can be
.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"
.sp
The dummy programmer supports flash chip emulation for automated self-tests
without hardware access. If you want to emulate a flash chip, use the
.sp
.B "  flashrom \-p dummy:emulate=chip"
.sp
syntax where
.B chip
is one of the following chips (please specify only the chip name, not the
vendor):
.sp
.RB "* ST " M25P10.RES " SPI flash chip (RES, page write)"
.sp
.RB "* SST " SST25VF040.REMS " SPI flash chip (REMS, byte write)"
.sp
.RB "* SST " SST25VF032B " SPI flash chip (RDID, AAI write)"
.sp
Example:
.B "flashrom -p dummy:emulate=SST25VF040.REMS"
.sp
If you use flash chip emulation, flash image persistence is available as well
by using the
.sp
.B "  flashrom \-p dummy:emulate=chip,image=image.rom"
.sp
syntax where
.B image.rom
is the file where the simulated chip contents are read on flashrom startup and
where the chip contents on flashrom shutdown are written to.
.sp
Example:
.B "flashrom -p dummy:emulate=M25P10.RES,image=dummy.bin"
.sp
If you use SPI flash chip emulation for a chip which supports SPI page write
with the default opcode, you can set the maximum allowed write chunk size with
the
.sp
.B "  flashrom \-p dummy:emulate=chip,spi_write_256_chunksize=size"
.sp
syntax where
.B size
is the number of bytes (min. 1, max. 256).
.sp
Example:
.sp
.B "  flashrom -p dummy:emulate=M25P10.RES,spi_write_256_chunksize=5"
.TP
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " nicintel\
" , " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii\
" , " satamv" ", 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
.sp
.BR "  flashrom \-p xxxx:pci=bb:dd.f" ,
.sp
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 "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
.BR 2232H ", " 4232H ", " jtagkey ", " openmoko ", " arm-usb-tiny ", " \
arm-usb-tiny-h ", " arm-usb-ocd " or " arm-usb-ocd-h
and
.B interface
can be
.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
.BR 30k ", " 125k ", " 250k ", " 1M ", " 2M ", " 2.6M ", " 4M " or " 8M
(in Hz). The default is the maximum frequency of 8 MHz.
.TP
.BR "dediprog " programmer
An optional
.B voltage
parameter specifies the voltage the Dediprog should use. The default unit is
Volt if no unit is specified. You can use
.BR mV ", " milliVolt ", " V " or " Volt
as unit specifier. Syntax is
.sp
.B "  flashrom \-p dediprog:voltage=value"
.sp
where
.B value
can be
.BR 0V ", " 1.8V ", " 2.5V ", " 3.5V
or the equivalent in mV.
.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
.BR http://rayer.ic.cz/elektro/spipgm.htm .
.TP
.BR "ogp_spi " programmer
The flash ROM chip to access must be specified with the 
.B rom
parameter.
.sp
.B "  flashrom \-p ogp_spi:rom=name"
.sp
Where
.B name
is either
.B cprom
or
.B s3
for the configuration ROM and 
.B bprom
or
.B bios
for the BIOS ROM. If more than one card supported by the ogp_spi programmer
is installed in your system, you have to specify the PCI address of the card
you want to use with the
.B pci=
parameter as explained in the
.B nic3com
section above.
.sp
More information about the hardware is available at
.BR http://wiki.opengraphics.org .
.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
.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 satamv
needs PCI configuration space read access, raw I/O port 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 ", " nic3com ", " nicrealtek ", " nicsmc1211 ", " nicnatsemi ", "
.BR gfxnvidia ", " drkaiser ", " satasii ", " satamv " 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
.B ogp
needs PCI configuration space read access and raw memory access.
.sp
On OpenBSD, you can obtain raw access permission by setting
.B "securelevel=-1"
in
.B "/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.
.sp
More information about flashrom on laptops is available from
.sp
.B "  http://www.flashrom.org/Laptops"
.SH LICENSE
.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
Joerg Fischer
.br
Joshua Roys
.br
Luc Verhaegen
.br
Li-Ta Lo
.br
Mark Marshall
.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 Tauner
.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 email at <flashrom@flashrom.org>.
.PP
This manual page was written by Uwe Hermann <uwe@hermann-uwe.de>,
Carl-Daniel Hailfinger and others.
It is licensed under the terms of the GNU GPL (version 2 or later).
