Man Linux: Main Page and Category List


       flashrom - detect, read, write, verify and erase flash chips


       flashrom [-n] [-V] [-f] [-h|-R|-L|-z|-E|-r <file>|-w <file>|-v <file>]
                [-c <chipname>] [-m [<vendor>:]<part>] [-l <file>]
                [-i <image>] [-p <programmername>[:<parameters>]]


       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

       It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, and
       TSOP40  chips,  which  use various protocols such as LPC, FWH, parallel
       flash, or SPI.


       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.

       You  can specify one of -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 -r before
       you try to write a new image.

       -r, --read <file>
              Read flash ROM contents and save them into the given <file>.

       -w, --write <file>
              Write <file> into flash ROM.

       -n, --noverify
              Skip the automatic verification  of  flash  ROM  contents  after
              writing.  Using  this option is 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.

              Typical usage is: flashrom -n -w file

              This option is only useful in combination with --write.

       -v, --verify <file>
              Verify the flash ROM contents against the given <file>.

       -E, --erase
              Erase the flash ROM chip.

       -V, --verbose
              More verbose output.

       -c, --chip <chipname>
              Probe  only  for specified flash ROM chip. This option takes the
              chip name as printed by flashrom -L  without  the  vendor  name.
              Please note that the chip name is case sensitive.

       -m, --mainboard [<vendor>:]<part>
              Override mainboard settings.

              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.:

                flashrom --mainboard AGAMI:ARUMA -w agami_aruma.rom

              See   the  ’Supported  mainboards’  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.

       -f, --force
              Force one or more of the following actions:

              * Force chip read and pretend the chip is there.

              * Force chip access even if the chip is bigger than  max  decode
              size for the flash bus.

              * Force erase even if erase is known bad.

              * Force write even if write is known bad.

       -l, --layout <file>
              Read ROM layout from <file>.

              flashrom  supports ROM layouts. This allows you to flash certain
              parts of the flash chip only.  A  ROM  layout  file  looks  like

                00000000:00008fff gfxrom
                00009000:0003ffff normal
                00040000:0007ffff fallback

                startaddr:endaddr name

              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:

                flashrom --layout rom.layout --image normal -w agami_aruma.rom

              To update normal and fallback but leave the VGA BIOS alone, say:

                flashrom -l rom.layout -i normal
                         -i fallback -w agami_aruma.rom

              Currently overlapping sections are not supported.

       -i, --image <name>
              Only flash image <name> from flash layout.

       -L, --list-supported
              List  the  flash  chips,  chipsets,  mainboards,  and  PCI  card
              "programmers" supported by flashrom.

              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.
              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!

       -z, --list-supported-wiki
              Same  as --list-supported, but outputs the supported hardware in
              MediaWiki syntax, so that it can be easily pasted into the  wiki
              page  at  Please  note that MediaWiki
              output is not compiled in by default.

       -p, --programmer <name>[:parameter[,parameter[,parameter]]]
              Specify the programmer device. Currently supported are:

              * internal (default, for in-system flashing in the mainboard)

              * dummy (just prints all operations and accesses)

              * nic3com (for flash ROMs on 3COM network cards)

              * nicrealtek (for flash ROMs on Realtek network cards)

              * nicsmc1211 (for flash ROMs on RTL8139-compatible SMC2  network

              * gfxnvidia (for flash ROMs on NVIDIA graphics cards)

              * drkaiser (for flash ROMs on Dr. Kaiser PC-Waechter PCI cards)

              * satasii (for flash ROMs on Silicon Image SATA/IDE controllers)

              * atahpt (for flash ROMs on Highpoint ATA/RAID controllers)

              * it87spi (for flash ROMs behind an ITE IT87xx Super I/O LPC/SPI
              translation unit)

              * ft2232_spi (for flash ROMs attached to a FT2232H/FT4232H based
              USB SPI programmer)

              * serprog (for flash ROMs attached to Urja’s AVR programmer)

              * buspirate_spi (for flash ROMs attached to a Bus Pirate)

              Some programmers have optional or mandatory parameters which are
              described  in  detail  in  the PROGRAMMER SPECIFIC INFO section.
              Support for some programmers can be disabled  at  compile  time.
              flashrom -h lists all supported programmers.

       -h, --help
              Show a help text and exit.

       -R, --version
              Show version information and exit.


       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.

       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 -m switch
              (see above).

              Some of these board-specific flash  enabling  functions  (called
              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).

              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

              flashrom -p internal:boardenable=force

              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 -r) and store it to a
              medium outside of your computer, like an 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.

              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

              flashrom -p internal:boardmismatch=force

              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

              flashrom  -p internal:it87spiport=portnum syntax as explained in
              the 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 it87spi programmer.

              Using  flashrom on laptops is dangerous and may easily make your
              hardware unusable (see also the  BUGS  section).   The  embedded
              controller  (EC)  in  these  machines often interacts badly with
              flashing. 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

              flashrom -p internal:laptop=force_I_want_a_brick

              You have been warned.

              We  will  not help you if you force flashing on a laptop because
              this is a really dumb idea.

       dummy programmer
              An optional parameter specifies the bus types it should support.
              For that you have to use the flashrom -p dummy:type syntax where
              type can be any comma-separated combination of parallel lpc  fwh
              spi all in any order.

              Example: flashrom -p dummy:lpc,fwh

       nic3com,   nicrealtek,   nicsmc1211,   gfxnvidia,  satasii  and  atahpt
              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 flashrom -p xxxx:bb:dd.f , where xxxx
              is  the  name  of the programmer bb is the PCI bus number, dd is
              the PCI device number, and f is the PCI function number  of  the
              desired NIC.

              Example: flashrom -p nic3com:05:04.0

       it87spi programmer
              An  optional  parameter  sets the I/O base port of the IT87* 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 flashrom -p  it87spi:it87spiport=portnum  syntax
              where  portnum is an I/O port number which must be a multiple of

       ft2232_spi programmer
              An  optional  parameter  species   the   controller   type   and
              interface/port  it  should support. For that you have to use the
              flashrom -p ft2232_spi:model,port=interface syntax  where  model
              can  be any of 2232H 4232H and interface can be any of A B.  The
              default model is 4232H and the default interface is B.

       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 flashrom -p
              serprog:/dev/device:baud syntax and for  IP,  you  have  to  use
              flashrom  -p  serprog:ip:port  instead.  More  information about
              serprog is  available  in  serprog-protocol.txt  in  the  source

       buspirate_spi programmer
              A  required  dev  parameter specifies the Bus Pirate device node
              and an optional spispeed parameter specifies  the  frequency  of
              the SPI bus. The parameter delimiter is a comma. Syntax is

              flashrom -p buspirate_spi:dev=/dev/device,spispeed=frequency

              where frequency can be any of 30k 125k 250k 1M 2M 2.6M 4M 8M (in
              Hz). The default is the maximum frequency of 8 MHz.


       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.


       Please            report            any             bugs             at,  or  on  the  flashrom
       mailing list at

       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.


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


       Please see the individual files.


       Carl-Daniel Hailfinger
       Claus Gindhart <>
       Dominik Geyer <>
       Eric Biederman
       Giampiero Giancipoli <>
       Joe Bao <>
       Luc Verhaegen <>
       Li-Ta Lo
       Markus Boas <>
       Michael Karcher <>
       Nikolay Petukhov <>
       Peter Stuge <>
       Reinder E.N. de Haan <>
       Ronald G. Minnich <>
       Ronald Hoogenboom <>
       Sean Nelson <>
       Stefan Reinauer <>
       Stefan Wildemann <>
       Steven James <>
       Uwe Hermann <>
       Wang Qingpei
       Yinghai Lu
       some others

       This  manual  page  was written by Uwe Hermann <> and
       Carl-Daniel Hailfinger.  It is licensed under the terms of the GNU  GPL
       (version 2 or later).

                                 Apr 29, 2010