• Become a Premium Member for $25/year with no ads to improve your community experience.

GUIDE How to Enable Apple VTD on macOS [Clover/OpenCore]

EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
8,153
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
13.x
Bootloader
  1. OpenCore (UEFI)
Mac
  1. Mac mini
  2. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
How to Enable Apple VTD on macOS [Clover/OpenCore]

An EliteMacx86 Exclusive Guide - This guide covers the implementation of the Apple VTD function on macOS for Desktops and Laptops. By following this guide, you'll be able to enable VT-d on macOS using Clover or OpenCore Bootloader.

Overview


Intel's VT-d feature provides Kernel DMA Protection which is required by a few Thunderbolt Devices such as Antelope. By enabling VT-d on macOS, a few additional Thunderbolt Devices can be made to work such as Apple's Thunderbolt to Ethernet Adapter. Since macOS Ventura, enabling VT-d is a must. VT-d is required for working Network Adapters, including built-in and PCIe based. This has been already discussed in the thread below.

Requirements


Following are the requirements for enabling VT-d function on macOS.

Motherboard
  • VT-d supported motherboard
CPU
  • Intel VT-d compatible CPU. Generally, from the year 2012 and later.
  • AMD CPUs are not supported yet.

QUICK INFO:
  • CPUs from 2012 are supported by Apple's VT-d function. Any prior CPU will lack the VT-d feature even if provided by Intel.
  • AMD CPUs do not support AMD-Vi on macOS, which is similar to Intel's VT-d feature, required for Kernel DMA Protection, demanded by several Thunderbolt Devices. This includes all AMD CPUs. However, a workaround for this feature is to use macOS Sierra.
  • On some systems with VT-d enabled, you may have network disruption. To fix you need to fix the DMAR Table. Refer to the memory mapping guide for more information.
  • Upgrading/Downgrading BIOS, changing BIOS Settings and upgrading Memory (RAM) may cause a change in memory regions and you'll need to patch the DMAR table again.

Enabling Apple VT-D on macOS
Following are the steps for spoofing Graphics on macOS.

STEP 1: Enable VT-d in BIOS/UEFI

1. On your target machine, boot the system into BIOS.
2. Under BIOS, find Intel VT-d. On some machines, the name can be simply VT-d. On a few server motherboards, the option is hidden under Northbridge or Chipset Tab.
3. Set VT-d to Enabled.
4. Restart your system and boot into macOS.

STEP 2: Configure Quirks

The next step is to add the required changes by editing your config.plist. The changes are supported by both bootloaders, i.e Clover and OpenCore.

For Clover:
1. Mount your ESP
2. Open your config.plist using any XML editor from the EFI/Clover directory.
3. Remove dart=0 under Arguments in the Boot section of your config.plist.
4. Disable DisableIoMapper quirk in the Quirks section.
5. Save your config.plist.

For OpenCore:
1. Mount your ESP
2. Open your config.plist using any XML editor from the EFI/OC directory.
3. Disable DisableIoMapper quirk in the Kernel section.
4. Remove dart=0 from boot-args key under the 7C436110-AB2A-4BBB-A880-FE41995C9F82 UUID list in NVRAM section of your config.plist.
5. Save your config.plist

NOTES:
  • To disable the quirk, just disable the checkbox near the quirk.
  • The above configuration changes are in addition to your current config.plist changes.

STEP 3: Restarting your System

After performing all the above steps, restart your system for the applied changes to take effect. It is recommended to reset NVRAM twice at least. You should have VT-d enabled now.

NOTE: If you do not see AppleVT-d or have a network issue, you need to fix your DMAR Table. The steps have been described below.

Fixing DMAR Table


On a few systems (typically Desktops with less than 64GB and Laptops with less than 16GB of memory), when you enable VT-d which is required for some major functioning of a few particular devices such as Antelope Audio Interface and other Thunderbolt capable Devices, and a few Ethernet Cards, the system starts acting weird and all of a sudden, the network devices no longer work including Ethernet and WiFi. When checking the Devices in System Preferences>Network, the network adapters are in a loop, infinite link-up and link-down but never connect. In addition, the WiFi can be disrupted if you enable additional devices in BIOS (such as IGPU).

From OpenCore Documentation (DisableioMapper section)

"Misconfigured IOMMU in the firmware may result in broken devices such as ethernet or Wi-Fi adapters. For instance, an ethernet adapter may cycle in link-up link-down state infinitely and a Wi-Fi adapter may fail to discover networks. Gigabyte is one of the most common OEMs with these issues."

Such issues were seen on systems running Big Sur and later. To overcome this issue, a user @yosoyoco came up with a fix and the idea was to fix the DMAR Table by removing the reserved memory regions from the native OEM DMAR Table, and then further dropping the OEM DMAR Table, and using the fixed DMAR Table, with the removed reserved regions. Although, this fix is required for the systems (mostly consumer Desktops and a fewer Laptops) running Big Sur and Later, a few users have reported such issues on Catalina and prior too.

