Jump to content

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

5 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 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


Enable flash write capability on NIC

BootUtil -FE -ALL

Update NIC with EFI-ROM


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.


Share this post

Link to post
Share on other sites

I noticed that your update command is up=efi but there is also an option for up=efi64.  Do you know anything about this and is this applicable to a new sierra installation?

Share this post

Link to post
Share on other sites

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

Share this post

Link to post
Share on other sites

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! 

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Kaisar870
      How to Add APPLE RTC PATCH 
      Could you please explain how to add Apple RTC patch in open core Plist? TIA
    • By ErmaC
      Slice is glad to present a new EFI bootloader.

      Now version 2 rEFIt based.

      It is open source based on different projects: Chameleon, rEFIt, XNU, VirtualBox. The main is EDK2 latest revision.
      I also want to thank all who help Slice with the development. Credits and copyrights remain in the sources.
      There is a WIKI 
      Main features:

      If you have a question please provide outputs from DarwinDumper (formed from Trauma tool). Thanks Trauma!
      Continued by blackosx and STLVNUB.
      Post#2 CloverGrower - create Clover by yourself Post#3 Downloads Post#4 Installation of the bootloader Post#5 How to do UEFI boot Post#6 How to use - common words Post#7 Calculator for Automatic DSDT fix Post#8 Instructions for GraphicsInjector Post#9 ATIConnector patching Post#10 Any kexts patching with some Samples Post#11 CustomEDID Post#12 Hiding unnecessary menu entries Post#13 Instruction for DSDT corrections to do DeviceInjection works Post#14 Development Post#15 Themes Post#16 About kexts injection Post#17 Instructions for P- and C-states generator Post#18 Patching DSDT to get Sleep working Post#19 CPU settings and geekbench Post#20 ACPI tables loading Post#21 DSDTmini Post#22 Custom SMBios Post#23 F.A.Q. Post#24 iCloudFix Post#25 Using mouse. Post#26 How to make orange icons to be metallic Post#27 How to make software RAID (by Magnifico) Post#28 How to modify InstallESD.dmg (by shiecldk) Post#29 Config.plist settings Post#30 Using extra kexts and skipping kernelcache Post#31 Choosing EFI drivers Post#32 Configuration files Post#33 Automatic config.plist creating Post#34 Custom DSDT patches Post#35 How to do sleep/wake working with UEFI BOOT Post#36 DeviceID substitution (FakeID) Post#37 Using Custom OS Icons Post#38 Hibernation Post#39 Floating regions Post#41 Property List Editor Post#42 Blocking Bad Kext Post#43 AAPL,slot-name Post#44 FakeCPUID for unsupported CPU Post#45 Multiple Boot Options - to write into UEFI BIOS boot menu Post#46 How to install Windows UEFI Post#47 How to speedup Clover boot Post#48 Info.plist patching Post#49 Arbitrary device injection Post#50 Non-Standard Legacy Boot Files Post#51 Reboot to Windows UEFI from Mac OSX Post#52 Deprecated Features, part 1 Post#53 Using UDK2018 Post#54 Device Properties Post#55 Scalable themes Post#56 How to search Clover mistakes (bisection) Post#57 Deprecated features, part 2 Post#58 Programming Code Style -----------------
      I edited all posts in the thread to correspond to actual Clover revision.
      Please install Clover at least 2652 and use new instructions.
    • By boodysaspie
      Noob question, probably in the wrong sub ... Apologies if so.
      I want to share an SSD between two PCs. Hardware is very similar, except that PC1 has an Intel i217 network chip and PC2 has a Realtek 8111GR.
      I've injected IntelMausi.kext for PC1 which works fine. Can I also inject Realtek8111.kext and hope that the OS will sort out which it prefers, or should I have two EFI folders?
      Gigabyte GA-Z87-D3HP
      Asus Z97-K/CSM
    • By DavideNovice
      Dear All,  first of all sorry for any silly question but I am new in the apple environment.   
      I have a bootable USB containing Mojave 10.14 already installed,  this USB boot from my normal PC (MBO : MSI Z97 G7,  CPU:I7 4790K, GPU:GTX108 Ti, STORAGE:SSD 860 Samsung), but I would like to instal on a old server SUPERMICRO (MBO :X8DTN+-F , CPU 2 x XEON X5680 , GPU : GTX1070TI, STORAGE: SSD 850 SAMSUNG 500GB) . 
      The problem is that the SUPERMICRO BIOS (altredy updated) do not support UEFI but only LEGACY, for this reason my USB key does not boot. 
      Is there any way in which I can use this key (even cloning on a new one) to obtain a bootable for LEGACY PC ?  
      I am not able to build another key since I bought this key already done last year, and I do no have enought skill to download Mojave, Clover, Clover config, etc. .. to make a new bootable usb..  If someone can help me I will be very grateful. 
      Thanks in advance
    • By pilo2300
      Hi, I'm receiving these two errors before the system automatically reboots.
      36:296 00:063 OCSMC: SmcReadValue Key 4D535463 Size 1 36:351 00:054 OCSMC: SmcReadValue Key 4D534163 Size 2  
      Using OpenCore 0.5.7, Mojave 10.14.6 installed successfully (from USB, but have not gone through OS setup ie. 'select your country' screen yet) but now selecting the Mojave drive in the boot picker results in the above error.
      Hardware is Gigabyte H77-DS3H, Core i7 3770 (Ivy Bridge), Radeon Sapphire RX 580 Pulse, 16GB DDR3 ram.
      I had a fully working 10.14.4 install running OC 0.5.6 prior to this.

      OpenCore log and config.plist (with SMBIOS serials etc removed) attached - any help greatly appreciated.
      Thank you.