Jump to content

Fake PCI ID vs Clover patches


llamafilm
 Share

4 posts in this topic

Recommended Posts

I installed an M.2 card, model BCM94352Z.  Very easy setup — I installed FakePCIID.kext and FakePCIID_Broadcom_WiFi.kext for WiFi, and BrcmFirmwareRepo.kext and BrcmPatchRAM.kext for Bluetooth.  So far, everything is working perfectly in Yosemite, without any DSDT or Clover patches.

 

I'm just trying to understand what Fake PCI ID is doing.  It's supposed to change the device-id, right?  Without the kext, DPCI Manager shows the device-id as 43B1.  IOJones shows the same, just formatted differently: <b1 43 00 00>.  After installing the kext, the device-id is the same.  So where is the change being made?

 

Would this function the same as Clover's Custom Properties feature?  For example, I've been trying to fake my Intel i211 NIC as i210, using the following in config.plist, and it doesn't work.  This code does change the device-id showing in IOJones, but the Apple driver does not attach to it.

<key>Arbitrary</key>
<array>
   <dict>
      <key>Comment</key>
      <string>Intel i211 fake i210</string>
      <key>CustomProperties</key>
      <array>
         <dict>
            <key>Key</key>
            <string>device-id</string>
            <key>Value</key>
            <data>MxUAAA==</data>
         </dict>
      </array>
      <key>PciAddr</key>
      <string>56:00.00</string>
   </dict>
</array>

If it's possible to fake the device-id using Clover instead of a kext, wouldn't that be preferable?  It's one less binary running, and no risk of breaking it with system updates.

Link to comment
Share on other sites

FakePCIID changes the device ID in PCI config space, which some kexts (like the Broadcom WiFi drivers & Haswell and newer graphics drivers) check. Most drivers simply match based off the device-id property in the IORegistry (which is what Clover's FakeID does - it injects a different value for device-id). DPCIManager does the same thing, which is why you see the original device ID even though you're using FakePCIID.

Link to comment
Share on other sites

Nevermind, I think I answered my own question.  I see it now in IOreg.  So the new values created by Fake PCI ID are 106b:0019.  That's interesting, because when I google that number, it looks like it's a USB controller. http://gentoo-en.vfose.ru/wiki/Apple_Power_Mac_G4_Quicksilver_(M8493)

+-o D07B@0  <class IOPCIDevice, id 0x100000406, registered, matched, active, busy 0 (139 ms), retain 48>
    | |   |     | {
    | |   |     |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | |   |     |   "IOPCIMSIMode" = Yes
    | |   |     |   "assigned-addresses" = <1000578200000000000040cf00000000008000001800578200000000000020cf0000000000002000>
    | |   |     |   "class-code" = <00800200>
    | |   |     |   "subsystem-vendor-id" = <6b100000>
    | |   |     |   "vendor-id" = <e4140000>
    | |   |     |   "IOPCIExpressLinkCapabilities" = 4643857
    | |   |     |   "IOName" = "pci14e4,43b1"
    | |   |     |   "IOPCIPMCSState" = 16651
    | |   |     |   "RM,subsystem-id" = <34010000>
    | |   |     |   "IOChildIndex" = 1
    | |   |     |   "pcidebug" = "87:0:0"
    | |   |     |   "IOPCIExpressLinkStatus" = 4113
    | |   |     |   "RM,vendor-id" = <e4140000>
    | |   |     |   "pci-aspm-default" = 0
    | |   |     |   "IOPCIExpressCapabilities" = 2
    | |   |     |   "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
    | |   |     |   "built-in" = <00>
    | |   |     |   "IOPCIResourced" = Yes
    | |   |     |   "IODeviceMemory" = (({"address"=3477078016,"length"=32768}),({"address"=3474980864,"length"=2097152}))
    | |   |     |   "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=2,"ChildProxyPowerState"=2,"MaxPowerState"=3}
    | |   |     |   "acpi-pmcap-offset" = 72
    | |   |     |   "name" = <"pci14e4,43b1">
    | |   |     |   "subsystem-id" = <19000000>
    | |   |     | 

But regarding AppleIntelI210Ethernet.kext, it uses IOPCIPrimaryMatch, so I don't understand why the Clover FakeID doesn't cause that kext to attach.

Link to comment
Share on other sites

 Share

×
×
  • Create New...