Really great topic, saved my motherboard after a BIOS upgrade failure! (3.18 → 3.20)
I followed your steps (bought the same stuff for ~32€, used the same tricks with ceramic coasters - first time I used them in ten years
, same commands) and it worked!
Some notes:
- I also did four ROM reads and got one failure (the second read). The pogo was stable.
- Reading the ROM takes 4m40s.
- I extracted the 3.20 BIOS from the UEFI capsule by searching the first four bytes hexdump showed me from my extracted corrupted BIOS : 0810 5f00
-
I found the offset from start to be 1993293 bytes, like cesfahani said above with BIOS 3.07.
-
I also tried GitHub - vaginessa/InsydeH2O-extractor-2 · GitHub as mentioned above, and it gave same BIOS image.
-
Extraction command:
tail -c +1993293 Framework_Laptop_13_Ryzen7040_capsule_signed_allsku_3.20.cap | head -c 33554432 > framework-3.20-rom.bin
-
- Writing the ROM was a bit frightening : I had two fails, the third time it worked.
-
First time I used -w only (so with verification enabled by default). It took 12m51s and finished with verify error:

$ flashrom --programmer ch341a_spi -w framework-3.20-rom.bin --progress flashrom v1.6.0 on Linux 7.0.0-28-generic (x86_64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25Q256JW" (32768 kB, SPI) on ch341a_spi. Reading old flash chip contents... [READ: 100%]...done. Updating flash chip contents... Fixing total value of stage 2 progress on the fly. [... skipped some noisy output ...] [READ: 27%][ERASE: 100%][WRITE: 94%]...Erase/write done from 0 to 1ffffff Verifying flash... [READ: 100%]...FAILED at 0x002db827! Expected=0xf5, Found=0xeb, failed byte count from 0x00000000-0x01ffffff: 0xd96 Your flash chip is in an unknown state. -
Second time, I used -nNw to skip verification. It took 4m40s to write. Then I did a read to check myself, and the checksum was not matching again

-
Third time, I used -w with verification. It took 9m21s and terminated successfully:

$ flashrom --programmer ch341a_spi -w framework-3.20-rom.bin --progress flashrom v1.6.0 on Linux 7.0.0-28-generic (x86_64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25Q256JW" (32768 kB, SPI) on ch341a_spi. Reading old flash chip contents... [READ: 100%]...done. Updating flash chip contents... Fixing total value of stage 2 progress on the fly. [READ: 0%][ERASE: 100%][WRITE: 100%]...Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Fixing total value of stage 1 progress on the fly.Erase/write done from 0 to 1ffffff Verifying flash... [READ: 100%]...VERIFIED.I did a read and checksum again to be sure, and it matched!

-
- Then I unplugged the CH341A from USB, removed the pogo, put back the RAM and SSD on the mobo, connected the battery, the keyboard and closed the case. I powered on the laptop, and about one minute later, it was booting on the SSD


