Disclaimer: This fix may require flashing a custom firmware onto the EEPROM of the Intel I225-V Ethernet Controller. I am not responsible for any hardware failures that might occur during the process – execute the following guide at your own risk!
TABLE of CONTENTS
- About
- Technical Background
- Option 1: Add
AppleIGC.kext
- Option 2: Using a SSDT with corrected header description (obsolete)
- Option 3: flashing a custom Firmware (obsolete)
- Troubleshooting
- Credits and Resources
On the Z490 Vision G, the I225-V Controller stopped working shortly after the first betas of macOS Monterey were released. Various tricks were tried to fix it: assigning IP addresses and settings manually, dropping the DMAR table, changing BIOS Settings and Quirks and – the scariest trick of them all – replacing the IONetworkingFamily kext of previously working builds, which breaks the seal of the snapshot partition and can corrupt macOS, leaving it in an unbootable state. On top of that, this method only worked temporarily until the next beta was released. There's a lengthy thread about the issue on insanelymac.
Until now, the only reliable option was to just buy a third party network card supported by macOS 12 and newer. Fortunately, 2 fixes were discovered to get the I225-V working again. One requires flashing a modified firmware onto the EEPROM so macOS can detect and attach it to the com.apple.DriverKit-AppleEthernetE1000.dext
driver successfully. The other one uses an SSDT to inject the correct header description data for the I225-V into macOS so it can attache to the .kext version of the AppleEthernetE1000 driver.
The stock firmware for the Intel I225-V used on some of this Boards (and possibly other Z490 Boards by Gigabyte), contains an incorrect Subsystem-ID and Subsystem Vendor-ID. The Vendor-ID (8086
for Intel) is also used as Subsystem-Vendor-ID (instead of 1458
) and the Subsystem-ID only contains zeros instead of the correct value (E000
).
The screenshot below shows the file header of the I225MOD binary in hex code. Values highlighted in green are the ones that were changed in order to make the controller work again:
Before attempting to fix your Ethernet Controller make sure you have excluded all other sources for Network errors:
- Check your BIOS and config.plist settings and adjust them accordingly
- Reset your Network Settings in Terminal:
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
sudo rm /Library/Preferences/SystemConfiguration/preferences.plist
- Reset your Router
- Dump the stock firmware (Steps 1 - 7 of Option 2) and analyze it in TextEdit or a HexEditor. If the Subsystem ID, Subsystem-Vendor-ID are correct, you may not need a fix.
Terminalstrip pointed me to a new kext called AppleIGC which is an "Intel 2.5G Ethernet driver for macOS. Based on the Intel igc implementation in Linux". It works on both stock and custom firmware. Verzadil managed to get it working with the stock firmware with the following settings:
- Add
AppleIGC.kext
toEFI/OC/Kexts
and config.plist. - Optional: add
e1000=0
toboot-args
(macOS Monterey+). For Big Sur, usedk.e1000=0
. I don't need it on my system. - In
Kernel/Quirks
, turn onDisableIoMapper
(might work without it. I need it on my I225-V with custom firmware). - Save your config and reboot
- Run IORegistryExplorer and verify that the kext is servicing the Intel I225-V:
SSDT-I225V
and AppleIntelI210Ethernet.kext
so the new kext can be used.
Before flashing a custom firmware as a last resort, you can try to inject the Intel I225-V controller via an SSDT containing the correct Subsystem-ID and Subsystem Vendor-ID. The good guy MacAbe at Insanelymac Forums has written an SSDT for it. For macOS Ventura, you also need to inject the .kext version of the AppleIntel210Ethernet driver to make it work.
Instructions
- Download the zipped SSDT-I225V and unpack it
- Add it to
EFI/OC/ACPI
folder and config.plist - Additional steps (macOS 13 only):
- Add this kext
- Change
MinKernel
to22.0.0
so the kext is only injected into macOS Ventura!
- Add boot-arg
dk.e1000=0
(macOS Big Sur) ore1000=0
(macOS Monterey/Ventura) - Adjust Config
- Save the config and reboot
NOTE: Since I have flashed the modded firmware months ago I can't test this, but this fix has been reported as working successfully. But if this doesn't work for you, please use Option 1 instead.
- BIOS
- enable
VT-d
- Save and reboot into macOS
- enable
- macOS
- Open Network Settings: set Ethernet > IPv4 to
DHCP
and Advanced… > Hardware > Configuration toAutomatic
.
- Open Network Settings: set Ethernet > IPv4 to
- OpenCore and config.plist
- Mount your EFI
- Add
OpenShell
(included in OpenCorePkg) toEFI/OC/Tools
- Open your config.plist and change the following settings:
ACPI/Add
: Disable theDMAR
replacement tableACPI/Delete
: Disable the rule for dropping theDMAR
tableDeviceProperties
: DisablePciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
(put#
in front of it)Kernel/Add
: DeleteFakePCIID.kext
(if present)Kernel/Add
: DeleteFakePCIID_Intel_I225-V.kext
(if present)Kernel/Quirks
: UncheckDisableIOMapper
Misc/Tools
: AddOpenShell
NVRAM/Add/…-E41995C9F82
: Disable/remove boot-argdk.e1000=0
and/ore1000=0
- Save your
config.plist
- USB Flash Drive
- Download
I225-Vmod.zip
and extract it. - Copy
eeupdate64.efi
andI225MOD
to the root folder of a FAT32 formatted USB Flash Drive. - Restart the system but stay in the boot picker
- Download
- From the OpenCore GUI, select
OpenShell
(press Space Bar to show if it's hidden) - Type
fs0:
and hitEnter
to change the working drive (fs:0
is most likely your USB flash drive) - Type
ls
to list the content of the drive. In this casels0
is the correct drive letter: - Next, type
eeupdate64e /gui
and hitEnter
to run the tool. - Select the "Intel(R) Ethernet Controller I225-V" with the arrow keys and hit
Enter
: - In the next screen, select "Raw EEPROM - Extended":
- Next, press
F3
to dump the original firmware to your Flash Drive - Enter a name for the backup file and confirm it with "OK". There won't be a any confirmation dialog, though:
- Next, press
F4
to load the custom firmware file: - Now type
I225MOD
, pressENTER
and confirm loading the file.⚠️ Keep the original MAC Address when flashing the firmware (you will be asked). - Press
ESC
to exit and confirm saving. - Reboot the system into macOS Monterey.
If everything was done correct, you should now have working Internet connectivity. You may need to remove and add the network adapter again under System Preferences > Network.
For me, the I225-V worked immediately after flashing the EEPROM and rebooting. The device is recognized by Hackintool as "Ethernet Controller I225-V". If you are still facing issues afterwards, you could try attaching the I225-V to the AppleIntelI210Ethernet.kext
by using boot boot-arg dk.e1000=0
(Big Sur) or e1000=0
(Monterey).
If you can't access the Internet after flashing the custom firmware, remove the following preferences via Terminal and reboot:
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
sudo rm /Library/Preferences/SystemConfiguration/preferences.plist
If you still can't access the Internet, delete the following preferences followed by a reboot:
/Library/Preferences/com.apple.networkextension.necp.plist
/Library/Preferences/com.apple.networkextension.plist
/Library/Preferences/com.apple.networkextension.uuidcache.plist
- Custom Firmware and Guide by badbrain. Translated from german and modified by me.
- MacAbe for the SSDT-I225-V.aml