Flashrom: Difference between revisions

From flashrom
Jump to navigation Jump to search
(→‎Supported devices: VIA CX700 is now supported.)
No edit summary
(333 intermediate revisions by 13 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.
<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: 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]!
<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"
|style="vertical-align:top"|
| AMD
 
| AM-29F040B
{|
| style="background:lime" | OK
|style="vertical-align:top"|
|- bgcolor="#dddddd" valign="top"
X
| AMD
|style="vertical-align:top"|
| AM-29F016D
'''<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>
| 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="#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-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;
| 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"|
|-
| width=50% style="vertical-align:top"|


'''Southbridges'''
{|
|style="vertical-align:top"|
X
|style="vertical-align: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>
|}


{| border="0" style="font-size: smaller"
|style="vertical-align:top"|
|- bgcolor="#6699dd"
! align="left" | Vendor
! align="left" | Southbridge
! align="left" | Status


|- bgcolor="#eeeeee" valign="top"
{|
| AMD
|style="vertical-align:top"|
| CS5530
X
| style="background:#eeeeee" | ?
|style="vertical-align:top"|
|- bgcolor="#eeeeee" valign="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>
| AMD
| Geode&trade;&nbsp;SC1100
| style="background:#eeeeee" | ?
|- bgcolor="#eeeeee" valign="top"
| AMD
| AMD-8111
| style="background:lime" | OK
|- bgcolor="#dddddd" valign="top"
| ATI
| SB400
| style="background:#dddddd" | ?
|- 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" | ?
|}
|}


|}
|}
</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 />
</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__

Revision as of 10:21, 2 July 2021

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

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


{{#widget:Ohloh Project|id=flashrom|type=basic_stats}}