在 Star Labs StarBook 上復原 BIOS 韌體
如同我在最新季度更新中所描述的,一次再平常不過的韌體更新,竟把我的Star Labs StarBook Mk VI (AMD)變成了一塊昂貴的鎮紙。我只是照著Star Labs的官方文件複製貼上了curl ... | bash一行指令,腳本執行了約半分鐘後將裝置關機,從此StarBook就再也無法開機。螢幕全黑、鍵盤背光亮著、電源指示燈也亮著,喇叭還不時發出喀嗒聲。可惜的是,無論是慣用的關掉再重開老招式,還是拔除電池,都無法讓它起死回生。
要擺脫這種狀況,唯一的辦法就是使用 SPI 燒錄器對 BIOS 晶片進行外部重新刷寫。Star Labs確實有對此提供說明文件,然而他們的指南假設你會使用他們的燒錄套件搭配專用的除錯板和FPC排線。那套套件比通用的燒錄器貴上許多,沒有標示任何廠牌或型號資訊,而且在撰寫本文時,其網路商店已長期顯示缺貨。當你帶著一台已經變磚、且是身邊唯一一台電腦的筆電受困在外時,這實在稱不上有什麼幫助。
好消息是,至少就這款特定型號的StarBook而言,你不需要上述任何東西。如同Star Labs的Sean(尚恩)指出的——那是我為除錯這團混亂而開設的 GitHub 議題——這款特定的StarBook使用的是SOIC-8快閃記憶體晶片,這意味著只要注意其電壓,你就能用便宜的通用CH341A燒錄器和一般的 SPI 夾具來復原它。
警告:若操作不當,外部刷寫 BIOS 晶片可能會永久損壞你的裝置。AMD 版StarBook上的快閃記憶體晶片以1.8V運作,你必須使用 1.8V 轉接板。若以CH341A預設的 3.3V 驅動,不僅有損壞晶片的風險,也根本無法正確讀取。以下所有內容都是對我個人成功操作方式的記錄,已盡我所知詳實記載,但你要自行承擔所有風險。
1.8V
我這台StarBook Mk VI (AMD)上的快閃記憶體晶片,是在我拆下背蓋後直接從晶片本體上判讀到的,型號為Winbond 25R128JWSQ,是一顆採用SOIC-8封裝的 SPI NOR 快閃記憶體。JW後綴在Winbond零件中據說代表的就是 1.8V 版本。
你在AliExpress、Amazon以及幾乎任何地方都能找到的那種無所不在、只要三美元的黑色CH341A燒錄器,其 SPI 訊號線是以 3.3V 運作(而並列排針則是 5V)。如果直接把它夾到 1.8V 的晶片上,最好的情況是flashrom讀出一堆亂碼;最壞的情況,則是會燒毀快閃記憶體或其下游的元件。
解決方法是一塊小型的 1.8V 轉接板(本質上是一個帶有穩壓器的位準轉換器),接在CH341A與你的SOIC-8夾具之間。這類產品通常以套件形式販售,例如尚恩分享的KOOBOOK CH341A Programmer + 1.8V Adapter組合。請務必確認你購買的產品有明確標示支援 1.8V。
需要準備的東西
你會需要一個附有 1.8V SOIC-8 轉接板的CH341A燒錄器、一個SOIC-8測試夾(彈簧式的「Pomona 式」夾具,或是較便宜的排線式,兩種都可用)、一台執行 Linux 的第二台電腦(可以透過 Live 媒體,例如 USB 隨身碟來執行)來驅動燒錄器,例如在百貨公司借用一台筆電搭配Fedora Live USB就能搞定——前提是你口才夠好,能向店員解釋你絕對不是在組裝看起來很像炸彈的東西。你還會需要適用於你機型的正確韌體映像檔(詳見下文)、一支小型十字螺絲起子,以及最好再準備一支塑膠撬棒。
步驟 1:拆開 StarBook

開始前請先將所有電源關閉並拔除充電器。將筆電翻面,先鬆開頂部兩角的兩顆長十字螺絲,再卸下邊緣周圍的八顆較短螺絲,小心地將背蓋取下。
接著,卸下固定電池的五顆螺絲(其中一個螺絲孔位是刻意留空的),然後輕輕拔開電池排線接頭。
最後,在主機板上找到SOIC-8快閃記憶體晶片。就是上面提到的那顆有八隻接腳的Winbond小晶片。
注意:當我打開StarBook時,發現我那顆(才用了不到兩年)的電池已經明顯鼓脹,所以也請花點時間檢查你的電池。膨脹的鋰電池有起火風險,應該立即更換。
步驟 2:連接夾具

SOIC-8快閃記憶體晶片有定義明確的第 1 腳,而夾具的第 1 腳(通常是排線上紅色邊緣的那條線)必須與之對齊。若方向接反,晶片就完全不會被偵測到。
供參考,Winbond SOIC-8快閃記憶體的接腳定義如下:
| 接腳 | 名稱 | 功能 |
|---|---|---|
| 1 | /CS | 晶片選擇 |
| 2 | DO (IO1) | 資料輸出 / MISO |
| 3 | /WP (IO2) | 寫入保護 |
| 4 | GND | 接地 |
| 5 | DI (IO0) | 資料輸入 / MOSI |
| 6 | CLK | 時脈 |
| 7 | /HOLD (IO3) | 保持 |
| 8 | VCC | 電源 (1.8V) |
不過,你不需要手動逐條接線,因為夾具和 1.8V 轉接板已經幫你把八條線都接好了。你唯一需要做對的,就是將夾具的第 1 腳與晶片的第 1 腳對齊。

