Difference between revisions of "Flashrom"

From flashrom
Jump to: navigation, search
(Supported devices: Now supported in flashrom: Broadcom HT-1000 southbridge, IBM x3455 mainboard.)
(Add missing news)
 
(321 intermediate revisions by 24 users not shown)
Line 1: Line 1:
'''Flashrom''' is a utility written for LinuxBIOS and maintained in the [http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv2/util/flashrom LinuxBIOS Subversion repository]. It can be used to detect BIOS chips (DIP, PLCC), read their contents and write new contents on the chips ("flashing").
+
{{DISPLAYTITLE:flashrom}}<!-- it is called flashrom after all. -->
 +
<table width="100%" valign="top"><tr valign="top"><td width="80%">
  
== Supported devices ==
+
<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#eeeeee; align:right; border:1px solid #aabbcc;">
 
+
'''flashrom''' is a utility for identifying, reading, writing, verifying and erasing flash chips. It is designed to flash BIOS/EFI/coreboot/firmware/optionROM images on mainboards, network/graphics/storage controller cards, and various other programmer devices.
Note: The LinuxBIOSv1 version of Flashrom ("flash_and_burn") only supported a very small number of devices. Always use the [http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv2/util/flashrom latest Flashrom version from LinuxBIOSv2]! There are some compatible chips out to the below list.
+
<small>
 +
* Supports more than 476 flash chips, 291 chipsets, 500 mainboards, 79 PCI devices, 17 USB devices and various parallel/serial port-based programmers.
 +
