Jump to content

[GUIDE] Native Intel CT NIC 82574L (UEFI, FastBoot)


6 posts in this topic

Recommended Posts

Hi there,

This guide will enable your Intel addon NIC (EXPI9301CT) to fully support the Apple drivers and behave like a native Apple NIC. I wanted a solution for my trusted Intel NIC without having to use any third party kexts to get it working and also wanted it to be fully UEFI compatible. So I researched a little and would like to share my results in this short guide.

Caution: This guide will only work for Intel Desktop CT NICs with PCI device ID 10D3. Also I only used OSX Yosemite to verify the results, but it should work in Mavericks, too.

1) Optional: Remove third party kext for the NIC
Please remove any other third party kext you may have installed for your Intel NIC. We do not want any conflicts here later on.

2) Create a bootable DOS USB drive
I used Rufus Boot USB Disk with an Image of Win98 DOS bootfiles to create it under Windows. The original ISO for the Win98 DOS Boot files can be found here http://goo.gl/WOaQi (Windows 98 DOS Boot). Any other DOS compatible Boot environment should work, too.

3) Download Intel Preboot files
PREBOOT.EXE from http://goo.gl/ppSRzo

4) Copy the necessary files to the USB drive
Extract the the download and copy the following files the bootable DOS USB drive

Copy BOOTIMG.FLB from PREBOOT\APPS\BootUtil
Copy BootUtil.EXE from PREBOOT\APPS\BootUtil\DOS

5) Restart and boot from the USB-Stick
You will temporarily have to change the UEFI-BIOS settings to be able to boot from a DOS environment.
I had to set the following options:

Legacy USB = Enable
SecureBoot = Other
FastBoot = Off

6) Flash the NIC with EFI-ROM
After Booting from the DOS USB drive please use the following commands in the given order.
Backup the original ROM

BootUtil -SAVEIMAGE -FILE=Backup.FLB

Enable flash write capability on NIC

BootUtil -FE -ALL

Update NIC with EFI-ROM

BootUtil -UP=EFI -ALL -FILE=BOOTIMG.FLB

7) Change PCI device ID with ethtool
Congratulations, your Intel NIC is now UEFI compatible and should already show up in your UEFI BIOS. We now will have to change the device ID from the NIC, so that OSX can use the native driver. Boot from a Linux Live Boot environment (e.g. Ubuntu) and change the PCI device ID from 10D3 to 10F6 with ethtool. Please ensure your Intel NIC is eth0. We do not want to patch any other NICs by mistake.

sudo -s
apt-get install ethtool
ethtool -E eth0 magic 0x10D38086 offset 0x16 value 0x00
ethtool -E eth0 magic 0x10D38086 offset 0x17 value 0x00
ethtool -E eth0 magic 0x10D38086 offset 0x1A value 0xF6

8) Start OSX and enjoy your native Apple Intel NIC :thumbsup_anim:
Reboot and don't forget to change the UEFI-Settings back from step 4 to their original values. After this you can start OSX and the NIC should be recognized. Windows will pick up the NIC without any problems, so no worries if you want to switch back to Windows sometime later on.

Disclaimer: Please note, this procedure solved a very specific problem for me and the guide is certainly not perfect. I do not take any responsibility for anything that may go wrong if you follow it. I hope this guide may be useful for someone and please feel free to give any suggestions that may improve it.

Cheers,
Maroder

  • Like 6
  • Thanks 1
  • 1 year later...
  • 1 year later...
  • 9 months later...

At 0x16 and 0x17, he is writing 0x00 -- to zero out the PCI Subsystem Device ID, matching the 82574L on the MacPro4,1 and MacPro5,1 so that the vanilla driver picks it up.

 

I ignored the whole EFI-ROM flashing bit, and went straight for ethtool.  This worked fine for me on both BIOS and uEFI Hackintoshes -- I have not tried on a real Mac Pro.

 

Not only did it work on both of my EXPI9301CT cards, it also worked with the onboard 82574L on an Intel DX79SI motherboard.

 

I moved onto a HP Z820 workstation which has an 82574L onboard, and that wasn't quite as easy.  After modifying the first three values, the NIC still failed to show up in Mojave or High Sierra.  I flipped back to Linux, ran "lspci -nn -vv | less", located the 82574L and lo and behold, HP changed the PCI Subsystem Vendor ID from Intel to their own!   I dumped the ROM (ethtool -e eth0 | less) and looked for the PCI Subsystem Vendor ID, expecting to find it next to the Device ID.  And so it was.  Two additional value replacements are therefore required for vanilla operation in macOS:

 

ethtool -E eth0 magic 0x10D38086 offset 0x18 value 0x86
ethtool -E eth0 magic 0x10D38086 offset 0x19 value 0x80

 

I don't endorse or recommend that you do this to YOUR onboard 82574Ls... but it's working great for me!

Edited by feckn_eejit
  • 2 months later...

This is an absolute wonder of a post.

Thanks OP!

 

Got my adapter a few days ago and modified it. Before this I always had troubles logging into iCloud and iTunes during initial os config or get iMessage and FaceTime to work properly. 

 

Thank you! 

  • 2 years later...

Worked great for dual on-board NICs on a Super Micro X8DT6-F board

Change DevID
# ethtool -E eth0 magic 0x10D38086 offset 0x1A value 0xF6

Change Subsystem vendor and device ID
# ethtool -E eth0 magic 0x10D38086 offset 0x16 value 0x00
# ethtool -E eth0 magic 0x10D38086 offset 0x17 value 0x00
# ethtool -E eth0 magic 0x10D38086 offset 0x18 value 0x86
# ethtool -E eth0 magic 0x10D38086 offset 0x19 value 0x80

 

Ran this on both of the NICs which in Ubuntu Live 20.10 they were named "enp3s0" and "enp4s0"

 

From this: 

03:00.0 Ethernet controller [0200]: Intel Corporation 82574L Gigabit Network Connection [8086:10d3]
	Subsystem: Super Micro Computer Inc Device [15d9:10d3]
04:00.0 Ethernet controller [0200]: Intel Corporation 82574L Gigabit Network Connection [8086:10d3]
	Subsystem: Super Micro Computer Inc Device [15d9:10d3]

To this:

03:00.0 Ethernet controller [0200]: Intel Corporation 82574L Gigabit Network Connection [8086:10f6]
	Subsystem: Intel Corporation Device [8086:0000]
04:00.0 Ethernet controller [0200]: Intel Corporation 82574L Gigabit Network Connection [8086:10f6]
	Subsystem: Intel Corporation Device [8086:0000]

Then rebooted to Mojave which detected and loaded them both up with no issue, hopefully this will work better than AppleIntelE1000e.kext which was having packet loss and interface reset issues. 

Screen Shot 2021-03-04 at 3.44.20 PM.jpg

Edited by ludacrisvp
×
×
  • Create New...