Contribute
Register

[Success] AMD RX6000 Series working in macOS

@tedyun I found that the device ID spoof works on all levels until I get to the "Pci-bridge"s. Furthermore, I found with the typo "device_id" I originally had in my config.plist that it was successfully adding it. Considering that, it was very bizarre that upon fixing the typo that it didn't spoof the device ID. I'm unsure where to go from here.
 
@WrathOfThePast :

There are two paths you need to specify in order for the spoof to work. The first is done using the SSDT-BRG0.aml, then the second path is specified in the config.plist under Device Properties.

The SSDT.BRG0.aml needs to be written so that you name all the pci-bridges in this path:

/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

Then using the DeviceProperties path here, you can spoof your device-id to the 73BF

PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

So where we're stuck is with how to write the SSDT-BRG0 to incorporate the extra pci-bridges.

I'm surprised that no one has offered to help. There are a number of people here that could help, and I'll try tagging them to see if they will help you out. If we can figure this out, then it will be incredibly useful to people using the eGPU's.

@CaseySJ @vandroiy @Gigamaxx , do you think you can help Wrath?
 
@WrathOfThePast :

There are two paths you need to specify in order for the spoof to work. The first is done using the SSDT-BRG0.aml, then the second path is specified in the config.plist under Device Properties.

The SSDT.BRG0.aml needs to be written so that you name all the pci-bridges in this path:

/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

Then using the DeviceProperties path here, you can spoof your device-id to the 73BF

PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

So where we're stuck is with how to write the SSDT-BRG0 to incorporate the extra pci-bridges.

I'm surprised that no one has offered to help. There are a number of people here that could help, and I'll try tagging them to see if they will help you out. If we can figure this out, then it will be incredibly useful to people using the eGPU's.

@CaseySJ @vandroiy @Gigamaxx , do you think you can help Wrath?
@tedyun I just added the "model" to DeviceProperties & it successfully renamed my gpu, but the device-id still isn't spoofed. Very bizarre as this implies that things should be working in the current configuration.
 
Last edited:
I just added the "model" to DeviceProperties & it successfully renamed my gpu, but the device-id still isn't spoofed. Very bizarre as this implies that things should be working in the current configuration.

That's because you've only completed 1 of the 2 paths you need to specify. The DeviceProperties path is the most straightforward. The ACPI path is the trickier one because you need to dive into assembly language in order to modify the SSDT. Then on top of that, in your case, you need to assign multiple levels of pci-bridges instead of a single pci-bridge that an internal dGPU has.

So in order to complete your hack, we need someone with knowledge of assembly language and the ACPI structure to help you out with the ACPI path.
 
@tedyun I just added the "model" to DeviceProperties & it successfully renamed my gpu, but the device-id still isn't spoofed. Very bizarre as this implies that things should be working in the current configuration.
It seems you’ve installed your NAVI GPU into a Thunderbolt eGPU. Spoofing the device-id is most likely failing for that reason.
 
It seems you’ve installed your NAVI GPU into a Thunderbolt eGPU. Spoofing the device-id is most likely failing for that reason.
Hi @CaseySJ

Would it be possible to alter the SSDT-BRG0.aml in order to specify the ACPI path to the eGPU?

This is the current path to his eGPU:

/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

Thanks for your help!

Ted
 
Hi @CaseySJ

Would it be possible to alter the SSDT-BRG0.aml in order to specify the ACPI path to the eGPU?

This is the current path to his eGPU:

/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

Thanks for your help!

Ted
We cannot and should not impose fixed device properties on a hot plug port!

We should install the RX 6900XT in one of the PCIe x16 slots on motherboard.
 
We should install the RX 6900XT in one of the PCIe x16 slots on motherboard.

He can't do that because he is trying to use the eGPU on his Macbook Pro.
 
He can't do that because he is trying to use the eGPU on his Macbook Pro.
At this particular time I think the options are limited for eGPU users:
  • Replace the RX 6900XT with one whose device-id is already 0x73BF.
  • Flash a new VBIOS into the existing RX 6900XT that sets device-id to 0x73BF.
    • This is tricky and could brick the card.
    • But some have done this by extracting the VBIOS from a 6900XT with device-id 0x73BF and flashing that one as-is.
  • Consider a 6800XT instead of 6900XT.
 
At this particular time I think the options are limited for eGPU users:
  • Replace the RX 6900XT with one whose device-id is already 0x73BF.
  • Flash a new VBIOS into the existing RX 6900XT that sets device-id to 0x73BF.
    • This is tricky and could brick the card.
    • But some have done this by extracting the VBIOS from a 6900XT with device-id 0x73BF and flashing that one as-is.
  • Consider a 6800XT instead of 6900XT.


@WrathOfThePast , @Sebseb82, it doesn't sound like an eGPU can be used with the spoof. :(
 
Back
Top