FOLKS, THIS WILL WRITE TO THE CARD EEPROM AND INCORRECT USAGE COULD RENDER YOUR CARD USELESS. THESE STEPS ARE SPECIFIC TO MY INTEL X520-DA2 10GbE CARD ONLY. HOWEVER, WITH SOME WORK THEY CAN BE ADAPTED TO WORK ON MOST INTEL NETWORK CARDS, BOTH 1GbE and 10GbE.
PROCEED AT YOUR OWN RISK.
Intel's own network driver page states:
Intel adapters from Small Tree Communications are uniquely designed and validated on Apple platforms with OS X* drivers. Software and drivers for Mac OS X* for retail versions of Intel® Ethernet Adapters are not available from Intel or from Small Tree Communications.
In order for a retail Intel NIC to be able to use the Small Tree macOS drivers it must have a Subsystem ID of 000a, as stated here:
https://www.small-tree.com/support/...now-which-Gigabit-driver-to-install-on-my-Mac
Fortunately, a card's Subsytem ID can be modified by using the 'ethtool' command under Linux.
The following is how I modified my card.
First step, download and install Small Tree macOS NIC drivers.
https://small-tree.com/support/downloads/
Next, download and boot off of Ubuntu 16.04 LTS Desktop CD and run terminal.
https://ubuntu.com/download/alternative-downloads
Don’t use a newer version of Ubuntu as the newer version of ethtool does not work.
TO LOCATE ethX:
ifconfig
TO BACKUP EEPROM (DO THIS!):
sudo ethtool -e ethX raw on > ethX.bin
COMMAND TEMPLATE WE NEED TO USE TO CHANGE OFFSET VALUES:
sudo 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 for my card states the following, but it doesn't seem to be correct! Other datasheets may prove more useful, it's definitely worth checking them first. Look under the 'EEPROM Hardware' section of the datasheet:
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 the values below are actually the two relevant values on my Intel X520-DA2 card. This is the subsystem ID we're after (notice the vendor id of 86 80 which follows it):
sudo 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)(8086:7a11), 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 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 my case 10fb (X520) and 8086 (Intel).
Here's a useful reference:
http://pci-ids.ucw.cz/read/PC/8086
Reboot and done!
UPDATE:
Make sure you disable SMB signing if you require full performance when connecting to a Windows SMB share.
https://support.apple.com/en-us/HT205926
I've now tested on an Intel X540-T1 and it also works fine.
Ethernet controller [0200]: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 [8086:1528] (rev 01)
Subsystem: Intel Corporation Ethernet Converged Network Adapter X540-T1 [8086:0002]
sudo ethtool -E ens4 magic 0x15288086 offset 0x48e value 0x0a
One more thing. I was using Belkin CAT6 UTP 1m ethernet cables and they weren't good enough for 10GbE. I've since changed them for CAT7 and can now max out 10GbE with ease. Check your cables, 10GbE is not forgiving.
PROCEED AT YOUR OWN RISK.
Intel's own network driver page states:
Intel adapters from Small Tree Communications are uniquely designed and validated on Apple platforms with OS X* drivers. Software and drivers for Mac OS X* for retail versions of Intel® Ethernet Adapters are not available from Intel or from Small Tree Communications.
In order for a retail Intel NIC to be able to use the Small Tree macOS drivers it must have a Subsystem ID of 000a, as stated here:
https://www.small-tree.com/support/...now-which-Gigabit-driver-to-install-on-my-Mac
Fortunately, a card's Subsytem ID can be modified by using the 'ethtool' command under Linux.
The following is how I modified my card.
First step, download and install Small Tree macOS NIC drivers.
https://small-tree.com/support/downloads/
Next, download and boot off of Ubuntu 16.04 LTS Desktop CD and run terminal.
https://ubuntu.com/download/alternative-downloads
Don’t use a newer version of Ubuntu as the newer version of ethtool does not work.
TO LOCATE ethX:
ifconfig
TO BACKUP EEPROM (DO THIS!):
sudo ethtool -e ethX raw on > ethX.bin
COMMAND TEMPLATE WE NEED TO USE TO CHANGE OFFSET VALUES:
sudo 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 for my card states the following, but it doesn't seem to be correct! Other datasheets may prove more useful, it's definitely worth checking them first. Look under the 'EEPROM Hardware' section of the datasheet:
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 the values below are actually the two relevant values on my Intel X520-DA2 card. This is the subsystem ID we're after (notice the vendor id of 86 80 which follows it):
sudo 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)(8086:7a11), 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 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 my case 10fb (X520) and 8086 (Intel).
Here's a useful reference:
http://pci-ids.ucw.cz/read/PC/8086
Reboot and done!
UPDATE:
Make sure you disable SMB signing if you require full performance when connecting to a Windows SMB share.
https://support.apple.com/en-us/HT205926
I've now tested on an Intel X540-T1 and it also works fine.
Ethernet controller [0200]: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 [8086:1528] (rev 01)
Subsystem: Intel Corporation Ethernet Converged Network Adapter X540-T1 [8086:0002]
sudo ethtool -E ens4 magic 0x15288086 offset 0x48e value 0x0a
One more thing. I was using Belkin CAT6 UTP 1m ethernet cables and they weren't good enough for 10GbE. I've since changed them for CAT7 and can now max out 10GbE with ease. Check your cables, 10GbE is not forgiving.
Last edited: