Contribute
Register

Intel Network adapters on OS X: Small Tree drivers

Joined
Jun 9, 2013
Messages
10,736
Motherboard
Gigabyte GA-H77N-WIFI
CPU
i7-3770
Graphics
HD 4000
Mac
  1. MacBook
  2. Mac mini
Mobile Phone
  1. Android
Do you have the NC360T running in bond or link aggregation mode? If so, has it been stable for you?

When I tried aggregation mode with AppleIntelE it caused a instant reboot.
 
Joined
Feb 23, 2017
Messages
2
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
Greetings:



I am using a Asus X99-E-10G WS that has 2 Intel X550-AT2 10 Gigabit LAN



Installed in S/L/E (from https://bitbucket.org/RehabMan/os-x-fake-pci-id/downloads/, *2017-0527 version) FakePCIID.kext, FakePCIID_Intel_GbX.kext (edited Info.plist - IOPCIPrimaryMatch to include 0x15638086) and SmallTreeIntel8259x.kext attached to the beginning of this thread (edited Info.plist - IOPCIPrimaryMatch to include 0x15638086)



dpcimanager recognizes the two NIC as Vendor 8086, Device 1563, Sub Vendor 8086, Sub Dev 0000, when “clicked to find”, it points to FakePCIID in S/L/E



Attached is the .ioreg



About this Mac, System Report, Hardware, Ethernet Cards (no card installed), PCI (there was an error while gathering PCI device information)



sudo cat /var/log/system.log does not have any entry on FakePCI* or Small*



kextstat revealed one entry on FakePCIID
 

Attachments

  • X99_X550.ioreg
    3.4 MB · Views: 209
Joined
Jun 9, 2013
Messages
10,736
Motherboard
Gigabyte GA-H77N-WIFI
CPU
i7-3770
Graphics
HD 4000
Mac
  1. MacBook
  2. Mac mini
Mobile Phone
  1. Android
Greetings:



I am using a Asus X99-E-10G WS that has 2 Intel X550-AT2 10 Gigabit LAN



Installed in S/L/E (from https://bitbucket.org/RehabMan/os-x-fake-pci-id/downloads/, *2017-0527 version) FakePCIID.kext, FakePCIID_Intel_GbX.kext (edited Info.plist - IOPCIPrimaryMatch to include 0x15638086) and SmallTreeIntel8259x.kext attached to the beginning of this thread (edited Info.plist - IOPCIPrimaryMatch to include 0x15638086)



dpcimanager recognizes the two NIC as Vendor 8086, Device 1563, Sub Vendor 8086, Sub Dev 0000, when “clicked to find”, it points to FakePCIID in S/L/E



Attached is the .ioreg



About this Mac, System Report, Hardware, Ethernet Cards (no card installed), PCI (there was an error while gathering PCI device information)



sudo cat /var/log/system.log does not have any entry on FakePCI* or Small*



kextstat revealed one entry on FakePCIID

You need to be very careful when compile a kext. Hope you've used Xcode? Can destroy a kext and its permissions if you don't know what your doing. FYI Kexts go in L/E 10.11+.
 
Joined
Feb 23, 2017
Messages
2
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
You need to be very careful when compile a kext. Hope you've used Xcode? Can destroy a kext and its permissions if you don't know what your doing. FYI Kexts go in L/E 10.11+.

Hello:

I did not (re)compile the kext using xcode, I just edit the info.plist of the two kexts: FakePCIID_Intel_GbX.kext (edited Info.plist - IOPCIPrimaryMatch to include 0x15638086) and SmallTreeIntel8259x.kext attached to the beginning of this thread (edited Info.plist - IOPCIPrimaryMatch to include 0x15638086) using PlistEdit Pro.

Put all the kext into L/E (macOS 10.12 16A323) but the NIC is still not recognized.

dpcimanager recognizes two as 8086 1563 8086 0000 from Intel Corporation (Network controller, Ethernet controller) but blank Device Name
 
Joined
Jun 8, 2014
Messages
7
Motherboard
Mac mini 2018
CPU
Intel i7 6 core
Graphics
RX 5700 XT
Mac
  1. Mac mini
Mobile Phone
  1. iOS
I used this a guide to mod my X540-T2 EEPROM in my MacPro5,1 (mid 2010)
shows up as:
Code:
Vendor ID: 0x8086
Device ID:    0x1528
Subsystem Vendor ID: 0x8086
Subsystem ID: 0x000a
SmallTree-kext is loaded, card shows up fine in "System Info" and "SysPrefs/Network", 10GBaseT FD link...also on the switch I get 10G PHY... but only seem to get top-gigabit speeds.
Checked cables
My "Macintosh SSD" does 700MB/s write, 1200MB/s read (so that's not the bottleneck)
Moved MP next to 10G-Switch, with short Cat6a... all the same.
Any ideas what could have gone wrong? Any advice/guidelines in further troubleshooting?

Don't have any other 10G NICs to test with in the MP (only have X710-DA2's, Mellanox ConnectX-2's and Tehuti3040)

EDIT: UPDATE: those speeds seem only low when using "smb://", when I use "cifs://" I get double the speed...
When I use "afp://" though, I get the full potential of my storage (through 4 switches :) write:733MB/s; read: 1039,5MB/s)

Hi guys,

thanks to Squuiid I got my x520-DA2 working by altering the subsys ID via Linux.
I get speeds of

write: ~270mb/s
read: ~300mb/s

to an SSD in the NAS.

Any ideas on how to better the performance?

Cheers,
shinokubo
Disable SMB signing in macOS to experience full 10GbE speeds when using SMB in High Sierra 10.12.1 and above.
(SMB prior to macOS 10.12.1 was still pretty slow over 10GbE despite using the fix below.)
https://support.apple.com/en-gb/HT205926
 
Last edited:
Joined
Dec 7, 2017
Messages
1
Hi,
I have sierra (hackintosh) and I could not find a way to load fakepciid & fake intel before smalltree
If I reload smalltree after a boot evr is working fine (they all loaded, network card is working, so im good, excetp its manual and after mac renamed all the network card since no valid driver is found during the boot)

after a boot

2017-12-08 17:34:52.899946+0200 0xd9 Default 0x0 0 kernel: (FakePCIID) FakePCIID: Version 1.3.10 starting on OS X Darwin 16.7.

2017-12-08 17:34:52.906836+0200 0xe5 Default 0x0 0 kernel: (FakePCIID) FakePCIID: Version 1.3.10 starting on OS X Darwin 16.7.

2017-12-08 17:34:52.875022+0200 0xd9 Default 0x0 0 kernel: (SmallTreeIntel8259x) SmallTreeIntel8259x probe b1d0f0: Unsupported Card 0x000c

2017-12-08 17:34:52.880573+0200 0xe5 Default 0x0 0 kernel: (SmallTreeIntel8259x) SmallTreeIntel8259x probe b1d0f1: Unsupported Card 0x000c




sudo kextunload /Library/Extensions/SmallTreeIntel8259x.kext
sudo kextload /System/Library/Extensions/SmallTreeIntel8259x.ket

sudo log show | grep -i smallt
2017-12-08 17:41:07.981256+0200 0x1ad4 Default 0x0 0 kernel: (SmallTreeIntel8259x) SmallTreeIntel8259x getNVM b1d0f1: Mac address: 33:44:55:66:22:a9

2017-12-08 17:41:07.986870+0200 0x1ad3 Default 0x0 0 kernel: (SmallTreeIntel8259x) SmallTreeIntel8259x getNVM b1d0f0: Mac address: 33:44:55:66:22:a8

2017-12-08 17:41:09.606659+0200 0x1ad4 Default 0x0 0 kernel: (SmallTreeIntel8259x) Initializing SmallTreeIntel8259x: Version 3.3.11 Built Nov 28 2016 11:56:32 Build: 2486:2507M

2017-12-08 17:41:09.611692+0200 0x1ad3 Default 0x0 0 kernel: (SmallTreeIntel8259x) Initializing SmallTreeIntel8259x: Version 3.3.11 Built Nov 28 2016 11:56:32 Build: 2486:2507M

2017-12-08 17:41:09.650872+0200 0x1ad3 Default 0x0 0 kernel: (SmallTreeIntel8259x) SmallTreeIntel8259x checkLinkStatus b1d0f0: Link is UP

2017-12-08 17:41:09.734038+0200 0x1ad4 Default 0x0 0 kernel: (SmallTreeIntel8259x) SmallTreeIntel8259x checkLinkStatus b1d0f1: Link is DOWN



So, as far as I understand - its a kext load order. is there a way to change it
Have tried:
do cache rebuild after I booted with -f and reload smalltree
put fakepci into /efi/clover/kext/others
dont wont to change card nvram (the second method)

Sierra, x520-sr (sfp+), lastes st, lasts fakepci

where is the best point for digging ?

P.S. have tried
boot with -f, reload smalltree (it started working), rebuild cache, fix permissions,
 
Joined
Jul 19, 2012
Messages
2
Motherboard
Supermicro X8DAH+-F
CPU
Dual Xeon X5670
Graphics
295X3 (Nvidia Quadro NVS295 boot GPU + AMD Radeon R9 295X2), disabled Matrox onboard
Mobile Phone
  1. Android
  2. iOS
  3. Other
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.

Hey guys! I got tired of this driver refusing to work and I came up with a third (fourth?) solution to the problem anyone with an 82576 dual port chip is having.

I was expecting it to work, but then I got an error that some other two bytes are invalid... of course, without an offset. Must have been these ones.

I don't have time for a calculator, and I didn't feel like writing this guy a PM about a post from 4 months ago. I can see why he wouldn't want to share the exact algorithm - there are probably way more stupid inconsequential places they could hide a code in the ROM image, and they seem to not like other people's dirty Ethernet cards tainting their scared drive written under divine right. That game of cat and mouse would end badly for us.

So, instead, I just got down and dirty with objdump and figured out how patch the executable.
Replace 0x664139c1488b75b87526 with 0x664139c1488b75b86690 in
/Library/Extensions/SmallTreeIntel82576.kext/Contents/MacOS/SmallTreeIntel82576
This only gets you past the EEPROM check. You could probably do the same for the PCI Subsystem ID check but why bother when FakePCIID and ethtool are already there and are so easy to use?

As to actually doing the patch, I tried Clover and it didn't... do... anything. Probably because it doesn't get probed by the bootloader, but the kernel, and it's obviously patching code in memory because it's done at every boot. Plus, if that DID work and it ever got unloaded, your only option would to be reboot. (Reboots take forever on my system because it has IPMI.) So I realized that xxd and sed are available even on the stock system without developer tools or anything installed.

So open the Terminal and try running:

xxd /Library/Extensions/SmallTreeIntel82576.kext/Contents/MacOS/SmallTreeIntel82576 /tmp/SmallTreeIntel82576.xxd
sed -i -e 's/66 4139 c148 8b75 26/66 4139 c148 8b66 90/' /tmp/SmallTreeIntel82576.xxd
xxd -r /tmp/SmallTreeIntel82576.xxd /tmp/SmallTreeIntel82576
sudo chown root:wheel /tmp/SmallTreeIntel82576
sudo chmod 755 /tmp/SmallTreeIntel82576
sudo mv /tmp/SmallTreeIntel82576 /Contents/MacOS/Library/Extensions/SmallTreeIntel82576.kext

Then try loading the kext again:
sudo kextload /Library/Extensions/SmallTreeIntel82576.kext
Remember that you still have to fake the Subsystem ID with either an EEPROM edit with ethtool under Linux or using FakePCIID.
 
Last edited:
Joined
Mar 5, 2011
Messages
3
Motherboard
Gigabyte GA-P35-DS3
CPU
Intel Core 2 Quad Q9550
Graphics
Nvidia GTS450
Mac
Classic Mac
Mobile Phone
Hey guys! I got tired of this driver refusing to work and I came up with a third (fourth?) solution to the problem anyone with an 82576 dual port chip is having.

I was expecting it to work, but then I got an error that some other two bytes are invalid... of course, without an offset. Must have been these ones.

I don't have time for a calculator, and I didn't feel like writing this guy a PM about a post from 4 months ago. I can see why he wouldn't want to share the exact algorithm - there are probably way more stupid inconsequential places they could hide a code in the ROM image, and they seem to not like other people's dirty Ethernet cards tainting their scared drive written under divine right. That game of cat and mouse would end badly for us.

So, instead, I just got down and dirty with objdump and figured out how patch the executable.
Replace 0x664139c1488b75b87526 with 0x664139c1488b75b86690 in
/Library/Extensions/SmallTreeIntel82576.kext/Contents/MacOS/SmallTreeIntel82576
This only gets you past the EEPROM check. You could probably do the same for the PCI Subsystem ID check but why bother when FakePCIID and ethtool are already there and are so easy to use?

As to actually doing the patch, I tried Clover and it didn't... do... anything. Probably because it doesn't get probed by the bootloader, but the kernel, and it's obviously patching code in memory because it's done at every boot. Plus, if that DID work and it ever got unloaded, your only option would to be reboot. (Reboots take forever on my system because it has IPMI.) So I realized that xxd and sed are available even on the stock system without developer tools or anything installed.

So open the Terminal and try running:

xxd /Library/Extensions/SmallTreeIntel82576.kext/Contents/MacOS/SmallTreeIntel82576 /tmp/SmallTreeIntel82576.xxd
sed -i -e 's/66 4139 c148 8b75 26/66 4139 c148 8b66 90/' /tmp/SmallTreeIntel82576.xxd
xxd -r /tmp/SmallTreeIntel82576.xxd /tmp/SmallTreeIntel82576
sudo chown root:wheel /tmp/SmallTreeIntel82576
sudo chmod 755 /tmp/SmallTreeIntel82576
sudo mv /tmp/SmallTreeIntel82576 /Contents/MacOS/Library/Extensions/SmallTreeIntel82576.kext

Then try loading the kext again:
sudo kextload /Library/Extensions/SmallTreeIntel82576.kext
Remember that you still have to fake the Subsystem ID with either an EEPROM edit with ethtool under Linux or using FakePCIID.
Hi, Could you share your smalltree kext? for some reason your solution doesn't work for me. (Intel I350)
 
Joined
Apr 27, 2016
Messages
15
Motherboard
B360 AORUS GAMING 3 WIF
CPU
i7 8700
Graphics
RX480
Mac
  1. MacBook Air
  2. Mac Pro
Mobile Phone
  1. iOS
someone can help me with this issue?
the FakePCIID_Intel_GbX.kext can not load...
 

Attachments

  • 屏幕快照 2018-04-01 17.52.00.png
    屏幕快照 2018-04-01 17.52.00.png
    121.2 KB · Views: 259

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,624
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
someone can help me with this issue?
the FakePCIID_Intel_GbX.kext can not load...

The ioreg image you show proves FakePCIID kexts are loading as expected.
 
Top