**啟用 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,以下演示如何創建刪除條目。
你也可以這麼做:刪除兩個 [Reserved Memory Region] 區段,並空下二行。
如何取出HEX 值
這裡提供兩種作法,一種為計算方式、另一種為直接取值。
記得存檔:
關鍵重點:
請注意:這裡很重要、這裡很重要、這裡很重要,千萬別搞錯。無論你是透過 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
Key | Type | Value |
device-id | Data | F2150000 |
device_type | String | Ethernet Controller |
model | String | Intel Ethernet-Controller I225-V |
與 Kernel Patch 修正 AppleIntelI210Ethernet.kext 加入置換為 0x15F3 。
Kernel -> Patch 新增一筆資料:
Key | Type | Value |
Arch | String | Any |
Base | String | __Z18e1000_set_mac_typeP8e1000_hw |
Comment | String | Enables Intel Ethernet-Controller I225-V natively. |
Count | Number | 1 |
Enabled | Boolean | True |
Find | Data | F2150000 |
Identifier | String | com.apple.driver.AppleIntelI210Ethernet |
Limit | Number | 0 |
Mask | Data | |
MaxKernel | String | 20.4.0 |
MinKernel | String | 19.0.0 |
Replace | Data | F3150000 |
ReplaceMask | Data | |
Skip | Number | 0 |
這兩項設定的用意是欺騙 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。
BIG SUR-Gigabyte 用戶
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-Gigabyte 用戶
當使用 macOS 12 Monterey 的用戶, 板載 Intel I225-V 網卡開始出現異常。解決的方式很簡單,只要在 「PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)」加入 device-id = 0x15F3 即可以系統原生驅動。
macOS 11.4+ 若想要使用新版驅動,則必須啟用 VT-d 功能(啟用 AppleVTD )。啟用 VT-d 功能必須伴隨 DMAR 修正,否則會發生系統崩潰當機。
當註解掉或刪除設備屬性後,我們得到以下結果。請注意,這com.apple.DriverKit-AppleEthernetE1000
是正確的驅動程式。它原生支援 Intel i225-V。
Ventura_Gigabyte 用戶
macOS 13+ 系統已移除舊版驅動 AppleIntelI210Ethernet.kext,若想使用此舊版,除了 boot-args 加入 e1000=0 ,仍需自行下載舊版驅動,並於 config.plist 設定驅動。
修改板載 Intel I225-V 韌體
在 2022 年 4 月初時,德國有位神人 badbrain 發表技嘉主機板載 Intel I225-V 問題的解決方案,此方法經 5T33Z0 的驗證確實有效(英文)。主要的原因在際家主機版問題很多,根據神人所述:技嘉採用 Intel I225-V v1/v2 版本的主機板,在網卡的 EEPROM 內的韌體資訊大多存在某些描述錯誤,而 macOS12 Monterey 在驅動上更深層綁定硬體描述時,最終導致問題的發生。修改韌體也是最好的方法之一。
若是想要嘗試修改的用戶,你可以參考這篇文章的中文說明。
修正 macOS Ventura 13.3+ 的 Wifi 工作異常
2023 年 6 月 1 日更新:
若是黑果主機的配置如以下條件,那可能會導致你的 Wifi 無線網路(例如 BCM94360)異常不工作:
- macOS 13.3+ 版本
- 系統成功啟用 AppleVTD
- 系統成功驅動 iGPU 內顯
- 主記憶體超過 16GB(不含 16GB)
- 某些廠牌的主機板型號為 Z370、Z390、Z490,Z590 任一種(檢測到系統原生 DMAR 表中包含 Reserved Memory Region 區段的主機板時)
依據Tonemacx86 CaseySJ 發現將驅動程式 IOPCIFamily 經由反組譯後,再 macOS 13.3+ 出現了以往未曾見過兩個新函式庫:
- AppleVTD::addMemoryRange
- 與 AppleVTD::reserveRanges 。
如果主機板的DMAR 表發現這兩個函式有 Reserved Memory Region 時,就會出現程式錯誤的 BUG,導致驅動發生問題,即便修改過的 DMAR 表(刪除 Reserved Memory Region 區段)也一樣,唯有在原生 DMAR 表中沒有 Reserved Memory Region 的主機板就不會有問題。
當遇到以上問題時,解決的方案如下。
升級最新的 OpenCore 版本:
- OpenCore 升級到 0.9.2+ 以上
- Kernel -> Quirks -> DisableIoMapperMapping 設定為 True。
2023 年 7 月 1 日更新:
在文圖拉我們可以這樣做:
- 新增啟動參數e1000=0就像您已經完成的那樣
- 從此處下載新增AppleIGC.kext
- 將 kext 複製到EFI/OC/Kexts資料夾
- 在config.plist -> Kernel中新增條目
- 刪除與i225-V相關的所有設備屬性
AppleIGC 驅動程式也支援Z790 平台中的i226-V 。
2023 年 12 月 4 日更新:
- AppleIGC.kext可能導致系統崩潰
- Ventura 和 Sonoma 對 i225-V 具有本機支持,因此不需要AppleIGC.kext
- 但是,本機 macOS 驅動程式需要啟用 AppleVTD,這表示:
- 不要使用引導參數e1000=0
- 在 BIOS 中啟用 VT-d
- 禁用核心怪異DisableIOMapper
- 啟用核心怪異DisableIOMapperMapping
結論
此教學特別針對 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 |