前陣子 Framework Laptop 13 (AMD Ryzen™ 7040 Series) 出了 BIOS 3.19 beta,一如往常使用 fwupdmgr 做更新,重新開機沒多久,更新 BIOS 的進度就… 卡住了。
放置一個小時也沒動靜,按著電源鍵不放也無法 power off,拆機把電池拔掉、重新組回去之後再嘗試開機,只出現一個要求 “reset fTPM key” 的對話框、以及一閃而過的 “BIOS update failed” 錯誤畫面,最後筆電就變磚、再也開不了機了。
跟 Framework Support 討論了一個禮拜、嘗試了幾種重置主機板的方法後,由於筆電已經過保、客服表示只能付費回廠檢修,決定找方法自救。
診斷過程
跟原廠聯絡的過程中,客服提供了兩種重置主機板的方法,包括:
- 按壓主機板 SW3 開關 10 次:How to Reset the Mainboard in your Framework Laptop 13
- 將 RAM, SSD, 電池全部移除,按著主機板 SW1 (Onboard power button) 壓住 1 分鐘後,放置 15 分鐘讓主機板放電。
可惜沒有幫助。另外也配合客服的要求,紀錄側邊兩個擴充卡之間的 LED 閃爍過程、讀取 POST code 判斷故障原因。判讀方法可見 My Framework Laptop (Intel 12th Gen Intel® Core™) is not powering on 的 “If your power button lights up, but you don’t see the screen come on, and the side LEDs are blinking” 一節。
我的情況是兩種 POST code 交替出現:
- WGGGGGGGGGGGGOGBGBBGGG (0b00011010, 0x1A, Memory management issue)
- WGGGGGGGGGGGGOBGBGGGBB (0b11000101, 0xC5, RAM error)
將兩片 DDR5 個別單獨安裝、交換測試後依然無解,猜測有可能是 BIOS 的 SPI flash 出問題。
註:更新 BIOS 的過程中也可能會一併更新 EC firmware (BIOS Release Note 會註明),若是壞在 EC firmware 則需要找其他辦法刷別的晶片。若在開機經過大約 60 秒時、筆電側邊的 LED 有開始打 POST code,表示 EC firmware 可能是正常的。
當原廠客服得出需要付費送修的結論後,決定來找找是否有方法可以自己修。
準備工具與電路接線
Framework Community 有不少 BIOS 刷壞的討論,我主要參考這兩篇很棒的分享文:
- Success in recovering from bad BIOS upgrade – Framework 13 AMD 7040 by cesfahani
- How to flash bios chips with Raspberry Pi by Tom van Veen
在拆掉 Touchpad Keyboard 後,找到位於主機板正面中間附近的 BIOS 晶片,型號是 Winbond W25R256JWEQ,是個 WSON 8×6-mm 封裝、可以用 SPI 介接的 1.8V 晶片。
從 Winbond 官網找到 W25R256JW 的手冊 查出 Pad 腳位。
準備工具如下:
- 一台 Raspberry Pi:樹莓派的 GPIO 可以兼做 SPI 使用。(註:若沒有樹莓派,電子材料行可能買得到便宜的 CH341A 燒錄器,也可以替代使用。)
- 1.8V 燒錄轉換座 (或稱 1.8V Adapter、level shifter、電平轉換、電位轉換):RPi 樹莓派只能供應 5V 或 3.3V 電源,需要降壓電路轉換。(如下圖右側)
- WSON8 排距 8.5mm 探針 (keyword: Probe line、Pogo pin、彈簧探針、燒錄測試探針) (如下圖左側)
接線方式 (參考 flashrom on Raspberry Pi: Connecting the flash chip):
- Pad 1 (/CS) 對應到 RPi Pin 24 (GPIO 8, SPI0 CE0)
- Pad 2 (DO) 對應到 RPi Pin 21 (GPIO 9, SPI0 MISO)
- Pad 3 (/WP) 對應到 RPi Pin 17 (3.3V)
- Pad 4 (GND) 對應到 RPi Pin 25 (GND)
- Pad 5 (DI) 對應到 RPi Pin 19 (GPIO 10, SPI0 MOSI)
- Pad 6 (CLK) 對應到 RPi Pin 23 (GPIO 11, SPI0 SCLK)
- Pad 7 (/HOLD or /RESET) 對應到 RPi Pin 17 (3.3V)
- Pad 8 (VCC) 對應到 RPi Pin 17 (3.3V)
注意:晶片跟 Raspberry Pi 之間不可直接相連、電壓不同會燒壞晶片,以上所有線路都須經過 1.8V 轉換座,部份的腳位如 VCC 也可參考 cesfahani 的作法改接外部電源供應的 1.8V。
接線的樣子會像這樣:
探針需要一點力道壓在晶片焊點上,施力不夠會接觸不良、讓 flashrom 讀寫結果不完整。(中途鬆脫不會報錯)
準備軟體環境
使用 raspi-config 啟用 Raspberry Pi 的 SPI 介面 (/dev/spidev0.0)。
選擇 Interface Options。

