dortania/bugtracker

Kernel Patch for I225 Ethernet Controller no longer works in macOS 11.4

5T33Z0 opened this issue · 56 comments

  • Guide(s) in question: Cometlake -> Kernel > "Fixing I225-V controllers"
  • Link to page(s) with the issue: https://dortania.github.io/OpenCore-Install-Guide/config.plist/comet-lake.html#patch-2
    Since Big Sur version 11.4 Update this Patch no longer works on Gigabyte Z490 Vision G. I guess the Vision D is probably affected too
  • Fix: as of now, I reverted back to FakePCCID and FakePCIID_Intel_I225-V.kext which work for now but don't work in macOS 12.0 beta. So having a somewhat persistent Kernel patch which works on Z490 Platforms would be nice.

Thanks for the great guide!

EDIT: Changing DeviceProperties > device-id" from F2150000(Data) to0x15f28086` (String) → Fixes Ethernet on Big Sur 11.4. But unfortunately this is not working in Monterey yet. But Progress at least.

As far as I know, this is garbage. The explanation is here: https://www.applelife.ru/posts/944246/. On newer GA boards enabled VT-d sometimes breaks most network cards, so either DisableIoMapper should be enabled, or VT-d needs to be disabled in the BIOS settings.

It does not work in Monterey, wheter you think it is "garbage" or not!

You mentioned 11.4 in the issue and the garbage reference was to your device-id value. As for macOS 12, it is in early beta stage, and no beta support is provided for obvious reasons. To be fair, Monterey may have dropped kext driver indeed.

Hi there,

I would like to chime in on this issue in particular. I believe this patch is indeed not working in 11.4 and it is completely unrelated to Vt-d.

I have an asus prime z490A with this I225-V network controller. This patch only works on 11.3 and below.

After updating 11.4, with the same patches applied, the machine will panic during boot or immediately after login, or it will freeze altogether. It will boot with no issue if I unplug the Ethernet cable completely.

I believe the fakepccid kext solution still works however.

There is more info here about my exact symptoms from another user:
https://reddit.com/r/hackintosh/comments/mx1mp3/big_sur_114_rx_6800_success_10900_asus_prime/

And here is a post outline potential reason why it broke from 11.4 beta 1

https://www.tonymacx86.com/threads/gigabyte-z490-vision-d-thunderbolt-3-i5-10400-amd-rx-580.298642/page-598#post-2247206

The Kernel Patch in the Guide is for Catalina and Big Sur up to 11.3. In 11.4 it is indeed no longer required:

  1. Disable the Kernel Patch for com.apple.driver.AppleIntelI210Ethernet
  2. Go to DeviceProperties > PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) and change the Device ID to F3150000

The panic is specific to Gigabyte boards. Disabling VT-d fixed it for some setups, but perhaps not all. The patch works fine on ASUS with I225, but you can disable it and remove the DeviceProperties addition. It should work fine with the DEXT driver in 11.4.

The Kernel Patch in the Guide is for Catalina and Big Sur up to 11.3. In 11.4 it is indeed no longer required:

  1. Disable the Kernel Patch for com.apple.driver.AppleIntelI210Ethernet
  2. Go to DeviceProperties > PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) and change the Device ID to F3150000

Okay so after all day of trial and error, the only solution that worked for me was the suggestion you made in the original post:
Changing DeviceProperties > device-id from F2150000(Data) to 0x15f28086 (String) This fixed ethernet and stopped all Kernel panics and freezes.

Upon simply removing DeviceProperties and kernel patch as written in the guide, the com.apple.driver.AppleIntelI210Ethernet loads, but will cause KP immediately when plugged and receives an IP address.

Adding DeviceProperties > device-id F2150000(Data) results in no change and still KP.
Adding DeviceProperties > device-id F3150000(Data) results in no change either and still KP.

To be perfectly clear I do not have any fakepciid kexts installed.

Im not sure what the issue is, but either way the patches in the guide as written do not work for the Asus prime Z490A on 11.4

Please let me know if there is something else I should be doing instead.

Edit: @5T33Z0 Okay so thanks to you and stumbling across this issue it appears the fix for 11.4 is as simple as changing my DeviceProperties > PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0) device-id to F2158680 instead of F2150000 as the guide suggests.

I know this isn't a help forum but thanks for the replies guys.

Edit 2: So this patch also fixed the ethernet for the i225v on Monterey beta 1 as well! Woohoo!

Are you sure you do not have FakePCIID or anything?

Are you sure you do not have FakePCIID or anything?

Good evening vit,
today I installed macOS on a Asus Z490-I with a I225-V NIC and got the LAN working by simply changing the device-id of the device to F2158680 as suggested by the comment above yours. The installation is clean and works flawlessly without any interruption of the internet connection with the LAN cable

Are you sure you do not have FakePCIID or anything?

Thanks for getting back to this thread! I'm 100% positive. I have a completely bare bones config that is done exactly according to the comet lake guide.

If I follow the guide as written, the Asus z490A will not boot anything above 11.3 if the cable is plugged in. It will crash and kernel panic relating to AppleIntelI210Ethernet

The only changes needed to be made are to remove com.apple.driver.AppleIntelI210Ethernet kernel patch and To change device-id from F2150000 to F2158680

Attached is current config as proof. This is currently being written from Monterey Beta 1 using I225v Ethernet.

config.plist.zip

That looks a bit strange, can you provide the IOReg? The patch on com.apple.driver.AppleIntelI210Ethernet is different in 11.4, and by default DEXT driver should load, so it is getting a bit strange.

That looks a bit strange, can you provide the IOReg? The patch on com.apple.driver.AppleIntelI210Ethernet is different in 11.4, and by default DEXT driver should load, so it is getting a bit strange.

Sure. Hopefully this is the right file. Let me know if you need something else.

Miles’s iMac.zip

That looks a bit strange, can you provide the IOReg? The patch on com.apple.driver.AppleIntelI210Ethernet is different in 11.4, and by default DEXT driver should load, so it is getting a bit strange.

Just for good measure, here is the IOReg from Monterey as well although I know were not discussing that here.
Miles’s iMacMonterey.zip

Ok, what changed in 11.4 is the following:

  • com.apple.driver.AppleIntelI210Ethernet no longer needs patches to work with I225 and supports it natively. So the patch should really have MaxKernel 20.4.0.
  • com.apple.DriverKit-AppleEthernetE1000 is the new DEXT driver and the default match for I225, which hangs on Gigabyte boards (works just fine on ASUS).
  • To avoid matching com.apple.DriverKit-AppleEthernetE1000 on I225 you inject an invalid device-id value into your LAN. instead of F2158680 it can literally be anything, e.g. 00 00 00 00.

Please confirm the last part. CC @khronokernel

Awesome. Thanks for taking a look at this. I have confirmed changing device-id to F0 00 00 00 does work. Attached IOReg.

I feel it's worth noting that completely removing DeviceProperties > PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) altogether results in panic.

Miles’siMac114.zip

Instead of injecting <00 00 00 00> you can add dk.e1000=0 boot argument. This is cleaner, as it will give you a working solution for both 11.3 and 11.4.

Woohoo! That bootarg does the trick. Thank you so much.

I have deleted the DeviceProperties completely. Ethernet is recognised natively as device-id F3150000 and the kernel panic is gone. Attached IOReg.

Miles’siMacagain.zip

I can confirm: disabling the DeviceProperties for PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) and using boot-arg dk.e1000=0 instead works on my Gigabyte Z490 Vision G on Big Sur 11.4.

Since macOS Catalina still requires the Device Property entry with Device ID F2158680 and the Kernelpatch to rename it I would disable these entries instead of deleting them.

EDIT: I think I found a solution which works for both Catalina and Big Sur:

  • Leave the Device Property PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) enabled
  • Use Device ID F2158680
  • Enable the Kernel Patch but change MaxKernel to 20.4 so it only applies to Catalina and Big Sur up to 11.3
  • boot-arg dk.e1000=0 then takes care of ethernet for Big Sur 11.4+

Catalina boots a bit slower but you have Internet on both OSes using the same config.plist

Use Device ID F2158680

This is not strictly correct for both Catalina and Sur. It should be F2150000. Will solve the slow boot issues.

Also need to add Count = 1 to the patch, as @khronokernel forgot that initially.

@dhinakg, @khronokernel can you update the manual?

Well, IO Registry Explorer says F2158680/F3158680 is the correct ID – for my board at least. Anyway, F2150000/F3150000 works also. But thanks for the tip about the Patch Count.

Use Device ID F2158680

This is not strictly correct for both Catalina and Sur. It should be F2150000. Will solve the slow boot issues.

Also need to add Count = 1 to the patch, as @khronokernel forgot that initially.

@dhinakg, @khronokernel can you update the manual?

Good morning vit.
Please correct me if I'm wrong.
In order to make the I225-V work on macOS Catalina/Big Sur you have to:

  • Leave the Device Property PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) (or PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)) enabled
  • Use Device ID F2150000
  • Enable the Kernel Patch but change MaxKernel to 20.4 so it only applies to Catalina and Big Sur up to 11.3, and Count to 1
  • boot-arg dk.e1000=0 then takes care of ethernet for Big Sur.

Am I right?

Yes, the DevicePath may be different (e.g. I have 2 I225), but otherwise this is correct.

