**啟用 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 文件中加載!

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

如何取出HEX 值
這裡提供兩種作法,一種為計算方式、另一種為直接取值。
你也可以這麼做:刪除兩個 [Reserved Memory Region] 區段,並空下二行。

記得存檔:

關鍵重點:
請注意:這裡很重要、這裡很重要、這裡很重要,千萬別搞錯。無論你是透過 A 計算、或是B 圖黃匡列取到數值,要注意到這兩個值是否一致:
A圖:
- Signature : “DMAR”
- Oem Table ID : “AMI ”
B 圖:
- Signature : “DMAR”
- Oem Table ID : “EDK2 ” (注意右邊有四個空格)
下半部是重點:(舉例B)
- 反白部分(即兩個 [Reserved Memory Region] 區段)要刪除
- 最下方 Raw Table Data 的部分,跟右邊綠色的部分對照得到:
- “DMAR” 的 HEX 值為 444D4152
- “EDK2 ” 的 HEX 值為 45444B3220202020
簡單的說,我們只針對 DMAR 的部分,刪掉 [Reserved Memory Region] :
- 刪除兩個 [Reserved Memory Region] 區段
- 記下以下資訊:
- 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
ACPI > Delete > 加入:
- Comment : Drop OEM DMAR Table
- Enabled <boolean>:True
- OemTableId <data>:45444B3220202020
- TableLength <integer>:0
- TableSignature <data>:444D4152
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

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

這兩項設定的用意是欺騙 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。

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 即可以系統原生驅動。

修改板載 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,系統運行會更佳滑順穩定。

RAM 之影響
以下文章(摘錄番茄網站)可能基於 Intel 的桌機主板兼容的 DRAM 列表。若不兼容的內存將阻止 WiFi 和以太網連接。本文僅適用於 macOS Big Sur、Monterey等後續版本。
NOTES:
- 如果僅使用兩個 8GB DIMM,則所有內存模塊(任何品牌/型號)都兼容,並且不會影響 WiFi 和以太網。你可以忽略這篇文章的其餘部分。
- 如果使用兩個 8GB DIMM 和一個或兩個 4GB DIMM,所有模塊可能仍然兼容,但這尚未得到驗證。
- 如果僅使用兩個 4GB DIMM,則所有內存模塊(任何品牌/型號)都應兼容。
- 如果使用四個 4GB DIMM,所有模塊可能仍然兼容,但這尚未得到驗證。
- 如果僅使用一個 16GB DIMM,則所有內存模塊(任何品牌/型號)都應兼容。
- 如果您有基於X99或X299的英特爾高端台式機,則所有內存模塊(任何品牌/型號)都應該兼容。你可以忽略這篇文章的其餘部分。
要使用超過 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 |