如何定制 SSDT-DMAR.aml

**啟用 VT-d (AppleVTD) 時的 DRAM 兼容性圖表 **

Mojave 和 Catalina 用戶:您無需擔心!你可以忽略這篇文章。

請不要引用這篇文章的全部內容。請改用鏈接或摘錄。

概論

在 Mojave 之後的所有 macOS 版本上:

  • AppleVTD 是連接外部音頻 Thunderbolt 接口所必需的。
  • AppleVTD 為 Slate VRS 和其他驅動程序使用直接內存訪問的設備提供了更低的延遲。

BIG SUR、Monterey、Ventura::

  • AppleVTD 是將 Apple 自己的 Thunderbolt 連接到千兆以太網適配器所必需的,這是極少數支持 AVB(音頻/視頻橋接)的網路卡適配器之一。
  • 修護因 INTEL i225-V 網路卡驅動問題,造成系統無端重啟或是當機。
  • 加快引導到系統的滑順度。

更新日誌:

2022/06/07

  • 關於 Intel i225-V 2.5G 在 Ventura 的相關設定,本文或這裡皆可。
  • 想要修改網卡韌體的方法,可以參考這裡

2021/11/07

關於 Intel i225-V 2.5G 在 Monterey 的相關設定,本文或這裡皆可。

操作示範:

當然請運行 MaciASL 並選擇 File –> New from ACPI –> DMAR。保存後放置 EFI -> OC -> ACPI 資料夾,並在 config.plist 文件中加載!

《如何定制 SSDT-DMAR.aml》
DMAR

透過該工具取出 DMAR 表,請依照以下圖示,將反白的程式碼全數刪除,並儲存於名為 SSDT-DMAR.aml,以下演示如何創建刪除條目。

《如何定制 SSDT-DMAR.aml》
篩除過多的程式碼

如何取出HEX 值

這裡提供兩種作法,一種為計算方式、另一種為直接取值。

《如何定制 SSDT-DMAR.aml》
A 圖

你也可以這麼做:刪除兩個 [Reserved Memory Region] 區段,並空下二行。

《如何定制 SSDT-DMAR.aml》
B圖

記得存檔:

《如何定制 SSDT-DMAR.aml》

關鍵重點:

請注意:這裡很重要、這裡很重要、這裡很重要,千萬別搞錯。無論你是透過 A 計算、或是B 圖黃匡列取到數值,要注意到這兩個值是否一致:

A圖:

  • Signature : “DMAR”
  • Oem Table ID : “AMI ”

B 圖:

  • Signature : “DMAR”
  • Oem Table ID : “EDK2    ” (注意右邊有四個空格)

下半部是重點:(舉例B)

  1. 反白部分(即兩個 [Reserved Memory Region] 區段)要刪除
  2. 最下方 Raw Table Data 的部分,跟右邊綠色的部分對照得到:
    • “DMAR” 的 HEX 值為 444D4152
    • “EDK2    ” 的 HEX 值為 45444B3220202020

簡單的說,我們只針對 DMAR 的部分,刪掉 [Reserved Memory Region] :

  1. 刪除兩個 [Reserved Memory Region] 區段
  2. 記下以下資訊:
    • Signature : “DMAR”,HEX 值為 44 4D 41 52
    • Oem Table ID : “EDK2    ”  HEX 值為 45 44 4B 32 20 20 20 20

最後,我們能夠啟用AppleVTD,而不會產生 WiFi 和以太網損壞的副作用。

步驟:

  • BIOS –> 啟用 VT-d
  • OpenCore –>從內核怪癖中取消選中DisableIoMapper
  • OpenCore –>如果存在dart=0從 boot-args 中刪除
  • OpenCore –> Add SSDT-DMAR.aml (attached) to ACPI –> Add section 如圖
  • OpenCore –>從ACPI中刪除DMAR –> 刪除部分,如圖所示
  • 重啟

加載 SSDT-DMAR.aml 

做完上述步驟之後,ㄐ你你可以按照以下的方法,加載SSDT-DMAR.aml  於OpenCore 引導文件當中。

警告:

  • SSDT-DMAR.aml  一定是要自己的主機板生成的文件才可以。

OpenCore 的config.plist 設定如下:

  • ACPI > Add >
  • Comment: DMAR Table
  • Enabled <bool> : True
  • Path <String> : SSDT-DMAR.aml
《如何定制 SSDT-DMAR.aml》

ACPI > Delete > 加入:

  • Comment : Drop OEM DMAR Table
  • Enabled <boolean>:True
  • OemTableId <data>:45444B3220202020
  • TableLength <integer>:0
  • TableSignature <data>:444D4152
《如何定制 SSDT-DMAR.aml》

NVRAM > Add > 7C436110-AB2A-4BBB-A880-FE41995C9F82 > boot-args : 刪除引導參數dk.e1000=0 或是 E1000=0

最後記得把 config.plist 存檔。

測試

操作步驟如下:

  • 確認 BIOS 的 VT-d 有開啟,
  • 打開 openCore config.plist 文件,將 Kernel > Quirks > DisableIoMapper 為 True 。(其用意為 BIOS 內 VT-d 啟用,但在 OpenCore 遮蔽 VT-d 機制)
  • 系統偏好設定:網絡、乙太網路:TCP/IP:採用 DHCP
  • 進階:硬體改為自動。
  • 套用。

如此你的網卡應該就可以驅動了!

關於 Intel i225-V 網卡

打從 Intel 發出第十代 x86 架構的主機板,許多高階主機板皆採用 Intel i255-V 晶片的網路卡,但在 Catalina、Big Sur 11.3 的版本當中,需要靠第三方Kext ,方能驅動Intel 網卡。且必須要手動調整速率為1000baseT。若升級後得必須在重設定一次。

舉例以技嘉 Z490 VISION G 做說明,該主機板內建 Intel I225-V 2.5GbE 乙太網路。這款網路產品直到 macOS 11.4 以後才被原生支援,在此之前都是以偽裝 Intel I210 裝置的方式,由 macOS 系統內的 AppleIntelI210Ethernet.kext(com.apple.driver.AppleIntelI210Ethernet) 驅動。驅動方式如下:

EFI/OC/config.plist 內的設定值:

<dict>
    <key>DeviceProperties</key>
    <dict>
        <key>Add</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)</key>
            <dict>
                <key>device-id</key>
                <data>8hUAAA==</data>
                <key>device_type</key>
                <string>Ethernet Controller</string>
                <key>model</key>
                <string>Intel Ethernet-Controller I225-V</string>
            </dict>
        </dict>
    </dict>
    <key>Kernel</key>
    <dict>
        <key>Patch</key>
        <array>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>Base</key>
                <string>__Z18e1000_set_mac_typeP8e1000_hw</string>
                <key>Comment</key>
                <string>Enables Intel Ethernet-Controller I225-V natively.</string>
                <key>Count</key>
                <integer>1</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>8hUAAA==</data>
                <key>Identifier</key>
                <string>com.apple.driver.AppleIntelI210Ethernet</string>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>MaxKernel</key>
                <string>20.4.0</string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>Replace</key>
                <data>8xUAAA==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
            </dict>
        </array>
    </dict>
    <key>NVRAM</key>
    <dict>
        <key>Add</key>
        <dict>
            <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
            <dict>
                <key>boot-args</key>
                <string>dk.e1000=0</string>
            </dict>
        </dict>
    </dict>
</dict>

我們用圖表可以看得更清楚一點。以下的用意為當「PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)」加入 device-id = 0x15F2

《如何定制 SSDT-DMAR.aml》

與 Kernel Patch 修正 AppleIntelI210Ethernet.kext 加入置換為 0x15F3 。

《如何定制 SSDT-DMAR.aml》

這兩項設定的用意是欺騙 macOS 的 I225LM 驅動程序,來驅動 Intel I225-V 網絡控制器。

設定 MaxKernel = 20.4.0 和 MinKernel = 19.0.0 的值,用意是限制在  macOS 15(.x) ~ macOS 11.3(.x) 之間才有作用。若系統 macOS 11.4 以後的版本,系統內建的驅動 AppleIntelI210Ethernet.kext(com.apple.driver.AppleIntelI210Ethernet) 原生支援 0x15F3,無需在 Kernel Patch。

《如何定制 SSDT-DMAR.aml》

boot-args 加入參數 dk.e1000=0 (Monterey 12.3 以後需改為 e1000=0),這個參數只對 11.4 以上有效,避免 macOS 11.4 用新的方法(com.apple.DriverKit-AppleEthernetE1000.dext)驅動 Intel 2.5GbE 的網卡,因為新方法在搭載 Intel I225-V 的技嘉主機板會發生崩潰當機的現象。

以上設定方式對 macOS 10.15 ~ 11.x  實測全都有效,包含 11.4 與 11.5。附帶一提的是,倘若系統為 macOS 11.4+,可以只保留 dk.e1000=0 或是 e1000=0 的參數(其他可全數刪除)。

Monterey

