Contribute
Register

Intel Network adapters on OS X: Small Tree drivers

Why do you overcomplicating such thing? Why not just change subdev id in eeprom with ethtool under Linux? You can find which word is that in datasheet on Intel site http://www.intel.com/content/dam/ww...asheets/82599-10-gbe-controller-datasheet.pdf and seek for PCIe General Configuration Module. Worked like a charm on my X520
etimacias, thanks for the pointer. I've now got this working on my X520-DA2 card.

FOLKS, PROCEED WITH CAUTION. THIS WILL WRITE TO THE CARD EEPROM AND INCORRECT USAGE COULD RENDER YOUR CARD USELESS. THESE STEPS ARE SPECIFIC TO MY INTEL X520-DA2 CARD ONLY. HOWEVER, WITH SOME WORK THEY CAN PROBABLY BE ADAPTED TO WORK ON MOST INTEL NETWORK CARDS.


First step, boot off Ubuntu 16.04 LTS Desktop CD, run terminal and the following commands.
http://www.ubuntu.com/download/desktop

TO LOCATE ethX:
ifconfig

TO BACKUP EEPROM (DO THIS!):
ethtool -e ethX raw on > ethX.bin

COMMAND WE NEED TO USE TO CHANGE OFFSET VALUES:
ethtool -E ethX magic 0x<device id><vendor id> offset 0x<offset> value 0x<value>

TO DETERMINE VENDOR, DEVICE AND SUBSYSTEM IDs:
lspci -nn -vvv | grep Ethernet
01:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
Subsystem: Intel Corporation Ethernet Server Adapter X520-2 [8086:7a11]
01:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
Subsystem: Intel Corporation Ethernet Server Adapter X520-2 [8086:7a11]


NOW, TO FIND THE RELEVANT OFFSETS!
Intel datasheet linked above states the following, but it doesn't seem to apply to my card:
PCIe Sub-System ID - Offset 0x08
Bits:15:0
Name:Sub System ID
Default: 0x0

By running the following command and eyeballing the offsets I've discovered that these are the two values on my Intel X520-DA2 card:
ethtool -e eth1 | less
"0x0320: 03 00 1f 00 00 00 00 2b 03 13 11 7a 86 80 a6 10"

So, if we start at offset 0x0320 you would count 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f for each pair of digits.
The values we need to change are 11 at 0x032a and 7a at 0x032b. We can remove the 0 to shorten to 0x32a and 0x32b

So, for an Intel X520-DA2 (8086:10fb), to set subsys ID of 0x000a we would run:
sudo ethtool -E eth1 magic 0x10fb8086 offset 0x32a value 0x0a
sudo ethtool -E eth1 magic 0x10fb8086 offset 0x32b value 0x00
sudo ethtool -E eth2 magic 0x10fb8086 offset 0x32a value 0x0a
sudo ethtool -E eth2 magic 0x10fb8086 offset 0x32b value 0x00

In order to allow the ethtool to write to the EEPROM you need the magic value specific to your card, which is: 0x<device id><vendor id>
The command below will show these values:
lspci -nn -vvv | grep Ethernet
NOTE these are not the Subsystem values, they are the device and vendor IDs, in this case 10fb and 8086.
Here's a useful reference:
http://pci-ids.ucw.cz/read/PC/8086

Reboot and done! :headbang:

NIC2.jpgNIC.jpg
 
Last edited:
Did anyone ever try the drivers from Small Tree for OS X?
the-darkvoid, I don't have enough posts to PM you, but would it be worth adding my post to the first page wiki?
It allows Intel cards to use the Small Tree drivers without having to modify them nor add FakePCIID.kext.
 
UPDATE:
You will likely want to disable the Intel card's Boot ROM. I was unable to use BootCamp until I disabled it.

In order to do this you will need to download Intel's BOOTUTIL and run the following command on a Windows PC:
https://downloadcenter.intel.com/do...s-Boot-Utility-Preboot-Images-and-EFI-Drivers

bootutil -nic=1 -FLASHDISABLE
bootutil -nic=2 -FLASHDISABLE

See here for BOOTUTIL command switches:
https://www-ssl.intel.com/content/www/us/en/support/software/manageability-products/000005790.html
 
Muahhahaa much easier! My X520-DA1 had the same offset as yours DA2, original subsys was 0006 in my case for the X520-DA1.

Was about to start the whole process of faking the ID too. One less step for reinstalls, and as soon as I process the rest of my intel cards I'll have no reason at all not to spring for that 10GbE switch.
 
Muahhahaa much easier! My X520-DA1 had the same offset as yours DA2, original subsys was 0006 in my case for the X520-DA1.

@thanatos2k: I have the same card, X520-DA1, also subsys 0006. Can I please ask you to post the "sudo ethtool -E ..." commands you used? This would be a great help!

@Squuiid: Thank you!!!
 
@thanatos2k: I have the same card, X520-DA1, also subsys 0006. Can I please ask you to post the "sudo ethtool -E ..." commands you used? This would be a great help!

@Squuiid: Thank you!!!

Actually only need one line since 0006 already has 00 as the first bit and this card only has 1 port, so this is what I ran:

sudo ethtool -E enp0s0 magic 0x10fb8086 offset 0x32a value 0x0a

* Note the lack of "eth0" on mine; NIC showed up as enp0s0 not eth0.

Also worked on an EXPX9502FXSRGP5 fiber card (and also on the single port version of that card). The offsets were very different ofc but the process was the same.
 
Last edited:
Thanks @Squuiid
I was able to make this work with the same Intel NIC (X520-DA2). Only difference is that I'm using a real Mac Pro (2013) and the NIC is actually connected via Thunderbolt using the AKiTiO Thunder2 PCIe Box. So far this is the cheapest way of adding a 10Gbe NIC to a Mac.
 
Hello,
Did any of you with a i350-T2 succeeded in using the SmallTree drivers?
I managed to set the correct subsystem ID using ethtool, but the drivers don't recognize the card with the error:
kernel[0]: SmallTreeIntel82576 b4d0f0: Invalid EEPROM 0x000a 0x1521 0xffff 0xffff
kernel[0]: SmallTreeIntel82576 b4d0f1: Invalid EEPROM 0x000a 0x1521 0xffff 0xffff

My guess is that those extra 0xffff could refer to the OEM specific words available in the i350 eeprom (words 0x06, 0x07).
Thanks

Edit:
The kext evaluates two word values for each network port (located in some "reserved" areas of the eeprom).
If anyone needs them, please PM me. I did some reverse engineering of the kext code and came up with a program that calculates these values.
 
Last edited:
deleted
 
Last edited:
Here you go Gents! All working on 10.11 for the Intel 82576.
Thanks to Rehabman, FakePCID. just install all 3 kexts.
 

Attachments

  • Intel_82576_ETH.zip
    85.8 KB · Views: 340
Back
Top