Contribute
Register

RX 6600 XT: Henbury framebuffer and Zero RPM in Monterey 12.3

@felbo
Congrats!!! Enjoy. Working with 2 monitors, GPU temp is higher, as expected. With 3 monitors, even higher. And so on. GPU load is greater when driving more monitors.

@etorix you really are an expert :)
 
Congrats!!! Enjoy. Working with 2 monitors, GPU temp is higher, as expected. With 3 monitors, even higher. And so on. GPU load is greater when driving more monitors.
@miliuco Thanks again for help!
From test Radeon Eagle RX 6600 (not XT)
https://www.techpowerup.com/review/gigabyte-radeon-rx-6600-eagle/36.html

"Single-monitor idle power consumption is amazing, just 2 W is really impressive and the best result we've ever seen. Typical for AMD is that they're running the memory at full speed when two monitors are connected—in that situation, we see 20 W, much higher, but not that bad compared to many other cards on the market."

"Typical for AMD":)
 
@etorix you really are an expert :)
@miliuco YOU are the expert, for providing the table. I'm just packaging the payload.

This is the same trick as GPU spoofing:
Get the ACPI and PCI paths. (IOReg gives both in one go.)
Spot any unamed bridge along the way, and give it an ACPI name. (SSDT-BRG0 template).
Give the GPU a _DSM method which returns the payload as Package().

To add more properties, use OpenCore DeviceProperties (easier for cosmetic properties) or extend the package (better for functional properties such as spoofs or power tables).
Code:
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((!Arg2 || !_OSI ("Darwin")))
                    {
                        Return (Buffer (One)
                        {
                             0x03
                        })
                    }

                    Return (Package (0x04) // adjust package size here
                    {
                        "MY_PROPERTY",
                        Buffer (BUF_SIZE) { DATA },
                        "ANOTHER_PROPERTY",
                        Buffer (BUF_SIZE2) { DATA2 }
                    })
                }
The If { } part is a simplified DTGP method. The _OSI condition ensures properties are only injected for macOS.
The payload can have as many key-buffer pairs as wanted.
 
@etorix
Thank you for the info!
 
Congrats!!! Enjoy. Working with 2 monitors, GPU temp is higher, as expected. With 3 monitors, even higher. And so on. GPU load is greater when driving more monitors.
Ive tested more about this. Im sorry to tell I got KP sleep issues with either method. Also Henbury method. I can't live with KP sleep issues. With only agdpmod=pikera and no patching, the temps creeping slowly to 68-70 degrees before fan kics in a back to 55 degrees. I don't like it. The solution are simpler, but not so elegant.. Two old fans mount under GPU with low rpm. Now the temps never go over 44 degrees in idle, no KP and OK Metal score :cool:
 

Attachments

  • IMG_6104.jpeg
    IMG_6104.jpeg
    1.9 MB · Views: 11
  • Screenshot 2024-02-07 at 09.18.52.png
    Screenshot 2024-02-07 at 09.18.52.png
    19.6 KB · Views: 9
@felbo
If it is not so elegant but it works… go ahead.
My system runs fine with @etorix SSDTs, no KP.
 
@felbo
If it is not so elegant but it works… go ahead.
My system runs fine with @etorix SSDTs, no KP.
I must do something wrong in config/bios. I have not testet KP long time period after install those fans and only agdpmod=pikera. It's too early to conclude. I have also upgrade from F8 to last bios F29 (had to do new config setting: "SetupVirtualMap"). I had several issues before with Ventura (RX 580). The bluetooth gave KP in sleep from time to time. Had to turn bluetooth off before sleep
 
I must do something wrong in config/bios. I have not testet KP long time period after install those fans and only agdpmod=pikera. It's too early to conclude. I have also upgrade from F8 to last bios F29 (had to do new config setting: "SetupVirtualMap"). I had several issues before with Ventura (RX 580). The bluetooth gave KP in sleep from time to time. Had to turn bluetooth off before sleep
Now I got sleep issues with "the second time sleep by itself". Hmm:confused:
 
Okai, Im trying this again. Sorry again for my English language... The ssd from @etorix, post#37 works. (SSDT-ZeroRPM-ON.aml) With one monitor the fans start at 40 degrees and stop at 35 degrees. With two monitors the fans never stop, the temp never reach 35 degrees. In practice the fans are spinning very fast all time no matter what I'm doing even with one monitor. Is it possible to make SSDt so the fans start spinning much later? Default my card are 60-62 degrees at idle with two monitors, tex web browsing, and fans start very late at 70 degrees:crazy:, stop at 55 (about). I have made rom file and regfile from windows with other parameters in temp, but have no idea how to convert to Hex and all that stuff even with the brilliant explanation from @miliuco :wave:.
 

Attachments

  • rx6600xt.zip
    382.9 KB · Views: 4
Simple:
Open the .reg file in TextEdit. It's plain Unicode text, and in there you can see your alternate soft power play table already converted to hexadecimal.
Capture d’écran 2024-03-12 à 14.56.28.png


Finish the formatting by adding '0x' everywhere and removing these '\ ' line breaks. "Search and Replace…" is your friend. Clean the remains by hand to keep just the hex stream; don't bother about splitting lines and other niceties.
Now copy the text form of your power table, open (a copy of) the working SSDT in MaciASL and paste the power table to replace the previous table—the whole content of the braces after 'Buffer (0x09A6)'. (Again, do not bother about formatting! If it compiles, it's good.) Save the compiled SSDT, and upon reopening MaciASL will just give you the clean code, with numbered lines on the left and ASCII representation on the right.
Done. You have a SSDT which will inject the alternate power table. Test it carefully!

Exercise for the adventurous reader: Compare the power tables to see where there are changes and whether any of these appear to correspond to temperature thresholds.
 

Attachments

  • amd-sppt2.txt
    29 KB · Views: 1
  • SSDT-ZeroRPM-2M.aml
    2.6 KB · Views: 1
Back
Top