筆者曾說有時間有機會的話,會為各位介紹來自華碩員工 SHAMINO 所開發的 OCTOOL 軟體。當時沒想到會以今天的角度,來跟大家講解這款強大軟體的其中一項功能。今天要介紹的部份,是 OCTOOL 的 TOOL.EXE 程式 (又名 Work Tool) 內的 DDR5 SPD 功能。而本文的靈感,或更貼切來說是筆者本人的遭遇,就是手上一組 DDR5-7200 2x24 突然壞掉,再也無法開機了。經簡單驗證,原來是其中一支記憶體導致不開機,DEBUG CODE LED 卡 55,獨立使用另一根記憶體則沒有任何問題。至於為什麼其中一根記憶體會壞掉,這與超頻無關,只是筆者把記憶體借給朋友,而朋友的板子本來就有點問題,所以…就沒了。筆者是懷疑記憶體的 SPD 出現問題,也就是所謂的 SPD CORRUPTED,導致不開機。於是筆者決定自行刷一下 SPD,看看能否救回來。至於如何自行刷記憶體 SPD 晶片,使用華碩 ROG MAXIMUS Z790 主機板的人有福了,因為據說 OCTOOL 只支援 ROG 板子,剛好 OCTOOL 軟體支援讀取 / 查看 / 寫入 SPD,更支援 DDR5。
遇上不開機等故障,若在重新拔插記憶體以及 CLEAR CMOS 後仍沒有起色,筆者還是建議先找廠商 RMA。以下只是筆者研究的過程,風險極大,可能導致硬體損壞和失去官方保固,所以也不提供下載連結,有興趣的話請自行以相關關鍵字搜尋。
OCTOOL FLASH SPD 過程記錄
為什麼記憶體不開機卻懷疑是 SPD CORRUPTED,這是因為筆者想起一件事。DDR5 SPD CORRUPTED 的問題曾鬧得沸沸揚揚,SPD 所記載的參數突然錯亂,什麼 300GB / CL9 的截圖在網上不難找到。當時很多受害者歸咎於某一家板廠,可是據筆者探聽到的消息,其實不至那一家板廠有一定機率出現 SPD CORRUPTED 的情況。這問題甚至可追溯至 DDR4 時期,以前的說法是 RGB (軟體) 導致 SPD CORRUPTED。DDR5 時期, OEM 記憶體也有機率出現 DDR5 SPD 錯亂的情況,這種記憶體甚至沒有 XMP 等超頻設定和沒有任何燈珠! 本文只想提供一個方法嘗試拯救記憶體,所以就不便提到任何廠商的名字,反正筆者是沒能力找出 ROOT CAUSE,也不敢隨便指責任何一方,以免其他手指指向自己那就難看了。以下筆者利用 ROG MAXIMUS Z790 APEX ENCORE 主機板,來嘗試記錄重刷 DDR5 SPD 的過程。
首先,筆者建議只安裝正常的那一支 DDR5,插在 A 通道的插槽裡,故障的那一支先不要安裝,以順利開機進入 BIOS 和系統。要是手上兩支都壞掉,只能找別人幫忙把同型號的 SPD 抄出來,再借來一支正常的記憶體,讓你可以開機和進入系統以執行 OCTOOL。沒合適板子 / 找不到同型號記憶體,筆者也幫不了你。
找到 OCPAK 的下載點,下載 OCPAK 後解壓縮它。再解壓縮裡面的 OCTOOL,然後以系統管理員身份執行 TOOL.EXE。
以系統管理員身份執行 TOOL.EXE 後,再點 BOARD FUNCTIONS,然後選 DDR5 SPD。
打開 DDR5 SPD 後,有多個分頁例如 TOPOLOGY / TIMINGS / MFG / XMP 1 等等。此時還沒有顯示任何參數,因為使用者需要先手動從正常的記憶體上讀取其 SPD 檔案。在右邊,有多個我們接下來需要用到的功能,例如 SAVE CURRENT / READ FROM TARGET / WRITE TO TARGET 還有 TARGET SLOT。如果你按筆者建議只安裝一支正常的記憶體 (與故障的那一支同款),那麼在 TARGET SLOT 裡應該只會顯示一組,如下圖所示是 A0。點 A0 (預設) 後,再按 READ FROM TARGET,程式便會開始讀取在特定插槽 (已點選 A0) 的記憶體 SPD,下方的空格也會顯示操作過程例如 READAING, WAIT... 和 DONE READING。
成功讀取良好的 SPD 後,各分頁都會顯示 DDR5 的規格 / 參數。此時筆者建議先自行截圖所有分頁的資訊,因為這些參數都是從好的記憶體上讀取出來,代表"正確"的設定。
然後按 SAVE CURRENT 把 SPD 檔案備份,名字隨便取,例如 GOOD 就好。一般建議在之後的步驟也把故障的記憶體 SPD 也備份一下。
完成以上步驟後,我們已經得到"正確的"SPD 檔案,也得知一些主要參數。此刻進入 BIOS,把 SPD WRITE PROTECION 關掉,以及在 BIOS 把特定的記憶體插槽"停用"起來,使正常與故障的記憶體同時安裝後不再卡開機自檢,順利開機和進入系統。在 BIOS 裡停用記憶體通道,並不影響系統內的軟體讀取和寫入該通道的記憶體 SPD。由於要先進入 BIOS 停用記憶體通道,所以此時不要先安裝故障的記憶體否則不開機。在重新進入 BIOS 後,到 EXTREME TWEAKEKER -> DRAM TIMING CONTROL,然後把 CONTROLLER 1, CHANNEL 0 CONTROL 和 CONTROLLER 1, CHANNEL 1 CONTROL 這兩個選項從預設的 ENABLED 手動改為 DISABLED,來停用 M15A ENCORE 上的 DIMM_B (靠近 24PIN 的插槽),讓故障的記憶體在插進 DIMM_B 時可避開自檢,順利開機進入系統。還要再到 EXTREME TWEAKEKER -> TWEAKER'S PARADISE 裡找出 SPD WRITE DISABLE 把預設的 TRUE 手動改為 FALSE,然後 F10 儲存後開機。順利開機並進入系統後再關機,然後把故障的記憶體插在 B 通道上,接著重新開機。
根據華碩工程師在 OVERCLOCK.NET 上的解說 (連結),ALDER LAKE / RAPTOR LAKE / RAPTOR LAKE REFRESH 採用雙記憶體控制器,且各自支援 A 通道和 B 通道。可是由於筆者使用的是 M15A ENCORE,這種 1DPC 的雙記憶體插槽設計,其實需要同時停用 2 個 CONTROLLER 1 (CHANNEL 0 和 1),來真正停用 DIMM_B。要是只停用 CONTROLLER 1, CHANNEL 1 CONTROL,變會出現 24G + 24G/2 = 24G + 12G = 32G 的怪異情況。這種操作也是當年為了追求極限超頻而停用所謂半通道的做法,使單支記憶體的頻率可以超得更高。完全停用 M15A ECNORE 的 CONTROLLTER 1 後,按 F10 儲存離開等待進入系統然後關機,再把故障的 / 需要重刷 SPD 的記憶體插在 DIMM_B,便可繞過自檢不再卡 DEBUG CODE 55。利用這個方法,也可以在 BIOS 和系統裡,透過特定軟體順利檢測不開機的記憶體的 SPD 檔案。透過比對正常及故障記憶體各自的 SPD 資訊,便可確認不開機的記憶體是否出現 SPD 參數被修改的問題。
如果是 4 記憶體插槽的 ROG Z790,筆者因為沒有這種板子,就無法嘗試該關掉哪一或兩個 CONTROLLER 了。但自己嘗試關一下,總可以試出來,前題是先只插正常的記憶體,確保關掉其他 CONTROLLER 後,進入系統 / BIOS 裡後仍然顯示完整容量。那麼相反的 CONTROLLER 便是負責另一根記憶體插槽了。
要是沒有在 BIOS 裡把 SPD 寫入保護關閉,就無法進行下面的步驟,無法在軟體裡進行 WRITE TO TARGET。
以上操作應該可以避開故障的記憶體卡在自檢過程,利用正常的記憶體順利開機進入系統。此時再打開 OCTOOL 的 TOOL.EXE,這次 TARGET SLOT 應該會出現新的 TARGET (如下圖所示是 A4),那代表故障的記憶體。這邊故障記憶體 (A4) 有被軟體偵測到,所以再按 READ FROM TARGET,便可讀取故障記憶體的 SPD,順便截圖各分頁的參數,備份時再按 SAVE CURRENT 就好,例如 BAD.BIN。這些步驟與上面處理正常記憶體時一致。
比對正常和故障兩組 SPD 的參數,便可確認故障的記憶體 SPD 是否有被修改部份參數。必要時甚至可以手動修正參數,再寫進去故障的記憶體。
以上都是準備功夫,這一刻我們已經有正常的記憶體 SPD 備份檔,也把各分頁的參數記錄下來,是時候把這些好料寫進故障的記憶體 SPD 裡。方法有好幾個,筆者是先選擇正常的記憶體當 TARGET SLOT (A0),然後 READ FROM TARGET 讀取正常的 SPD,再改選故障的記憶體當 TARGET SLOT (A4),最後按 WRITE TO TARGET 把剛剛讀取的正常 SPD 參數寫進故障的記憶體。關於 WRITE PROTECT 的選擇,筆者好像是選了 NO,因為怕 SN 都被改掉,否則選 YES 好像比較合理。至於要不要先勾選 LEAVE WRITE PROTECT ALL OFF,和先把 MR_TEST2 JUMPER 調成 A0 位置,筆者都不清楚,反正筆者沒理會這些。
如果直接 TARGET 故障記憶體,按照正確的 SPD 參數自行修改明顯不對的參數,再按 WRTIE TO TARGET 把修改好的參數寫進去,應該也可以。但筆者沒有嘗試這個方法,因為筆者的不開機記憶體,其實並沒有出現參數異常……但就是不開機卡 55 ……
至於先 TARGET 故障記憶體,然後選 LOAD BIN FILE,把之前從正常記憶體裡備份好的正常 SPD 載入軟體裡,再 WRITE TO TARGET 把這個正常 SPD 寫進故障記憶體,這個方法筆者也沒嘗試,但看來值得一試。
最後完成寫入後,會提示重新開機。這時候筆者直接關機,然後關閉電供,等了一分鐘,接著按 CLEAR CMOS,再重新開機。結果開了,正常與故障兩支都關起來了,BIOS 和系統和軟體都辨識到 2 支記憶體,參數也沒有異常。筆者後來發現這一步驟好像不應該按 CLEAR CMOS 啊!
筆者非常高興,因為成功把不開機的記憶體救回來了,不再卡 DEBUG 55。趕緊進入 BIOS 選 XMP I (ASUS) 再燒機,結果馬上報錯。筆者再次進入 BIOS 選 XMP II (MEMORY VENDOR),結果還是報錯,連 10% 都過不了。筆者完全崩潰只好選預設開機,結果預設的記憶體頻率是 4000,而不是 SPD 裡的 JEDEC 4800,雖然可跑完 100%。完了一切都完了,看來可能是記憶體顆粒死掉了,又或者是筆者跟本沒有正確寫入 SPD。
筆者決定關機,斷電。然後拔出兩支記憶體,擦擦金手指,再長按 CLEAR CMOS 才裝回去。筆者本打算要是還不行,直接在 OCTOOL 軟體載入正常的 SPD 檔案,然後直接寫進去故障的記憶體上,管它的什麼 CRITICAL PART 我 XXX 寫爆。幸好這次重新開機後選 XMP I (ASUS),都能通過 HCI 100% 測試了。啊到底發生什麼事,由發現不開機到找出卡 55 的那一支,到網上研究如何刷 SPD,再到"成功"寫入 SPD 使記憶體成功開機,最後又連 XMP 都跑不了,最終擦擦金手指又能過了,筆者覺得這一切非常奇妙。
目前的進度是 HCI 100% 過測,筆者會持續燒機看看要不要再強刷 SPD,反正就是能開機了,但不知道顆粒有沒有受損,PMIC 有沒有正確運作。以上就是筆者玩了六小時的經歷,跟各位分享一下。原則上要是 SPD 明顯被修改,應該可以透過以上方法解決,前題是有合適的板子和同款記憶體在手 / 同款記憶體的 SPD 檔,當然還要找到華碩的軟體 OCTOOL。 如果你同樣遇上相同問題,又跟筆者一樣不便 / 不能 RMA,這也許是唯一方法自行解決問題。華碩是筆者目前唯一找到有提供完整軟體的板廠,只能說不得不感謝華碩,尤其是該軟體的製作者 SHAMINO,太偉大了。華碩 ROG MAXIMUS 的底蘊在於網路社群的規模和互助,也有工程師直接交流和製作測試 BIOS 和軟體,才得到超頻玩家認可。
筆者的記憶體之所以出事,是因為借給了朋友,而朋友的板子原來連 CPU 針腳都歪掉,更已經弄死他的記憶體。現在可以確認是他的板子有問題了,只是板子出問題卻是他自己造成的。由於整件事過於離奇,加上本文只想為受 SPD CORRUPTED 問題影響的朋友提供一種思路,所以盡可能不提及任何廠商。
對了,以上過程筆者都是參考 OVERCLOCK.NET 的一篇文章。連結就不放了,因為文章裡有 OCTOOL 的下載連結,據說 HWBOT 論壇和華碩官方論壇也有放。筆者希望這套軟體得以被善用,而非被用於不正當的行徑,以上操作風險自負!如果對以上講解有不明白的地方,100% 是筆者的錯,同時筆者也不建議你繼續刷下去了。至於筆者的記憶體卡 55,是否真的與 SPD CORRUPTED 有關,我也不知道啊!
簡單總結以上操作 (M15A ENCORE):
- 準備 OCTOOL 軟體、ROG Z790 主機板、同款正常的記憶體。
- 先把正常的記憶體插在 DIMM_A (較近 CPU 的) 插槽,開機後利用 OCTOOL 軟體 TARGET 該記憶體再讀取其 SPD,記錄各項參數和備份 SPD。
- 重新開機後進入 BIOS,透過停用 IMC 停用 DIMM_B 插槽,然後把 SPD 寫入保護關閉,按 F10 再進入系統。
- 此刻要確保有正確停用 DIMM_B 插槽 / 即將用來安裝故障記憶體的插槽。
- 關機,把故障記憶體插到 DIMM_B 插槽,與 DIMM_A 插槽的記憶體一起開機,進入系統。
- 此時應該可以順利開機,因為自檢時繞過故障記憶體。
- 再次打開 OCTOOL,截圖和備份故障記憶體的 SPD,然後比對一下正常 SPD 與故障 SPD 的參數是否有不同 (也可利用 CPU-Z 等軟體簡單判斷)。
- 來到重新寫入 SPD 的環節,方法有好幾個,反正筆者只試了一種。
- 利用 OCTOOL 軟體先 TARGET 良好的記憶體,然後 READ SPD,再 TARGET 故障記憶體,然後 WRITE。
- 完成寫入後,關機,斷電,等幾分鐘,再重新開機,進入系統。
- 再次關機,斷電,這次 CLEAR CMOS 使 IMC 通道重新開啟,再開機。
- 跑壓力測試看看記憶體有否報錯。
經過一番奮鬥與測試,現在記憶體沒事了。
延伸閱讀
詢問這隻軟體的載點或是論壇公開處。
ROG 論壇搜尋就有 https://rog-forum.asus.com/
請問ASUS B75M PLUS可否用? 我也有一條RAM 不知是否壞, 一插去第4槽就開不到機,,
這不確定,畢竟我們只有在新的平台上測試,或許你可以在 ROG 論壇上詢問製作者。