My MSI B85-G43 has plain .zip archives for BIOS updates. I had no problem extracting under Linux and flashing with a USB flash drive from the BIOS.
The BIOS dump has this specific format:
Originally Posted by dashcloud
- first 16 bytes are all 0xff
- next sequence is 5a a5 f0 0f
In 4-byte sequences this becomes:
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0x0ff0a55a
The Unix "file" utility: http://bugs.gw.com/view.php?id=117
But how to determine the end of the dump file?
...I guess I'll have to do some more digging for specs
Ok, I found the specs for Intel SPI flash: http://www.intel.com/content/dam/www...-datasheet.pdf
Flash descriptor documentation starts at page 256, section 5.24.2.
The descriptor block is always 4K and located in the first block - even if the block size is greater than 4K.
Confirmed: At offset 0x10 you will always find the signature 0x0ff0a55a
Now, how to determine the correct ending of the flash dump...
There are four regions in the flash chip: Descriptor (1 block, read-only), GbE (2 blocks), BIOS and Intel ME.
If you look at the specs, the Desciptor Map beginning at offset 0x14 contains a pointer to the Region section in the Descriptor.
The Region section contains information about the offset and size of the other three chip regions.
My guess is, if we want to design an automatic method of finding raw flash dumps, we first look for the Descriptor signature, then locate the Region section (which must within the same 4K block), and perhaps then we can determine the end of the dump from the offset and size of the last chip region.
If you're interested in this, I highly suggest stopping by the #flashrom channel on Freenode on IRC. Also, if you send an email to the mailing list, there's probably other people interested in or who have some prototypes for something like this.
Originally Posted by helgewl
Somewhat related is the work that's been done on ASUS motherboard flashing.
On Windows, there's some very crazy and dedicated folks who hack laptop BIOSes to add things or make them work beyond where they were intended to.
That's not just MSI's problem.
I went to update the BIOS on my Asus motherboard. I got the BIOS from the website, installed the flashing utility from the motherboard's installer disk, and went to flash the thing. Doing this in Linux wasn't exactly an option, so I used my dual-boot copy of Windows. The BIOS flashing utility said the BIOS image didn't go to my motherboard, so I told it to force the issue. Now I type this post with it :P
Most people don't bother updating BIOS because they don't usually stick next-gen hardware in their motherboard like I was dumb enough to do (Thuban on an AM2+ system with DDR2--cheaper upgrade path would have been "replace everything" and end up with a simply faster computer).
Finally got around to trying it yesterday... Doesn't work. The in-BIOS updater won't accept the file.
Originally Posted by dashcloud
It is not all that easy. Flashrom is great but you still need a supported actual flash chip as well as a supported Super-IO. Recently a lot of mainboards and notebooks are on the market carrying ridiculous chips that seem to be custom made or something for a single series of mainboards. That really sucks and leaves you with no options for flashrom save even coreboot.
Originally Posted by FishB8