In short: Identify the flash chip and its voltage (3.3 V or 1.8 V), remove all power from the board, read the chip twice and confirm both reads are identical, save that backup, then write the new image and verify it. Use a 1.8 V adapter for low-voltage chips, and copy the serial number and licence data from your backup into the new image before writing.
Writing firmware can leave a board unbootable. Nothing here replaces a verified backup of your own chip — make it before anything else.
What you need
- A CH341A programmer (or RT809F/H, TL866II / T48, or any flashrom-supported device).
- A SOIC8 test clip for in-circuit work, or a soldering station to lift the chip.
- A 1.8 V adapter if the chip is a low-voltage type.
- Software: NeoProgrammer or AsProgrammer on Windows, or flashrom on any system.
1. Identify the chip
The BIOS chip is an 8-pin part (SOP8, or leadless WSON8) usually marked with a 25-series name. Read the full marking and look up the datasheet.
| Marking examples | Capacity | Voltage |
|---|---|---|
| W25Q64FV / JV, GD25Q64, MX25L6473 | 8 MB | 3.3 V |
| W25Q128FV / JV, GD25Q128, MX25L12873 | 16 MB | 3.3 V |
| W25Q64FW / JW, GD25LQ64, MX25U6435 | 8 MB | 1.8 V |
| W25Q128FW / JW, GD25LQ128, MX25U12835 | 16 MB | 1.8 V |
| W25Q256JW, MX25U25645 | 32 MB | 1.8 V |
The letters matter: Winbond …W, GigaDevice LQ / LB and Macronix U parts are 1.8 V. Feeding them 3.3 V can destroy the chip.
Many boards have a second, smaller chip (often 1–2 MB) that holds the embedded-controller firmware. Know which one you are connected to.
2. Remove every power source
Unplug the charger, disconnect the main battery and the RTC coin cell. With a clip on a powered or back-fed board, reads are unreliable and the programmer may try to power half the motherboard.
3. Connect
Align pin 1 of the clip (red wire) with the dot on the chip. If the software cannot detect the chip, or two reads differ, in-circuit programming is not working on this board — desolder the chip and use a socket or adapter instead. That is common, not a sign of a dead chip.
A note on common black CH341A boards: many drive the data lines at 5 V even though the supply pin is 3.3 V. It usually works, but it is outside the chip’s rating; a modified programmer or a different tool is safer for regular use.
4. Read twice and compare
With flashrom:
flashrom -p ch341a_spi -r backup1.bin
flashrom -p ch341a_spi -r backup2.bin
Compare the two files (checksums, or a hex editor’s compare function). If they are identical and the size matches the chip (8 MB chip → exactly 8,388,608 bytes), you have a good backup. Keep it somewhere safe; it contains this machine’s serial number, UUID, MAC address and Windows key.
A file full of FF or 00 means no contact, not an empty chip.
5. Prepare the new image
- The image must be for the same board number and revision, and the same size as the chip.
- A vendor update file (
.rom,.fd,.cap, or an.exe) is not always a full image. Check its size and structure in UEFITool before writing. - On Intel boards, prefer an image with a clean Management Engine region — see what a clean ME region is.
- Transfer the machine-specific data (DMI) from your backup, otherwise the board will report a foreign or empty serial number.
6. Write and verify
flashrom -p ch341a_spi -w new.bin
flashrom erases, writes and verifies in one step. In NeoProgrammer / AsProgrammer use Erase → Write → Verify, or the automatic sequence. Do not skip the verification.
7. First start
Reconnect the RTC battery, then the charger — leave the main battery out for the first boot. The first start after a firmware change can take a minute or more with a black screen while memory is retrained and the ME initialises. Let it finish before judging the result.
If it still does not start
- Re-read the chip and compare with the file you wrote.
- Write your original backup back to confirm the programmer and chip are healthy.
- Check that the fault is really firmware: a board with a missing rail will not be fixed by a BIOS, however clean. See how to read a laptop schematic.
BIOS and EC dumps indexed by board number are listed under BIOS & firmware.