注意:在我的晶片上,封裝上有一個灰色的塗裝圓點,位於與第 1 腳相反的角落。第 1 腳反而是以一個小小的凹陷(蝕刻)圓點來標示,恰好在與塗裝點完全相反的那一側。我完全不知道那個灰點為何存在,但如果你以它為基準對齊,夾具就會裝反。如果你的晶片上也有類似的灰點,請認明凹陷點,而非灰點。
步驟 3:使用 flashrom 刷寫

夾好夾具後,將CH341A插入你的第二台電腦。快速查看dmesg應該就能確認它已被系統辨識:
usb 3-6: New USB device found, idVendor=1a86, idProduct=5512, bcdDevice= 3.04
usb 3-6: Product: USB UART-LPT
如果你還沒安裝flashrom,請先安裝:
# Debian/Ubuntu
sudo apt install flashrom
# Fedora
sudo dnf install flashrom
在寫入任何資料之前,請先確認flashrom能透過夾具與快閃記憶體正常通訊:
sudo flashrom -p ch341a_spi
如果一切都已正確接好,flashrom就會辨識出Winbond晶片(會顯示為類似W25Q128JW的名稱)。若反而看到:
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.
……請不要慌張。依我的經驗,這幾乎總是夾具接觸不良,而非真正的問題。我得反覆搖動、重新夾好幾次,晶片才終於穩定地被偵測到,因為那些便宜的夾具本來就很難搞。請務必等到連續幾次執行都能穩定偵測到晶片後,再繼續下一步。
即使韌體已經變磚,在覆寫任何資料之前先備份仍是良好的習慣。請讀取晶片兩次並比對備份檔,以確保接觸良好:
sudo flashrom -p ch341a_spi -r backup1.rom
sudo flashrom -p ch341a_spi -r backup2.rom
cmp backup1.rom backup2.rom && echo "OK: reads match"
如果兩次讀出的檔案不一致,表示夾具接觸不穩,你應該重新安裝夾具後再試一次。
至於韌體映像檔,Star Labs在一個公開的 GitHub 儲存庫中發布其韌體。若要進行外部燒錄,你需要的是完整的 SPI 映像檔,而非 EFI/fwupd更新檔。以我的StarBook Mk VI (AMD)(產品 SKU 為B6-A)為例,對應的就是roms/B6-A.bios這個映像檔。完整的映像檔也存放在該機型的ami-flashrom目錄下。請選擇與你機型相符的檔案,並將其重新命名為方便使用的名稱,例如starbook.rom。
注意:Star Labs的韌體版本命名,說得客氣一點,是一團混亂。截至本文撰寫時,AMD 版StarBook最後一個AMI(即原始「BIOS」)版本是25.12,而26.04開始則為Coreboot。無論你決定刷寫哪一個版本,請務必確認它是適用於你確切機型的完整映像檔。

最後,使用flashrom指令寫入你下載的映像檔:
sudo flashrom -p ch341a_spi -w starbook.rom
預設情況下,flashrom會先抹除、寫入,然後驗證晶片。Star Labs官方指令會額外加上-n -N(即--noverify與--noverify-all)來跳過這些驗證步驟,但我會建議保留驗證,讓flashrom確認寫入確實成功。無論如何,在燒錄過程中請勿拔除或碰觸燒錄器。順利完成後,取下夾具、重新接回電池、鎖回背蓋,然後嘗試開機。
步驟 4:復原後的首次開機
當我重新按下電源時,StarBook再次活了過來,只是停在一個抱怨找不到開機項目的畫面上,因為刷入全新的映像檔也會清除 EFI 開機變數。這沒什麼大不了的,你只需要讓韌體重新指向你的開機載入程式即可。你可以選擇使用開機選單並選擇你的 SSD,這通常會自動重新加入開機項目;或是啟動救援/Live 系統並執行grub-install(我是這麼做的);或者進入 EFI Shell 手動啟動開機載入程式:
fs0:
cd efi/fedora
grubx64.efi
注意:在較新的Coreboot版本中,Star Labs正在啟用Rom Armor與防止降版(anti-rollback)機制。在 AMD 主機板上,我在26.06版本仍可成功進行外部刷寫與降版,但在26.07之後的版本,預期將會被封鎖。
心得

在這整個折騰的過程中,最讓我感到沮喪的並不是韌體更新本身可能出錯——畢竟刷寫任何東西本來就有風險。而是Star Labs官方文件中的復原途徑,竟依賴一套根本買不到的專有套件,而一個通用的CH341A加上 1.8V 轉接板顯然就能勝任。然而,這項資訊在Star Labs的官方文件中卻完全找不到,這正是我決定寫下這篇文章的初衷。希望它能為下一個遇到同樣問題的人,省下我當初耗費的一整天時間(以及隨之而來的壓力)。
隨機一篇部落格