Difference between revisions of "Flashrom"

From flashrom
Jump to navigation Jump to search
(New flashrom location.)
(Add link to GSoC page into Developers menu)
(319 intermediate revisions by 14 users not shown)
Line 1: Line 1:
'''Flashrom''' is a utility which can be used to detect BIOS chips (DIP, PLCC), read their contents and write new contents on the chips ("flash the chip").
{{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.
<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>


Note: There are probably some chips which are compatible to the ones listed below.
<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#ff6666; align:right; border:1px solid #000000;">
=== Emergency help ===


{| border="0" valign="top"
'''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 [[Contact#IRC|IRC]] ('''#flashrom''' on [irc://irc.libera.chat/#flashrom libera.chat], [https://web.libera.chat/#flashrom webchat]) or [[Contact#Mailing_List|email]]. Please allow for a few hours until someone responds on IRC, we're all volunteers.
| valign="top"|
</div>


'''Flash chips'''
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%
| width=50% style="vertical-align:top"|


{| border="0" style="font-size: smaller" valign="top"
{|
|- bgcolor="#6699dd"
|style="vertical-align:top"|
! align="left" | Vendor
X
! align="left" | Flash part
|style="vertical-align:top"|
! align="left" | Status
'''<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>
 
|- bgcolor="#dddddd" valign="top"
| AMD
| AM-29F040B
| style="background:lime" | OK
|- bgcolor="#dddddd" valign="top"
| 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]] | [[GSoC]]</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/CS5530A
| 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
| style="background:yellow" | OK<sup>2</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]] | [[Contact]]  | [[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. ICH2: 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 />
<!-- * '''2009/12/27:''' coreboot presentation at [http://events.ccc.de/congress/2009/ 26C3] in Berlin -->
<sup>4</sup> Untested, but should work.<br />
<sup>5</sup> Might also work for other CLE266 based EPIAs.
</small>
</small>


== Installation ==
=== Requirements ===
Flashrom requires the '''pciutils''' and '''zlib''' development packages in order to be built.
In Debian unstable the respective packages are called '''pciutils-dev''' and '''zlib1g-dev'''.
=== Manual Installation ===
$ svn co svn://linuxbios.org/repos/trunk/util/flashrom
$ make
$ sudo make install
Or (as root):
# make install


=== Debian ===
</td></tr></table>


$ sudo apt-get install flashrom
__NOTOC__
__NOEDITSECTION__

Revision as of 08:34, 13 January 2022

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 libera.chat, 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 | GSoC

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 | Contact | Donations
News