The 8086 part is part of vendor-id on macOS. It should normally be masked out, but this is not guaranteed. So better not to rely on known to be unsupported things.

Yes, the DevicePath may be different (e.g. I have 2 I225), but otherwise this is correct.

yes of course. Just a stupid question: can the PciRoot be detected via a SysReport dump eventually? Or should we test-n-retry with the right PciRoot paths?
Thanks ^^

I have z590i Vision D and i225-v worked with different ways: two kexts and fake pci-id, or just kernel patch and fake pci-id.
Then I removed all methods for 11.4 BS and it swill continued to work.
For ASRock B550 Phantom gaming ITX I could not get the card to work. System would freeze and crash after lan cable is connected. What fixed it was a boot argument dk.e1000=0. Now I only have this entry and nothing else. Both systems have a working LAN interface set to Auto and connected at 2.5 Gb speed.

There has been a security update for Catalina 10.1.5.17 recently. New Build is: 19H1417.

After this update, the combination of DeviceProperty (device-id F2150000) and Kernel Patch (base __Z18e1000_set_mac_typeP8e1000_hw) for the I225-V Controller does no longer work.

It causes crashes close to the end of the boot process. Disabling the PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) resolves the crashing but then Ethernet doesn't work of course.

I have tested this with several back-ups of older OpenCore EFIs which I know are working for Catalina, so I can pretty much exclude a configuration error as a source of the problem.

Use Device ID F2158680

This is not strictly correct for both Catalina and Sur. It should be F2150000. Will solve the slow boot issues.
Also need to add Count = 1 to the patch, as @khronokernel forgot that initially.
@dhinakg, @khronokernel can you update the manual?

Good morning vit. Please correct me if I'm wrong. In order to make the I225-V work on macOS Catalina/Big Sur you have to:

  • Leave the Device Property PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) (or PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)) enabled
  • Use Device ID F2150000
  • Enable the Kernel Patch but change MaxKernel to 20.4 so it only applies to Catalina and Big Sur up to 11.3, and Count to 1
  • boot-arg dk.e1000=0 then takes care of ethernet for Big Sur.

Am I right?

Thanks a lot! I can connect to Ethernet now, there is one problem though. When i connect to ethernet i lose connection after about 5 seconds. Any solutions for that?

I am on 11.6 btw

@juicystick F2150000 is for Catalina only. Disable the device property and the kernel patch and use the boot-arg only.

Check the Hardware Tab of your internet connection (in System Settings). Make sure it's set to "Full Duplex, flow-control", and not energy-efficient.

Didn't work for me. I can't install mac os in the recovery since it needs network connection.

Okay so for all I225-V NIC users have trouble with keep disconnecting ethernet: set the BaseT to 1000 and Full-Duplex. I used the command: "ifconfig en0 media 1000baseT mediaopt full-duplex"
After that my Ethernet worked perfectly fine. (ASUS Strix B550-A Gaming, 5600x)

No chance on gigabyte z490 boards on Monterey. I bought a network card when I got so annoyed trying to fix this.

I have the issue now that i am stuck in a Bootloop. After i pressed install it normally installs mac os. When it restarts the first time though, i have the problem that i keeps rebooting after rebooting. Any ideas?

@juicystick i got this and it works OOB on monteray

I have the issue now that i am stuck in a Bootloop. After i pressed install it normally installs mac os. When it restarts the first time though, i have the problem that i keeps rebooting after rebooting. Any ideas?

I got a gigabyte z490 Aorus pro ax (last bios), and with F2150000 in device property, and boot-arg dk.e1000=0 : it work for me in Monterey 12.2.1
(don't use kernel patch, that was needed for Catalina)

In Monterey 12.3, that do not work anymore :/

In Monterey 12.3, that do not work anymore :/

Try boot arg
e1000=0

info here

In Monterey 12.3, that do not work anymore :/

Try boot arg e1000=0

info here

Thanks man!
That did it

Is there any reason why a I225-LM (3) wouldn't be natively working out of the box with just the boot arg e1000=0 on Monterey?

IO Reg shows the device ID as F2150000 without any patching, the Nic shows up under system info/system preferences/network. Link light turns on but it just won't establish a connection/get an IP address or even show that the NIC is connected in macOS.

anyone use 1225-v in monterey 12.3.1?
my ethernet always cable unplugged(if use e1000=0) or self assigned (if not use e1000=0)

Yes it is working for me with with e1000=0 (z490 gigabyte)
But I leave F2150000 in devices properly, within OC.
I also use the method to write the correct ROM/Mac address, but I don't think it's related to get a working Nic.
I read somewhere that there may be different revision of this Nic, some works, others don't.....

tftio commented

Question -- I have an MSI Z590-A Pro, with a I225-V onboard NIC. Everything in 12.3.1 works correctly, except for the Ethernet. My understanding on how to get this working is:

  1. Edit the DeviceProperties/Add/PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) to be (type data) F2150000;
  2. add the boot flag e1000=0;
  3. profit!

