- Joined
- Jul 18, 2010
- Messages
- 14
- Motherboard
- ASUS Rampage VI Extreme
- CPU
- i7-7800X
- Graphics
- Vega 64
- 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.
Awesome, I got my Intel i350 t2v2 working with this binary patch......
Here is my patched kext