Contribute
Register

Intel Network adapters on OS X: Small Tree drivers

Hi Bubez, I would be certainly interested in the words required in the eeprom, because I calso get the same message :
SmallTreeIntel82576 b13d0f0: Invalid EEPROM 0x000a 0x1521 0xffff 0xffff
 
My system has an Intel i211, which is not supported by any drivers I can find. I want to try faking it as an i210 because Apple has built-in support for that with AppleIntelI210Ethernet.kext. Will Fake PCI-ID work for this?
I already tried Clover's CustomProperties, to change the device-id from 1539 to 1533, but it still doesn't show up in System Information > Ethernet.

I'm already using FakePCIID.kext for my wifi card, and it works great. So can I add FakePCIID_Intel_GbX.kext to /S/L/E also? In Info.plist, I can add 0x15398086 under IOPCIPrimaryMatch. But where would I enter the new ID of 1533? I don't understand the FakeProperties format.
Code:
<key>RM,subsystem-id</key>
<data>CgAAAA==</data>
When I convert that data from base64, it just produces weird characters.
 
Last edited:
My system has an Intel i211, which is not supported by any drivers I can find. I want to try faking it as an i210 because Apple has built-in support for that with AppleIntelI210Ethernet.kext. Will Fake PCI-ID work for this?
I already tried Clover's CustomProperties, to change the device-id from 1539 to 1533, but it still doesn't show up in System Information > Ethernet.

I'm already using FakePCIID.kext for my wifi card, and it works great. So can I add FakePCIID_Intel_GbX.kext to /S/L/E also? In Info.plist, I can add 0x15398086 under IOPCIPrimaryMatch. But where would I enter the new ID of 1533? I don't understand the FakeProperties format.
Code:
<key>RM,subsystem-id</key>
<data>CgAAAA==</data>
When I convert that data from base64, it just produces weird characters.

Use a plist editor such as Xcode to edit Info.plist files.

Assuming Intel i211 is 100% compatible with i210, what you want to do is sound. Of course, you need to create your own FakePCIID injector kext for this. See existing examples...
 
Use a plist editor such as Xcode to edit Info.plist files.
Xcode shows that value as 0a000000. What does that mean? I don't understand how that corresponds to any device id.

To create my own injector, I need to know what value the Apple kext is expecting for subsystem-id. It only shows IOPrimaryMatch.
 
Xcode shows that value as 0a000000. What does that mean? I don't understand how that corresponds to any device id.

No idea what you're referring to.

To create my own injector, I need to know what value the Apple kext is expecting for subsystem-id. It only shows IOPrimaryMatch.

If it is expecting a certain subsystem-id, you will find such checks in the binary itself (disassemble the code and read it). But a good guess would be to use the same subsystem-id of the i210 (a google search will probably find that).
 
In the i210 data sheet, I find the subsystem-id is 0x0B, and subsystem-vendor-id is 0x0C.
So I've disabled the Clover patch, in an attempt to do this all with Fake PCI ID.
I start with the FakePCIID_Intel_GbX example injector, and modify it like this. I think I'm doing something wrong, because after a reboot, IOreg shows the device-id and subsystem-id are unchanged, and the device doesn't show up in System Information.
Your example injectors all use data type, not string. But I don't know how to translate 0x0B or 0x15338086 to data.
 

Attachments

  • FakePCIID.png
    FakePCIID.png
    52 KB · Views: 456
Last edited:
In the i210 data sheet, I find the subsystem-id is 0x0B, and subsystem-vendor-id is 0x0C.
So I've disabled the Clover patch, in an attempt to do this all with Fake PCI ID.
I start with the FakePCIID_Intel_GbX example injector, and modify it like this. I think I'm doing something wrong, because after a reboot, IOreg shows the device-id and subsystem-id are unchanged, and the device doesn't show up in System Information.
Your example injectors all use data type, not string. But I don't know how to translate 0x0B or 0x15338086 to data.

Impossible to tell what you're actually doing with the image you provided.
If you need help, provide the entire Info.plist as an attachment.
 
Here it is.
 

Attachments

  • Info.plist
    1.9 KB · Views: 463
Here it is.

FakePCIID uses RM,device-id and RM,subsystem-id as overrides, not device-id and subsystem-id.

Note that you'll need an injector (or appropriate IOKitPersonality entry in this kext) just to cause the native kext to load...

I don't know why you have so many entries in IOPCIPrimaryMatch. Use only the ID that matches your hardware.
 
Okay, so I removed the extra match entries, and renamed the keys. Now in IOreg, I see the two RM override keys. Am I doing this right? It shows that FakePCIID has attached to the device, but the driver kext has not.

Code:
+-o RP06@1C,5  <class IOPCIDevice, id 0x100000400, registered, matched, active, busy 0 (21 ms), retain 13>
    | |   | +-o IOPP  <class IOPCI2PCIBridge, id 0x100000551, registered, matched, active, busy 0 (4 ms), retain 8>
    | |   |   +-o D087@0  <class IOPCIDevice, id 0x100000402, registered, matched, active, busy 0 (4 ms), retain 11>
    | |   |     | {
    | |   |     |   "assigned-addresses" = <10005682000000000000d0df0000000000000200180056810000000000c0000000000000200000001c005682000000000000d2df0000000000400000>
    | |   |     |   "IOInterruptSpecifiers" = (<1100000007000000>,<0800000000000100>)
    | |   |     |   "class-code" = <00000200>
    | |   |     |   "IODeviceMemory" = (({"address"=3754950656,"length"=131072}),"IOSubMemoryDescriptor is not serializable",({"address"=3755081728,"length"=16384}))
    | |   |     |   "IOPowerManagement" = {"CapabilityFlags"=2,"CurrentPowerState"=2,"ChildProxyPowerState"=2,"MaxPowerState"=3}
    | |   |     |   "subsystem-vendor-id" = <58140000>
    | |   |     |   "built-in" = <00>
    | |   |     |   "pci-aspm-default" = 0
    | |   |     |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | |   |     |   "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
    | |   |     |   "name" = <"ethernet">
    | |   |     |   "IOChildIndex" = 1
    | |   |     |   "device-id" = <39150000>
    | |   |     |   "vendor-id" = <86800000>
    | |   |     |   "acpi-pmcap-offset" = 64
    | |   |     |   "IOPCIResourced" = Yes
    | |   |     |   "compatible" = <"pci1458,e000","pci8086,1539","pciclass,020000","D087">
    | |   |     |   "RM,device-id" = "0x15338086"
    | |   |     |   "IOPCIExpressLinkCapabilities" = 4348945
    | |   |     |   "RM,subsystem-id" = "0x0B"
    | |   |     |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP06@1c0005/D087@0"
    | |   |     |   "subsystem-id" = <00e00000>
    | |   |     |   "revision-id" = <03000000>
    | |   |     |   "IOPCIExpressLinkStatus" = 4113
    | |   |     |   "IOPCIExpressCapabilities" = 2
    | |   |     |   "pcidebug" = "86:0:0"
    | |   |     |   "IOName" = "ethernet"
    | |   |     |   "IOPCIPMCSState" = 0
    | |   |     |   "reg" = <0000560000000000000000000000000000000000100056020000000000000000000000000000020018005601000000000000000000000000200000001c00560200000000000000000000000000400000>
    | |   |     |   "acpi-wake-type" = 2
    | |   |     | }
    | |   |     |
    | |   |     +-o FakePCIID  <class FakePCIID, id 0x100000571, !registered, !matched, active, busy 0, retain 4>
 

Attachments

  • Info.plist
    4.4 KB · Views: 294
Back
Top