選擇 SPI。

選 <Yes>。

確認已啟用 SPI 介面。

接好線路、安裝 flashrom 燒錄軟體,若使用 Ubuntu/Debian-based OS 可從 apt 安裝。
須注意 flashrom 版本不能太舊,有可能會出現以下無法辨識晶片的錯誤:
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=256 flashrom v1.2 on Linux 6.1.21-v8+ (aarch64) flashrom is free software, get the source code at https://flashrom.org Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns). Found Winbond flash chip "unknown Winbond (ex Nexcom) SPI chip" (0 kB, SPI) on linux_spi. === This flash part has status NOT WORKING for operations: PROBE READ ERASE WRITE The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to [email protected] if any of the above operations work correctly for you with this flash chip. Please include the flashrom log file for all operations you tested (see the man page for details), and mention which mainboard or programmer you tested in the subject line. Thanks for your help! No operations were specified.
也可以從 Github 抓最新版從原始碼編譯,步驟大略如下:
git clone https://github.com/flashrom/flashrom cd flashrom meson setup builddir meson compile -C builddir meson test -C builddir sudo meson install -C builddir
註:在 meson setup builddir 後須確認啟用的 Programmer 至少有支援 linux_spi。若是使用 CH341a 燒錄器則是需要有 ch341a_spi 並補足 libusb-dev 等等的相依套件。
若是使用 flashrom 目前開發中版本,確認晶片狀態時會出現偵測到兩種型號 “W25Q256JW” 與 “W25R256JW”:
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=256 --wp-status flashrom v1.8.0-devel (git:v1.7.0-49-g6a9fd1dc7) on Linux 6.1.21-v8+ (aarch64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25Q256JW" (32768 kB, SPI) on linux_spi. Found Winbond flash chip "W25R256JW" (32768 kB, SPI) on linux_spi. Multiple flash chip definitions match the detected chip(s): "W25Q256JW", "W25R256JW" Please specify which chip definition to use with the -c <chipname> option.
後續下指令都需要多帶 -c W25R256JW 參數指定晶片型號。
時脈參數 spispeed 單位是 kHz,可從 256 開始慢慢試、調到 512 或更高。
重新確認晶片的寫入狀態,寫入保護顯示停用:
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=256 -c W25R256JW --wp-status flashrom v1.8.0-devel (git:v1.7.0-49-g6a9fd1dc7) on Linux 6.1.21-v8+ (aarch64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25R256JW" (32768 kB, SPI) on linux_spi. === This flash part has status UNTESTED for operations: WP The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to [email protected] if any of the above operations work correctly for you with this flash chip. Please include the flashrom log file for all operations you tested (see the man page for details), and mention which mainboard or programmer you tested in the subject line. You can also try to follow the instructions here: https://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html Thanks for your help! Protection range: start=0x00000000 length=0x00000000 (none) Protection mode: disabled
連接正常,終於可以開始對 BIOS 晶片操作。
先備份可能已經壞掉的 BIOS image:
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -c W25R256JW -r dump_bad_bios_319.bin --progress flashrom v1.8.0-devel (git:v1.7.0-49-g6a9fd1dc7) on Linux 6.1.21-v8+ (aarch64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25R256JW" (32768 kB, SPI) on linux_spi. === This flash part has status UNTESTED for operations: WP The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to [email protected] if any of the above operations work correctly for you with this flash chip. Please include the flashrom log file for all operations you tested (see the man page for details), and mention which mainboard or programmer you tested in the subject line. You can also try to follow the instructions here: https://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html Thanks for your help! Reading flash... [READ: 100%]...done.
準備 BIOS 升級前的版本映像檔,如 3.18 可從 Framework Laptop 13 BIOS and Driver Releases (AMD Ryzen™ 7040 Series) 找到 Update to BIOS 3.18 (EFI Shell update) 的下載連結。
解開壓縮檔、取得 Framework_Laptop_13_Ryzen7040_capsule_signed_allsku_3.18.cap,使用 InsydeH2O-extractor-2 解出 BIOS image 本體 BIOSFILE.FD
$ unzip Framework_Laptop_13_Ryzen7040_BIOS_3.18_EFI.zip inflating: CapsuleApp.efi inflating: efi/boot/BootX64.efi inflating: efi/boot/Startup.nsh inflating: Framework_Laptop_13_Ryzen7040_capsule_signed_allsku_3.18.cap inflating: winux.bin $ ./extract Framework_Laptop_13_Ryzen7040_capsule_signed_allsku_3.18.cap
紀錄一下 md5sum。
$ md5sum BIOSFILE.FD f7be6e31c40cbbd4af9bbade74a65c6f BIOSFILE.FD
開始把原本的 BIOS 版本燒錄進去。途中遇到 flashrom 的 progress counter 爛掉,暫不處理,靜待整個流程跑完。
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -c W25R256JW -w BIOSFILE.FD --progress flashrom v1.8.0-devel (git:v1.7.0-49-g6a9fd1dc7) on Linux 6.1.21-v8+ (aarch64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25R256JW" (32768 kB, SPI) on linux_spi. === This flash part has status UNTESTED for operations: WP The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to [email protected] if any of the above operations work correctly for you with this flash chip. Please include the flashrom log file for all operations you tested (see the man page for details), and mention which mainboard or programmer you tested in the subject line. You can also try to follow the instructions here: https://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html Thanks for your help! Reading old flash chip contents... [READ: 100%]...done. Updating flash chip contents... Current progress value 4096 exceeds total value 0 for stage [2]. Increasing total to 4096. [READ: 0%][ERASE: 100%]... Current progress value 8192 exceeds total value 4096 for stage [2]. Increasing total to 8192. Current progress value 12288 exceeds total value 8192 for stage [2]. Increasing total to 12288. Current progress value 16384 exceeds total value 12288 for stage [2]. Increasing total to 16384. Current progress value 20480 exceeds total value 16384 for stage [2]. Increasing total to 20480. Current progress value 24576 exceeds total value 20480 for stage [2]. Increasing total to 24576. Current progress value 28672 exceeds total value 24576 for stage [2]. Increasing total to 28672. Current progress value 32768 exceeds total value 28672 for stage [2]. Increasing total to 32768. Current progress value 36864 exceeds total value 32768 for stage [2]. Increasing total to 36864. Current progress value 40960 exceeds total value 36864 for stage [2]. Increasing total to 40960. Current progress value 45056 exceeds total value 40960 for stage [2]. Increasing total to 45056. Current progress value 49152 exceeds total value 45056 for stage [2]. Increasing total to 49152. Current progress value 53248 exceeds total value 49152 for stage [2]. Increasing total to 53248. Current progress value 57344 exceeds total value 53248 for stage [2]. Increasing total to 57344. Current progress value 61440 exceeds total value 57344 for stage [2]. Increasing total to 61440. Current progress value 65536 exceeds total value 61440 for stage [2]. Increasing total to 65536. Current progress value 69632 exceeds total value 65536 for stage [2]. Increasing total to 69632. Current progress value 73728 exceeds total value 69632 for stage [2]. Increasing total to 73728. Current progress value 77824 exceeds total value 73728 for stage [2]. Increasing total to 77824. Current progress value 81920 exceeds total value 77824 for stage [2]. Increasing total to 81920. Current progress value 86016 exceeds total value 81920 for stage [2]. Increasing total to 86016. Current progress value 90112 exceeds total value 86016 for stage [2]. Increasing total to 90112. Current progress value 94208 exceeds total value 90112 for stage [2]. Increasing total to 94208. Current progress value 98304 exceeds total value 94208 for stage [2]. Increasing total to 98304. Current progress value 102400 exceeds total value 98304 for stage [2]. Increasing total to 102400. Current progress value 106496 exceeds total value 102400 for stage [2]. Increasing total to 106496. Current progress value 110592 exceeds total value 106496 for stage [2]. Increasing total to 110592. Current progress value 114688 exceeds total value 110592 for stage [2]. Increasing total to 114688. Current progress value 118784 exceeds total value 114688 for stage [2]. Increasing total to 118784. Current progress value 122880 exceeds total value 118784 for stage [2]. Increasing total to 122880. Current progress value 126976 exceeds total value 122880 for stage [2]. Increasing total to 126976. Current progress value 131072 exceeds total value 126976 for stage [2]. Increasing total to 131072. Current progress value 135168 exceeds total value 131072 for stage [2]. Increasing total to 135168. Current progress value 139264 exceeds total value 135168 for stage [2]. Increasing total to 139264. Current progress value 143360 exceeds total value 139264 for stage [2]. Increasing total to 143360. Current progress value 147456 exceeds total value 143360 for stage [2]. Increasing total to 147456. Current progress value 151552 exceeds total value 147456 for stage [2]. Increasing total to 151552. Current progress value 155648 exceeds total value 151552 for stage [2]. Increasing total to 155648. Current progress value 159744 exceeds total value 155648 for stage [2]. Increasing total to 159744. Current progress value 163840 exceeds total value 159744 for stage [2]. Increasing total to 163840. Current progress value 167936 exceeds total value 163840 for stage [2]. Increasing total to 167936. Current progress value 172032 exceeds total value 167936 for stage [2]. Increasing total to 172032. Current progress value 176128 exceeds total value 172032 for stage [2]. Increasing total to 176128. Current progress value 180224 exceeds total value 176128 for stage [2]. Increasing total to 180224. Current progress value 184320 exceeds total value 180224 for stage [2]. Increasing total to 184320. Current progress value 188416 exceeds total value 184320 for stage [2]. Increasing total to 188416. Current progress value 192512 exceeds total value 188416 for stage [2]. Increasing total to 192512. Current progress value 196608 exceeds total value 192512 for stage [2]. Increasing total to 196608. Current progress value 200704 exceeds total value 196608 for stage [2]. Increasing total to 200704. Current progress value 204800 exceeds total value 200704 for stage [2]. Increasing total to 204800. Current progress value 208896 exceeds total value 204800 for stage [2]. Increasing total to 208896. Current progress value 212992 exceeds total value 208896 for stage [2]. Increasing total to 212992. Current progress value 217088 exceeds total value 212992 for stage [2]. Increasing total to 217088. Current progress value 221184 exceeds total value 217088 for stage [2]. Increasing total to 221184. Current progress value 225280 exceeds total value 221184 for stage [2]. Increasing total to 225280. Current progress value 229376 exceeds total value 225280 for stage [2]. Increasing total to 229376. Current progress value 233472 exceeds total value 229376 for stage [2]. Increasing total to 233472. Current progress value 237568 exceeds total value 233472 for stage [2]. Increasing total to 237568. Current progress value 241664 exceeds total value 237568 for stage [2]. Increasing total to 241664. Current progress value 245760 exceeds total value 241664 for stage [2]. Increasing total to 245760. Current progress value 249856 exceeds total value 245760 for stage [2]. Increasing total to 249856. Current progress value 253952 exceeds total value 249856 for stage [2]. Increasing total to 253952. Current progress value 258048 exceeds total value 253952 for stage [2]. Increasing total to 258048. Current progress value 262144 exceeds total value 258048 for stage [2]. Increasing total to 262144. Current progress value 266240 exceeds total value 262144 for stage [2]. Increasing total to 266240. Current progress value 270336 exceeds total value 266240 for stage [2]. Increasing total to 270336. Current progress value 274432 exceeds total value 270336 for stage [2]. Increasing total to 274432. Current progress value 278528 exceeds total value 274432 for stage [2]. Increasing total to 278528. Current progress value 282624 exceeds total value 278528 for stage [2]. Increasing total to 282624. Current progress value 286720 exceeds total value 282624 for stage [2]. Increasing total to 286720. Current progress value 290816 exceeds total value 286720 for stage [2]. Increasing total to 290816. Current progress value 294912 exceeds total value 290816 for stage [2]. Increasing total to 294912. Current progress value 299008 exceeds total value 294912 for stage [2]. Increasing total to 299008. Current progress value 303104 exceeds total value 299008 for stage [2]. Increasing total to 303104. Current progress value 307200 exceeds total value 303104 for stage [2]. Increasing total to 307200. Current progress value 311296 exceeds total value 307200 for stage [2]. Increasing total to 311296. Current progress value 315392 exceeds total value 311296 for stage [2]. Increasing total to 315392. Current progress value 319488 exceeds total value 315392 for stage [2]. Increasing total to 319488. Current progress value 323584 exceeds total value 319488 for stage [2]. Increasing total to 323584. Current progress value 327680 exceeds total value 323584 for stage [2]. Increasing total to 327680. Current progress value 331776 exceeds total value 327680 for stage [2]. Increasing total to 331776. [READ: 1%][ERASE: 100%]... Current progress value 335872 exceeds total value 331776 for stage [2]. Increasing total to 335872. Current progress value 339968 exceeds total value 335872 for stage [2]. Increasing total to 339968. Current progress value 344064 exceeds total value 339968 for stage [2]. Increasing total to 344064. Current progress value 348160 exceeds total value 344064 for stage [2]. Increasing total to 348160. Current progress value 352256 exceeds total value 348160 for stage [2]. Increasing total to 352256. Current progress value 356352 exceeds total value 352256 for stage [2]. Increasing total to 356352. Current progress value 360448 exceeds total value 356352 for stage [2]. Increasing total to 360448. Current progress value 364544 exceeds total value 360448 for stage [2]. Increasing total to 364544. Current progress value 368640 exceeds total value 364544 for stage [2]. Increasing total to 368640. Current progress value 372736 exceeds total value 368640 for stage [2]. Increasing total to 372736. Current progress value 376832 exceeds total value 372736 for stage [2]. Increasing total to 376832. Current progress value 380928 exceeds total value 376832 for stage [2]. Increasing total to 380928. Current progress value 385024 exceeds total value 380928 for stage [2]. Increasing total to 385024. Current progress value 389120 exceeds total value 385024 for stage [2]. Increasing total to 389120. Current progress value 393216 exceeds total value 389120 for stage [2]. Increasing total to 393216. Current progress value 397312 exceeds total value 393216 for stage [2]. Increasing total to 397312. Current progress value 401408 exceeds total value 397312 for stage [2]. Increasing total to 401408. Current progress value 405504 exceeds total value 401408 for stage [2]. Increasing total to 405504. Current progress value 409600 exceeds total value 405504 for stage [2]. Increasing total to 409600. Current progress value 413696 exceeds total value 409600 for stage [2]. Increasing total to 413696. Current progress value 417792 exceeds total value 413696 for stage [2]. Increasing total to 417792. Current progress value 421888 exceeds total value 417792 for stage [2]. Increasing total to 421888. Current progress value 425984 exceeds total value 421888 for stage [2]. Increasing total to 425984. Current progress value 430080 exceeds total value 425984 for stage [2]. Increasing total to 430080. Current progress value 434176 exceeds total value 430080 for stage [2]. Increasing total to 434176. Current progress value 438272 exceeds total value 434176 for stage [2]. Increasing total to 438272. Current progress value 442368 exceeds total value 438272 for stage [2]. Increasing total to 442368. Current progress value 446464 exceeds total value 442368 for stage [2]. Increasing total to 446464. Current progress value 450560 exceeds total value 446464 for stage [2]. Increasing total to 450560. Current progress value 454656 exceeds total value 450560 for stage [2]. Increasing total to 454656. Current progress value 458752 exceeds total value 454656 for stage [2]. Increasing total to 458752. Current progress value 462848 exceeds total value 458752 for stage [2]. Increasing total to 462848. Current progress value 466944 exceeds total value 462848 for stage [2]. Increasing total to 466944. Current progress value 471040 exceeds total value 466944 for stage [2]. Increasing total to 471040. Current progress value 475136 exceeds total value 471040 for stage [2]. Increasing total to 475136. Current progress value 479232 exceeds total value 475136 for stage [2]. Increasing total to 479232. Current progress value 483328 exceeds total value 479232 for stage [2]. Increasing total to 483328. Current progress value 487424 exceeds total value 483328 for stage [2]. Increasing total to 487424. Current progress value 520192 exceeds total value 487424 for stage [2]. Increasing total to 520192. Current progress value 552960 exceeds total value 520192 for stage [2]. Increasing total to 552960. Current progress value 585728 exceeds total value 552960 for stage [2]. Increasing total to 585728. Current progress value 618496 exceeds total value 585728 for stage [2]. Increasing total to 618496. Current progress value 651264 exceeds total value 618496 for stage [2]. Increasing total to 651264. [READ: 2%][ERASE: 100%]... Current progress value 684032 exceeds total value 651264 for stage [2]. Increasing total to 684032. Current progress value 716800 exceeds total value 684032 for stage [2]. Increasing total to 716800. Current progress value 749568 exceeds total value 716800 for stage [2]. Increasing total to 749568. Current progress value 782336 exceeds total value 749568 for stage [2]. Increasing total to 782336. Current progress value 815104 exceeds total value 782336 for stage [2]. Increasing total to 815104. Current progress value 847872 exceeds total value 815104 for stage [2]. Increasing total to 847872. Current progress value 913408 exceeds total value 847872 for stage [2]. Increasing total to 913408. Current progress value 978944 exceeds total value 913408 for stage [2]. Increasing total to 978944. [READ: 3%][ERASE: 100%]... Current progress value 1044480 exceeds total value 978944 for stage [2]. Increasing total to 1044480. Current progress value 1110016 exceeds total value 1044480 for stage [2]. Increasing total to 1110016. Current progress value 1175552 exceeds total value 1110016 for stage [2]. Increasing total to 1175552. Current progress value 1241088 exceeds total value 1175552 for stage [2]. Increasing total to 1241088. Current progress value 1306624 exceeds total value 1241088 for stage [2]. Increasing total to 1306624. [READ: 4%][ERASE: 100%]... Current progress value 1372160 exceeds total value 1306624 for stage [2]. Increasing total to 1372160. Current progress value 1437696 exceeds total value 1372160 for stage [2]. Increasing total to 1437696. Current progress value 1503232 exceeds total value 1437696 for stage [2]. Increasing total to 1503232. Current progress value 1568768 exceeds total value 1503232 for stage [2]. Increasing total to 1568768. Current progress value 1634304 exceeds total value 1568768 for stage [2]. Increasing total to 1634304. [READ: 5%][ERASE: 100%]... Current progress value 1699840 exceeds total value 1634304 for stage [2]. Increasing total to 1699840. Current progress value 1765376 exceeds total value 1699840 for stage [2]. Increasing total to 1765376. Current progress value 1830912 exceeds total value 1765376 for stage [2]. Increasing total to 1830912. Current progress value 1896448 exceeds total value 1830912 for stage [2]. Increasing total to 1896448. Current progress value 1961984 exceeds total value 1896448 for stage [2]. Increasing total to 1961984. [READ: 6%][ERASE: 100%]... Current progress value 2027520 exceeds total value 1961984 for stage [2]. Increasing total to 2027520. Current progress value 2093056 exceeds total value 2027520 for stage [2]. Increasing total to 2093056. Current progress value 2158592 exceeds total value 2093056 for stage [2]. Increasing total to 2158592. Current progress value 2224128 exceeds total value 2158592 for stage [2]. Increasing total to 2224128. Current progress value 2289664 exceeds total value 2224128 for stage [2]. Increasing total to 2289664. [READ: 7%][ERASE: 100%]... Current progress value 2355200 exceeds total value 2289664 for stage [2]. Increasing total to 2355200. Current progress value 2420736 exceeds total value 2355200 for stage [2]. Increasing total to 2420736. Current progress value 2486272 exceeds total value 2420736 for stage [2]. Increasing total to 2486272. Current progress value 2551808 exceeds total value 2486272 for stage [2]. Increasing total to 2551808. Current progress value 2617344 exceeds total value 2551808 for stage [2]. Increasing total to 2617344. Current progress value 2682880 exceeds total value 2617344 for stage [2]. Increasing total to 2682880. [READ: 8%][ERASE: 100%]... Current progress value 2748416 exceeds total value 2682880 for stage [2]. Increasing total to 2748416. Current progress value 2813952 exceeds total value 2748416 for stage [2]. Increasing total to 2813952. Current progress value 2879488 exceeds total value 2813952 for stage [2]. Increasing total to 2879488. Current progress value 2945024 exceeds total value 2879488 for stage [2]. Increasing total to 2945024. Current progress value 3010560 exceeds total value 2945024 for stage [2]. Increasing total to 3010560. [READ: 9%][ERASE: 100%]... Current progress value 3076096 exceeds total value 3010560 for stage [2]. Increasing total to 3076096. Current progress value 3141632 exceeds total value 3076096 for stage [2]. Increasing total to 3141632. Current progress value 3207168 exceeds total value 3141632 for stage [2]. Increasing total to 3207168. Current progress value 3272704 exceeds total value 3207168 for stage [2]. Increasing total to 3272704. Current progress value 3338240 exceeds total value 3272704 for stage [2]. Increasing total to 3338240. [READ: 10%][ERASE: 100%]... Current progress value 3403776 exceeds total value 3338240 for stage [2]. Increasing total to 3403776. Current progress value 3469312 exceeds total value 3403776 for stage [2]. Increasing total to 3469312. Current progress value 3534848 exceeds total value 3469312 for stage [2]. Increasing total to 3534848. Current progress value 3600384 exceeds total value 3534848 for stage [2]. Increasing total to 3600384. [READ: 10%][ERASE: 100%][WRITE: 86%]...Erase/write done from 0 to 1ffffff Verifying flash... [READ: 100%]...VERIFIED.
再備份一次現在的 BIOS image,以便比對:
# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -c W25R256JW -r dump_reflashed_318.bin --progress flashrom v1.8.0-devel (git:v1.7.0-49-g6a9fd1dc7) on Linux 6.1.21-v8+ (aarch64) flashrom is free software, get the source code at https://flashrom.org Found Winbond flash chip "W25R256JW" (32768 kB, SPI) on linux_spi. === This flash part has status UNTESTED for operations: WP The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to [email protected] if any of the above operations work correctly for you with this flash chip. Please include the flashrom log file for all operations you tested (see the man page for details), and mention which mainboard or programmer you tested in the subject line. You can also try to follow the instructions here: https://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html Thanks for your help! Reading flash... [READ: 100%]...done.
比對剛燒錄進晶片的 image、與之前下載的 image,兩者 md5sum 是否相同:
$ md5sum dump_reflashed_318.bin BIOSFILE.FD f7be6e31c40cbbd4af9bbade74a65c6f dump_reflashed_318.bin f7be6e31c40cbbd4af9bbade74a65c6f BIOSFILE.FD
確認兩者相符,燒錄完成。移除接線,將筆電組裝回原狀。
嘗試開機。
當看到 Framework 跟 Ubuntu logo 的瞬間,我跟那位同樣救回筆電的苦主一樣 breathed a huge sigh of relief 呼… 如釋重負。
問題
重新開機、進入 BIOS 的設定畫面會發現,不但以前所有的設定被洗掉,包括系統的各種序號也沒了:

從 framework_tool 也查不到各種硬體的序號:
# framework_tool --info Summary Is Framework: true Platform: Framework13Amd7080 BIOS Information Vendor: INSYDE Corp. Version: 03.18 Release Date: 01/08/2026 System Information Version: '* ' Manufacturer: Framework Product Name: Laptop 13 (AMD Ryzen 7040Series) Wake-Up-Type: Power_Switch SKU Number: * Serial Number:* Family: Laptop BaseBoard Information Version: '* ' Manufacturer: Framework Product: FRANMDCP00 Serial Number:* System Chassis Information Type: Notebook
看樣子 BIOS 晶片不只有存 BIOS 自己的 config,還有各種出廠設定的 metadata。用 hex viewer 把刷壞的映像檔開來看,也能看到各種序號、以及無法跟 3.18 & 3.19 beta BIOS images 匹配的片段。
不想再經歷這種慘劇,下次 BIOS 出新版我就要慎重考慮了,尤其是對已經過保的筆電來說。:'(





發佈留言