STEP 1: Extracting Native ACPI Tables

The very first step is to extract the native ACPI Tables. We recommend it extracting using Clover, for the highest level of integrity. Provided that you're not dropping the DMAR Table, you can directly use MaciASL to extract the DMAR Table. Follow the steps below to extract the DMAR Table using MaciASL.

1. Download MaciASL.
2. Extract the MaciASL and move it to the Applications folder.
3. Open MaciASL
4. Open the DMAR Table using File>New From ACPI option and then select the DMAR
Screen Shot 2022-12-22 at 10.16.42 AM-min.png Screen Shot 2022-12-23 at 1.45.00 AM-min.png

5. Go to File and then select Save As option.
Screen Shot 2022-12-22 at 10.48.04 AM-min.png

6. A dialogue box will appear asking for the location and the file format to save the file. Select the location of your choice and select ACPI Machine Language Binary in the File Format option.
Screen Shot 2022-12-22 at 10.46.55 AM-min.png

7. Click on Save.

STEP 2: Remove Reserved Memory Regions

Once you have obtained the DMAR Table, the next step is to remove the Reserved Memory Regions. To remove the reserved memory regions, follow the steps below.

1. Open the DMAR.aml file using MaciASL. You should have a similar table as the screenshot attached below.

View attachment 5405

2. Find the Memory Regions and delete them. In our case, the Memory region starts from line 70 and ends at line 101.

Upon deleting the Memory Regions, the DMAR Table should look similar to the screenshot attached below.



As you can see, it's very clear that now, the memory regions have been deleted. Which is the essence ;)

3. Click on compile button and look for errors in the Compiler Summary. If there's an error, fix it and again click on Compile.
Screen Shot 2022-12-04 at 9.50.24 PM-min.png



4. Save the changes to the SSDT using File>Save option.

Screen Shot 2022-12-04 at 10.06.59 PM-min.png


STEP 3: Installing the SSDT

The next step is to install the fixed DMAR SSDT. Follow the steps below to install the SSDT.

1. Mount your ESP.
2. Depending on your bootloader,

For Clover:
If you're using Clover, copy the SSDT-DMAR.aml to EFI/Clover/ACPI/patched directory.

For OpenCore:
If you're using OpenCore, copy SSDT-DMAR.aml to EFI/OC/ACPI directory. You'll also need to add the ACPI entry for the same in ACPI>Add section of your config.plist.

3. Save your config.plist

STEP 4: Dropping the Native DMAR Table

The next step is to drop the native DMAR Table to prevent from loading and instead use the fixed version of the DMAR Table. Follow the steps below to drop the native DMAR Table.

1. Assuming the ESP is still mounted,

For Clover:
1. Open your config.plist using any XML editor from the EFI/Clover directory.
2. Add DMAR into the Signature key under the Acpi>Drop Tables section of your config.plist. If you're using Sorted Order configuration, add SSDT-DMAR.aml to the list.
3. Save your config.plist

For OpenCore:
1. Open your config.plist using any XML editor from the EFI/OC directory.
2. Add DMAR into the TableSignature key under ACPI>Delete section of your config.plist and also enable the entry.
3. Save your config.plist

STEP 5: Restarting your System

After performing all the above steps, restart your system for the applied changes to take effect. It is recommended to reset NVRAM twice at least. The network adapters should be stable now.


Verifying AppleVTD


After restarting, the final step is to check and verify the AppleVTD function, whether it is loading under macOS or not. Follow the steps below to verify AppleVTD.

1. Download and open IOReg.

IOReg
  • Verify the AppleVTD property. The AppleVTD property is located under the AppleACPIPlatformExpert node.

Screen Shot 2022-02-26 at 7.53.49 AM-min.png
 
Last edited:
  • Like
Reactions: St0kki and uzmi
hello

I just enabled apple vt-d in the bios.
however I can't see it in ioregistry :(

I need help
 
hello

I just enabled apple vt-d in the bios.
however I can't see it in ioregistry :(

I need help
No PR files attached.
 
i have this :) but sadly my hack has noThunderbolt:ROFLMAO:
just follow guide, but i wonder why OC Guide said that need True/ Enable?
 
Last edited:
i have this :) but sadly my hack has noThunderbolt:ROFLMAO:
just follow guide, but i wonder why OC Guide said that need True/ Enable?
Is required for Virtualization/Thunderbolt.
 
This fixed my thunderbolt audio device, but now I don't have WiFi.

I'm attempting to follow the guide to use MaciASL to edit my DMAR and replace it, but when I delete the memory region and click save it crashes (spinning wheel). I've tried on 3 different computers and different MaciASL versions. Am I doing something wrong?

Is there another editor I could use instead?
 

Latest posts

Forum statistics

Threads
1,883
Messages
17,444
Members
27,087
Latest member
babaRoga