Do I need any kexts or otherwise?

This thread is very confusing due to people talking about different OS and configurations so I'll share my working configuration for Monterey 12.5. I have a Z590 Aorus Ultra with a I225-V onboard NIC.

  • I set my device property to PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) -> device-id: F2150000
  • I left the Kernel patch in place for I225-V (disabled: false) as it doesn't apply to Monterey anyway
  • I set my boot arg to e1000=0
  • In the advanced settings of my ethernet I set the hardware tab to 1000baseT, "full-duplex, flow-control", Standard (1500)

Now it is working and no kernel panics :)

I have a Gigabyte Vision G and configured it now under Opencore 0.8.3 as follows:

  • Device property:PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) -> device-id: F3158680
  • I set boot arg to e1000=0

The system report shows me: image

Now I have to see, whether ethernet is constantly working and doesn't drop from time to time as it happened in the past.

This thread is very confusing due to people talking about different OS and configurations so I'll share my working configuration for Monterey 12.5. I have a Z590 Aorus Ultra with a I225-V onboard NIC.

  • I set my device property to PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) -> device-id: F2150000
  • I left the Kernel patch in place for I225-V (disabled: false) as it doesn't apply to Monterey anyway
  • I set my boot arg to e1000=0
  • In the advanced settings of my ethernet I set the hardware tab to 1000baseT, "full-duplex, flow-control", Standard (1500)

Now it is working and no kernel panics :)

This also worked for me. I'm on 12.6.2 with a z590 vision d and I followed the guide as-is just like you and only changed my hardware ethernet settings to "full duplex, flow control". This essentially just removes the energy-efficient ethernet option from what it was configuring automatically as. Selecting full duplex only also seemed to work, I'm not sure what the difference between using flow control or not is, or if this has to do with your own network.

The solutions didn't work for me. I tried this and it worked. Just writing here for others who are searching for a solution and lands here from google.

In Ventura you don't need to to anything for this NIC to work.
The only thing, is to replace the DMAR table. If the OEM got reserved regions, and you need more than one NIC.

In Ventura you don't need to to anything for this NIC to work. The only thing, is to replace the DMAR table. If the OEM got reserved regions, and you need more than one NIC.

Can you please explain or send a link how to do this? I already flashed an eeprom to my NIC (btw: I only have one I225-V) via this tutorial but it didn't work. Option1 worked though.

Edit: I have a B550-F Asus wifi motherboard.

In Ventura you don't need to to anything for this NIC to work. The only thing, is to replace the DMAR table. If the OEM got reserved regions, and you need more than one NIC.

Can you please explain or send a link how to do this? I already flashed an eeprom to my NIC (btw: I only have one I225-V) via this tutorial but it didn't work. Option1 worked though.

Edit: I have a B550-F Asus wifi motherboard.

In the link you send it's said to replace the DMAR table, but not explained.
https://elitemacx86.com/threads/how-to-fix-dmar-table-on-macos-memory-mapping.964/

I cannot see a DMAR entry in MaciASL, I have an AMD CPU with no Vt-d. But AMDs SVM is enabled in the bios. Nevertheless Ethernet works with the link I posted with the Apple210... kext and SSDT-I225.aml so I am happy.

In Ventura 13.2.1, i added AppleIntelI210Ethernet.kext and boot-args 'e1000=0', set Ethernet 1000baseT, "full-duplex", Standard (1500), it working.
But when i boot os, i got Kernel panic once.

Let me try add device property to PciRoot(0x0)/Pci(0x1C,0x2)/Pci(0x0,0x0) -> device-id: F3150000.
becuse i disable this property before then.

My setup is Gigabyte Z490 Aorus Pro AX (with onboard I225-V NIC) running Ventura 13.6 Wasn't working with the patches then came across this kext...

https://github.com/SongXiaoXi/AppleIGC

Now working rock solid for me with no added device property and no boot arguments.

Hope this helps someone.

Thanks for sharing! So you basically added the kext to the efi and no other entries at all?

Yeah. Just added the kext. No entry for device property and no boot argument.

works for me on my Motherboard with Ventura (Installed 13.6.0 and updated from MacOS to 13.6.1 - still all good)

The solutions didn't work for me. I tried this and it worked. Just writing here for others who are searching for a solution and lands here from google.

Thanks for sharing! This works perfectly for Sonoma on a Z490-I while the other options above did not work for me 👏 🎉