* Supports [[Technology#Communication_bus_protocol|parallel, LPC, FWH and SPI]] flash interfaces and various chip packages ([[Technology#DIP32:_Dual_In-line_Package.2C_32_pins|DIP32]], [[Technology#PLCC32:_Plastic_Leaded_Chip_Carrier.2C_32_pins|PLCC32]], [[Technology#DIP8:_Dual_In-line_Package.2C_8_pins|DIP8]], [[Technology#SO8.2FSOIC8:_Small-Outline_Integrated_Circuit.2C_8_pins|SO8/SOIC8]], [[Technology#TSOP:_Thin_Small-Outline_Package.2C_32.2C_40.2C_or_48_pins|TSOP32, TSOP40, TSOP48]], [[Technology#BGA:_Ball_Grid_Array|BGA]] and more)
 +
* No physical access needed, root access is sufficient (not needed for some programmers).
 +
* 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 DOS, Linux, FreeBSD (including Debian/kFreeBSD), NetBSD, OpenBSD, DragonFlyBSD, anything Solaris-like, Mac OS X, and other Unix-like OSes as well as GNU Hurd. Partial Windows support is available (no internal programmer support at the moment, hence no "BIOS flashing").
 +
</small>
 +
</div>
  
{| border="0" valign="top"
+
<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#ff6666; align:right; border:1px solid #000000;">
| valign="top"|
+
=== Emergency help ===
  
'''Flash chips'''
+
'''IMPORTANT:''' If something went wrong during flashing, do '''NOT''' turn off/reboot your computer. Instead, let us help you recover. We can be contacted via [[IRC]] ('''#flashrom''' on [irc://chat.freenode.net/#flashrom freenode.net], [http://webchat.freenode.net/?channels=flashrom&uio=d4 webchat]) or [[Mailinglist|email]]. Please allow for a few hours until someone responds on IRC, we're all volunteers.
 +
</div>
  
{| border="0" style="font-size: smaller" valign="top"
+
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%
|- bgcolor="#6699dd"
+
| width=50% style="vertical-align:top"|
! align="left" | Vendor
 
! align="left" | Flash part
 
! align="left" | Status
 
  
|- bgcolor="#dddddd" valign="top"
+
{|
| AMD
+
|style="vertical-align:top"|
| AM-29F040B
+
X
| style="background:lime" | OK
+
|style="vertical-align:top"|
|- bgcolor="#dddddd" valign="top"
+
'''<span style="font-variant:small-caps; font-size:150%">About</span>'''<br /><small>Find out more about flashrom.</small><small><hr />[[News]] | [[Press]] | [[Testimonials]] | [[History]] | [[Friendliness]] | Follow us on [https://twitter.com/flashrom_org Twitter]</small>
| AMD
 
| AM-29F016D
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| ASD
 
| AE49F2008
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Atmel
 
| AT-29C040A
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Atmel
 
| AT-29C020
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| EMST
 
| F49B002UA
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Intel&reg;(Firmware Hub)
 
| 82802AB
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Intel&reg;(Firmware Hub)
 
| 82802AC
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| M-Systems
 
| MD-2802
 
| style="background:yellow" | OK<sup>1</sup>
 
|- bgcolor="#dddddd" valign="top"
 
| MX
 
| MX-29F002
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| PMC
 
| PMC-49FL002
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| PMC
 
| PMC-49FL004
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Sharp
 
| LHF-00L04
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-29EE020A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-28SF040A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-39SF010A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-39SF020A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-39SF040
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-39VF020
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF040B
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF040
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF020A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF080A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF002A/B
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF003A/B
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF004A/B
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF008A
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF004C
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF008C
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF016C
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SST
 
| SST-49LF160C
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ST
 
| ST-M29F002B
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ST
 
| ST-M29F002T
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ST
 
| ST-M29F002NT
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ST
 
| ST-M29F400BT
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ST
 
| ST-M29F040B
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SyncMOS
 
| S29C51001T/B
 
| style="background:yellow" | OK<sup>4</sup>
 
|- bgcolor="#eeeeee" valign="top"
 
| SyncMOS
 
| S29C51002T/B
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SyncMOS
 
| S29C51004T/B
 
| style="background:yellow" | OK<sup>4</sup>
 
|- bgcolor="#eeeeee" valign="top"
 
| SyncMOS
 
| S29C31004T
 
| style="background:yellow" | OK<sup>4</sup>
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W29C011
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W29C020C
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W49F002U
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W49V002A
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W49V002FA
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W39V040FA
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W39V040A
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W39V040B
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| Winbond&trade;
 
| W39V080A
 
| style="background:lime" | OK
 
 
|}
 
|}
  
| valign="top"|
+
|style="vertical-align:top"|
  
'''Southbridges'''
+
{|
 +
|style="vertical-align:top"|
 +
X
 +
|style="vertical-align:top"|
 +
'''<span style="font-variant:small-caps; font-size:150%">Developers</span>'''<br /><small>Get involved! Help us make flashrom better.</small><small><hr />[[Development Guidelines]] | [https://review.coreboot.org/cgit/flashrom.git Browse Source] | [https://review.coreboot.org/#/q/project:flashrom Pending patches] | [[Technology]] | [[Random notes]] | [[Easy projects]] | [[Board Testing HOWTO]]| [[Board Enable]] | [http://docs.google.com/document/d/18qKvEbfPszjsJJGJhwi8kRVDUG3GZkADzQSH6WFsKqw/ Meeting notes] | [[Windows]] | [[libflashrom]]</small>
 +
|}
  
{| border="0" style="font-size: smaller"
+
|-
|- bgcolor="#6699dd"
+
| width=50% style="vertical-align:top"|
! align="left" | Vendor
 
! align="left" | Southbridge
 
! align="left" | Status
 
  
|- bgcolor="#eeeeee" valign="top"
+
{|
| ALi
+
|style="vertical-align:top"|
| M1533
+
X
| style="background:lime" | OK
+
|style="vertical-align:top"|
|- bgcolor="#dddddd" valign="top"
+
'''<span style="font-variant:small-caps; font-size:150%">Getting Started</span>'''<br /><small>Download flashrom and get started.</small><small><hr />[[Latest release]] | [[Supported hardware]] | [[Downloads]] | [[Documentation]] | [[Live CD]] | [[qflashrom]]</small>
| AMD
 
| Geode&trade;&nbsp;CS5530
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| AMD
 
| Geode&trade;&nbsp;SC1100
 
| style="background:#dddddd" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| AMD
 
| AMD-8111
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| ATI
 
| SB400
 
| style="background:#eeeeee" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| Broadcom
 
| HT-1000
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| Intel&reg;&nbsp;
 
| ICH<sup>2</sup>
 
| style="background:yellow" | OK<sup>3</sup>
 
|- bgcolor="#eeeeee" valign="top"
 
| Intel&reg;&nbsp;
 
| PIIX4/PIIX4E/PIIX4M
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| NVIDIA
 
| CK804
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| NVIDIA
 
| MCP51
 
| style="background:#dddddd" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| NVIDIA
 
| MCP55
 
| style="background:lime" | OK
 
|- bgcolor="#eeeeee" valign="top"
 
| SiS
 
| 630
 
| style="background:#eeeeee" | ?
 
|- bgcolor="#eeeeee" valign="top"
 
| SiS
 
| 5595
 
| style="background:#eeeeee" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| VIA
 
| CX700
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| VIA
 
| VT8231
 
| style="background:#dddddd" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| VIA
 
| VT8235
 
| style="background:#dddddd" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| VIA
 
| VT8237
 
| style="background:#dddddd" | ?
 
|- bgcolor="#dddddd" valign="top"
 
| VIA
 
| VT82C686
 
| style="background:#dddddd" | ?
 
 
|}
 
|}
  
| valign="top"|
+
|style="vertical-align:top"|
 
 
'''Mainboards which need special setup'''
 
 
 
{| border="0" style="font-size: smaller"
 
|- bgcolor="#6699dd"
 
! align="left" | Vendor
 
! align="left" | Mainboard
 
! align="left" | Required option
 
! align="left" | Status
 
 
 
|- bgcolor="#eeeeee" valign="top"
 
| ag&aacute;mi
 
| [http://agami.com/products/AIS6000/ Aruma/AIS6000]
 
| -m AGAMI:ARUMA
 
| style="background:lime" | OK
 
 
 
|- bgcolor="#dddddd" valign="top"
 
| ASUS
 
| A7V400-MX
 
| &mdash;
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ASUS
 
| A7V8X-MX
 
| &mdash;
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
| ASUS
 
| P5A
 
| -m asus:p5a
 
| style="background:lime" | OK
 
|- bgcolor="#dddddd" valign="top"
 
 
 
|- bgcolor="#eeeeee" valign="top"
 
| IBM
 
| [http://www-03.ibm.com/systems/x/rack/x3455/ x3455]
 
| -m ibm:x3455
 
| style="background:lime" | OK
 
 
 
|- bgcolor="#dddddd" valign="top"
 
| IWILL
 
| [http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.asp?p_id=98 DK8-HTX]
 
| -m iwill:dk8_htx
 
| style="background:lime" | OK
 
 
 
|- bgcolor="#eeeeee" valign="top"
 
| VIA
 
| [http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=81 EPIA-M]
 
| &mdash;
 
| style="background:lime" | OK<sup>5</sup>
 
|- bgcolor="#eeeeee" valign="top"
 
| VIA
 
| [http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=202 EPIA-MII]
 
| &mdash;
 
| style="background:lime" | OK<sup>5</sup>
 
  
 +
{|
 +
|style="vertical-align:top"|
 +
X
 +
|style="vertical-align:top"|
 +
'''<span style="font-variant:small-caps; font-size:150%">Support</span>'''<br /><small>Learn how to contact us and find help and support.</small><small><hr />[[FAQ]] | [[Mailinglist]] | [[IRC]]  | [[Donations]] </small>
 
|}
 
|}
  
 
|}
 
|}
 +
</td><td width="20%">
 +
<!--
 +
[[File:Flash-BGA.jpg|center|thumb|Flash chip in BGA package.]]
 +
<br clear=all />
 +
-->
 +
'''<span style="font-variant:small-caps; font-size:120%">[[News]]</span>'''<hr />
 +
<small>
 +
* '''2020-02-16:''' [[Flashrom/1.2|flashrom 1.2 released]]
 +
* '''2019-06-22:''' [[Flashrom/1.1|flashrom 1.1 released]]
 +
* '''2019-03-30:''' [[Flashrom/1.0.1|flashrom 1.0.1 released]]
 +
* '''2018-01-02:''' [[Flashrom/1.0|flashrom 1.0 released]]
 +
* '''2016-03-13:''' [[Flashrom/0.9.9|flashrom 0.9.9 released]]
 +
* '''2015-03-01:''' [[Flashrom/0.9.8|flashrom 0.9.8 released]]
 +
* '''2013-08-14:''' [[Flashrom/0.9.7|flashrom 0.9.7 released]]
 +
* '''2013-04-08:''' flashrom participates in [[GSoC]]
 +
* '''2012-08-08:''' [[Flashrom/0.9.6|flashrom 0.9.6.1 released]]
 +
</small>
  
 +
<!--
 +
'''<span style="font-variant:small-caps; font-size:120%">[[Current events|Upcoming Events]]</span>'''<hr />
 +
-->
 +
<!-- List of upcoming events (remove events after they have taken place). -->
 
<small>
 
<small>
<sup>1</sup> Unsupported, disabled by default.<br />
+
<!-- * '''2009/mon/day:''' coreboot event at [[Link]] in somecity -->
<sup>2</sup> 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, ICH8DH, and ICH8DO chipsets.<br />
+
<!-- * '''2009/12/27:''' coreboot presentation at [http://events.ccc.de/congress/2009/ 26C3] in Berlin -->
<sup>3</sup> Identifying and reading chips seems to work, but there are [http://tracker.linuxbios.org/trac/LinuxBIOS/ticket/7 reports] that writing may not work on some mainboards.<br />
 
<sup>4</sup> Untested, but should work.<br />
 
<sup>5</sup> Might also work for other CLE266 based EPIAs.
 
 
</small>
 
</small>
  
== Installation ==
+
<br/>
 
+
{{#widget:Ohloh Project|id=flashrom|type=basic_stats}}
=== Requirements ===
 
 
 
Flashrom requires the '''libpci''' and '''zlib''' development packages in order to be built.
 
 
 
In Debian unstable the respective packages are called '''libpci-dev''' and '''zlib1g-dev'''.
 
  
=== Manual Installation ===
 
  
$ svn co svn://linuxbios.org/repos/trunk/LinuxBIOSv2
+
</td></tr></table>
$ cd LinuxBIOSv2/util/flashrom
 
$ make
 
$ make install
 
 
=== Debian ===
 
  
$ apt-get install flashrom
+
__NOTOC__
 +
__NOEDITSECTION__

Latest revision as of 12:58, 16 April 2020

flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips. It is designed to flash BIOS/EFI/coreboot/firmware/optionROM images on mainboards, network/graphics/storage controller cards, and various other programmer devices.

  • Supports more than 476 flash chips, 291 chipsets, 500 mainboards, 79 PCI devices, 17 USB devices and various parallel/serial port-based programmers.
  • Supports parallel, LPC, FWH and SPI flash interfaces and various chip packages (DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40, TSOP48, BGA and more)
  • No physical access needed, root access is sufficient (not needed for some programmers).
  • 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 DOS, Linux, FreeBSD (including Debian/kFreeBSD), NetBSD, OpenBSD, DragonFlyBSD, anything Solaris-like, Mac OS X, and other Unix-like OSes as well as GNU Hurd. Partial Windows support is available (no internal programmer support at the moment, hence no "BIOS flashing").

Emergency help

IMPORTANT: If something went wrong during flashing, do NOT turn off/reboot your computer. Instead, let us help you recover. We can be contacted via IRC (#flashrom on freenode.net, webchat) or email. Please allow for a few hours until someone responds on IRC, we're all volunteers.

X

About
Find out more about flashrom.
News | Press | Testimonials | History | Friendliness | Follow us on Twitter

X

Developers
Get involved! Help us make flashrom better.
Development Guidelines | Browse Source | Pending patches | Technology | Random notes | Easy projects | Board Testing HOWTO| Board Enable | Meeting notes | Windows | libflashrom

X

Getting Started
Download flashrom and get started.
Latest release | Supported hardware | Downloads | Documentation | Live CD | qflashrom

X

Support
Learn how to contact us and find help and support.
FAQ | Mailinglist | IRC | Donations
News