DebAWeek: flashrom

I hesitate to select flashrom because it is a program that should be used with the utmost caution and because it doesn’t yet work as well as I would like. However, it shows great promise and offers functionality that is currently lacking in Linux. Quite simply it is an open source application that allows the user to flash their BIOS from Linux. Usually, to flash the BIOS of a machine I tend to use a boot cd to load a DOS environment from which I can run the BIOS update utility. With flashrom I can flash the system BIOS from Linux and reboot at my leisure.

So let’s take a real example which is my desktop computer. The motherboard is an ASUS M2NPV-VM running BIOS 0705. I first went to the LinuxBIOS Flashrom page to discover whether this motherboard was compatible with flashrom and found that it allegedly was. I then went do the ASUS website and found the most recent BIOS was 1201, which I promptly downloaded. I then installed flashrom:

  • sudo apt-get install flashrom

After that I tested to see if it would work on the motherboard:

  • sudo flashrom
Calibrating delay loop... ok
No LinuxBIOS table found.
Found chipset "NVidia MCP51": Enabling flash write... OK.
SST49LF040B found at physical address: 0xfff80000
Flash part is SST49LF040B (512 KB)
OK, only ENABLING flash write, but NOT FLASHING.

I then proceeded to save my existing BIOS:

  • flashrom -s bios0705.bin

Then I tried flashing using the old BIOS as a test. The reason for doing this is that if it fails, since you’re only writing the existing BIOS you shouldn’t ruin your motherboard. To be clear though, any use of flashrom could ruin your system so do not use it unless you know what you are doing and have a recovery plan.

  • flashrom -wvV bios0705.bin
    • -w = write flash, -v = verify flash, -V = verbose information
Calibrating delay loop... 286M loops per second. ok
No LinuxBIOS table found.
Found chipset "NVidia MCP51": Enabling flash write... OK.
Probing for Am29F040B, 512 KB
probe_29f040b: id1 0x21, id2 0x1f
Probing for Am29F016D, 2048 KB
probe_29f040b: id1 0xff, id2 0xff
Probing for AE49F2008, 256 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for At29C040A, 512 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for At29C020, 256 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for Mx29f002, 256 KB
probe_29f002: id1 0xbf, id2 0x50
Probing for SST29EE020A, 256 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for SST28SF040A, 512 KB
probe_28sf040: id1 0x21, id2 0x1f
Probing for SST39SF010A, 128 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for SST39SF020A, 256 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for SST39SF040, 512 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for SST39VF020, 256 KB
probe_jedec: id1 0xbf, id2 0x50
Probing for SST49LF040B, 512 KB
probe_jedec: id1 0xbf, id2 0x50
SST49LF040B found at physical address: 0xfff80000
Flash part is SST49LF040B (512 KB)
Flash image seems to be a legacy BIOS. Disabling checks.
ERASE FAILED
Verifying flash address: 0x00000000 – FAILED

So unfortunately flashrom did not work for this motherboard, despite it being listed as compatible on the LinuxBIOS Flashrom page. I decided to update the flash using a boot cd and the update utility from the ASUS website. This worked fine and I was left disappointed that flashrom was not as developed as I had hoped. Still the project shows promise and with any luck someday Linux users will be able to flash their BIOS as easily as Windows users.

There’s not a lot of information about the use of flashrom but here are a few pages I found:

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Works for me

Sorry, but two things about your article strike me as rather odd:
- Your mainboard was not listed as supported (contrary to your claims)
- You didn't inquire for help with the flashrom developers (at least there's nothing in the public mailing list archives)

The devs are quite friendly and added support for my board after I mailed to their list. Just try it - they won't bite you.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons by-nc-sa 3.0 License