當使用 macOS 12 Monterey 的用戶, 板載 Intel I225-V 網卡開始出現異常。解決的方式很簡單,只要在 「PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)」加入 device-id = 0x15F3 即可以系統原生驅動。

《如何定制 SSDT-DMAR.aml》

修改板載 Intel I225-V 韌體

在 2022 年 4 月初時,德國有位神人 badbrain 發表技嘉主機板載 Intel I225-V 問題的解決方案,此方法經 5T33Z0 的驗證確實有效(英文)。主要的原因在際家主機版問題很多,根據神人所述:技嘉採用 Intel I225-V v1/v2 版本的主機板,在網卡的 EEPROM 內的韌體資訊大多存在某些描述錯誤,而 macOS12 Monterey 在驅動上更深層綁定硬體描述時,最終導致問題的發生。修改韌體也是最好的方法之一。

若是想要嘗試修改的用戶,你可以參考這篇文章的中文說明

結論

此教學特別針對 Intel i255-V 網卡的相關問題,做了很多著墨,故希望大家務必去修改 DMAR 相關的設定。為何要修改 DMAR 呢?說穿了就是防止系統崩潰、網卡或是無線WiFi的問題啦!一旦你設定成功以後,就會出現 AppleVTD 、DMAC 等設備。這也是仿效白蘋果應該有設備唷。一旦黑果設置了DARM,系統運行會更佳滑順穩定。

《如何定制 SSDT-DMAR.aml》

RAM 之影響

《如何定制 SSDT-DMAR.aml》

以下文章(摘錄番茄網站)可能基於 Intel 的桌機主板兼容的 DRAM 列表。若不兼容的內存將阻止 WiFi 和以太網連接。本文僅適用於 macOS Big SurMonterey等後續版本。

NOTES:

  • 如果僅使用兩個 8GB DIMM,則所有內存模塊(任何品牌/型號)都兼容,並且不會影響 WiFi 和以太網。你可以忽略這篇文章的其餘部分。
    • 如果使用兩個 8GB DIMM 和一個或兩個 4GB DIMM,所有模塊可能仍然兼容,但這尚未得到驗證。
  • 如果僅使用兩個 4GB DIMM,則所有內存模塊(任何品牌/型號)都應兼容。
    • 如果使用四個 4GB DIMM,所有模塊可能仍然兼容,但這尚未得到驗證。
  • 如果僅使用一個 16GB DIMM,則所有內存模塊(任何品牌/型號)都應兼容。
  • 如果您有基於X99X299的英特爾高端台式機,則所有內存模塊(任何品牌/型號)都應該兼容。你可以忽略這篇文章的其餘部分。

要使用超過 16GB 的 RAM,以下是已知可以工作的 DIMM 模塊列表,以及在安裝超過 16GB 時已知會導致 WiFi 和以太網連接失敗的模塊列表。

工作 DIMM 型號(無 WiFi 和以太網連接問題):目前在 Big Sur 或更新的操作系統中沒有。

macOS Big Sur:導致 WiFi 和以太網連接失敗(僅當安裝超過 16GB 時):

Make Model Capacity Reported By
Wilk Elektronik IRP3600D4V64L17 16GB module, 3600MHz @akanewb
Corsair Vengeance LPX CMK64GX4M4A2666C16 16GB module, 2666MHz @jiffyslot
G.Skill TridentZ F4-3200C16D-16GTZRX 8GB module, 3200MHz @CaseySJ
OLOy MD4U163618BEDA B 16GB module, 3600MHz @CaseySJ
G.Skill TridentZ F4-3600C16Q-64GVKC 16GB module, 3600MHz @gandem
G.Skill Ripjaws V F4-3600C17Q-32GVK 8GB module, 3600MHz @gandem
Corsair Vengeance LPX CMK32GX4M2B3000C15 16GB module, 3000MHz @Sapricot
Team Group TF1D48G3200HC16CBK 8GB module, 3200MHz @CaseySJ
Kingston HyperX Fury HX426C16FB3AK4/128 32GB module, 2666MHz @jjsenecal
Kingston HyperX Fury KHX3600C17D4/16GX 16GB module, 3600MHz @Itshuta
G.Skill TridentZ F4-3000C16Q-64GTZR 16GB module, 3000MHz @maschinenwart
G.Skill Ripjaws V F4-3200C16Q-128GVK 32GB module, 3200MHz @CODYQX4
Corsair Vengeance LPX CMK32GX4M2B3200C16 16GB module, 3200MHz @NCMacGuy / @Kalypso478
点赞
Share