Jump to content

Spoofing GPU device-id (B450m, AMD FirePro)


rich4653
 Share

10 posts in this topic

Recommended Posts

Had to jump through a few hoops to spoof my GPU device-id. I thought sharing might help somebody else out because I couldn't find this particular pattern anywhere...

 

First I had to create an SSDT to (I assume) define GFX0 as shown:

DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000)
{
    External (_SB_.PCI0.GPP8, DeviceObj)

    Scope (\_SB.PCI0.GPP8)
    {
        Device (GFX0)
        {
            Name (_ADR, Zero)  // _ADR: Address
		}
	}
}

Wasn't able to successfully define the device-id in the SSDT, but once I added GFX0 in the SSDT, I was able to set it via DeviceProperties. Along the lines of:

DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0) -> device-id = 5C660000

 

where PciRoot for GFX0 can be found with gfxutil, and device-id will be specific to your GPU 

 

 

My system:

MSI B450 Mortar

Ryzen 5 3600

AMD FirePro W5100

 

Opencore 0.6.2

Catalina 10.15.7

 

Update - Oct 2021

Since updating to Big Sur with OpenCore 7.4 and latest kexts, I discovered for WhateverGreen > 1.5.1 I also need to add no-gfx-spoof to the GPU DeviceProperties entry: 

DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0) -> no-gfx-spoof = 01000000

More info on this specific issue at https://github.com/acidanthera/bugtracker/issues/1743

Edited by rich4653
Update
Link to comment
Share on other sites

  • 8 months later...

Hello rich4653,

 

was this your complet SSDT or a snippet?

DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000)
{
    External (_SB_.PCI0.GPP8, DeviceObj)

    Scope (\_SB.PCI0.GPP8)
    {
        Device (GFX0)
        {
            Name (_ADR, Zero)  // _ADR: Address
		}
	}
}

Regards from Germany, Olaf Neumann

Link to comment
Share on other sites

11 hours ago, Franziska1993 said:

Hello rich4653,

 

was this your complet SSDT or a snippet?


DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000)
{
    External (_SB_.PCI0.GPP8, DeviceObj)

    Scope (\_SB.PCI0.GPP8)
    {
        Device (GFX0)
        {
            Name (_ADR, Zero)  // _ADR: Address
		}
	}
}

Regards from Germany, Olaf Neumann

It will be better to you to read the original.

1. Look _SB_.PCI0.GPP8 - this name is specific for this motherboard only.

2. device-id can be injected through the SSDT, not needed to write properties.

Link to comment
Share on other sites

Hello Slice,

this is my (for my Hackintosh) complet SSDT-GPU-SPOOF.dsl and later compiled .aml.

 

 

// Based off of WhateverGreen's sample.dsl
// https://github.com/acidanthera/WhateverGreen/blob/master/Manual/Sample.dsl
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000)
{
    External (_SB_.PCI0, DeviceObj)
    External (_SB_.PCI0.PEG0, DeviceObj)

    Scope (\_SB_.PCI0.PEG0)
    {
        if (_OSI ("Darwin"))
        {
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Local0 = Package (0x04)
                {
                    // Where we shove our FakeID
                    "device-id",
                    Buffer (0x04)
                    {
                        0x3d, 0x68, 0x00, 0x00
                    },
                    // Changing the name of the GPU reported, mainly cosmetic
                    "model",
                    Buffer ()
                    {
                        "AMD Radeon R7 250X"
                    }
                }
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }
    Scope (\_SB.PCI0)
    {                   
        Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03
                            }, Arg4)
                        Return (One)
                    }
                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }
            Store (Buffer (One)
                {
                     0x00
                }, Arg4)
            Return (Zero)
        }
      
    }
}

So where did rich4653 insert his code or is the code he used an extra aml-File to include into ACPI in the config.plist from OpenCore.

 

Regards Olaf Neumann

 

PS: My File didn't worked in OpenCore as R7 250X with grafik-acceleration, in Hackintool it was shown still as R7 240 with the ID 6613

Edited by Franziska1993
Link to comment
Share on other sites

Hello @Slice ,

 

why schoud this not work, i use OpenCore as Bootloader and not Clover:

 

https://dortania.github.io/Getting-Started-With-ACPI/Universal/spoof.html

 

THis didn't work, maybe because I coudn't reach the "Deviceb (GFX0) like in the top rich4653,

but I didn't have a Error like in an Other Solution:

 

I opend the config.plist and was looking for DeviceProperties/Add.
There I made the Entry:
 
device-id - Data - 3D680000
model -String - R7 250X

After I start the bootloader I get to the RadeonDriver (Maybe I made some spelling mistakes, I have written from

a Foto of the Screen);

 

RadeonSensors mio_base=0xf7e00000
 
RadeonSensors (pci1): found ATI Radeon ID: 0x683d, ATOM Bios: 6613HB.15.49.0.17.ASB2
RadeonSensors (pci1): using device-id to resolve temperature sensor type
RadeonSensors (pci1): adding southern Islands thermal sensor
RadeonSensors (pci1): started

About a Minute later I got the Error:

 

AGDCC unauthorized client 'perfpowerservice' (IOService:/AppleACPIPlatFormExpert/PCI0@0/PEG0@1/IOPP/GFX0@0/AMD7000ControllerWrangler)
AGDCC unauthorized client 'perfpowerservice' (IOService:/AppleACPIPlatFormExpert/PCI0@0/AppleACPIPCI/PEG0@/IOPP/HDAU@0,1/AMD7000ControllerWrangler)
AGDCC unauthorized client 'perfpowerservice' (IOService:/AppleACPIPlatFormExpert/PCI0@0/PEG0@1/IOPP/GFX0@0/AtiDeviceControl)
AGDCC unauthorized client 'perfpowerservice' (IOService:/AppleACPIPlatFormExpert/PCI0@0/PEG0@1/IOPP/GFX0@0/AtiDeviceControl/AppleGraphicsDevicePolicy/ACDPClientControl)
 

What th F**k is "unauthorized client 'perfpowerservice'"? I googled and not realy found something what shows/explaines maybe the Direction for a Solution

or what this Error causes.

 

After then I checked if the AMD7000 Controller has the Driver for the Device-ID 683D, what is the case.

 

Maybe you have some Ideas, Regards Olaf Neumann

 

PS: Howdo  I include the code from above to my sdst?

Link to comment
Share on other sites

Hello Slice,

 

When I read was is written in the Link, I get the Idea to "modify" the amdcontroller7000.kext.

 

Nobody had concret Success with the R7 240, luki1979 was writting about his R7 250 GPU.

I also found this:

 

Oland PRO  rebranded Bonaire 0x665D1002
R7 240, R7 430, R5 430

 

Do you mean that I'm should use the FakeID 0x665D1002, a modified amdcontroller7000.kext.

How do I make it with using OpenCore?

 

Fom HighSierra until Catalina (10.15.0) I have used Clover, after Catalina (amdcontroller7000.kext) I used OpenCore.

 

PLeas give some Input what I schoud look for to get the R7 240 running.

 

Regards Olaf Neumann

 

PS: Is luki1979 still active in the Forum?

Link to comment
Share on other sites

  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...