Contribute
Register

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

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.
View attachment 579588

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.
@etorix this is amazing again:). I will try myself with different temperatures later. With the SSDT-ZeroRPM-2M.aml you provide, temp goes to 60 degrees, fans start spinning and stops about 48 degrees. Perfect!
 
Good to know.
Beware that messing with binaries can be dangerous, so be very, very careful if you ever try to edit the table and introduce arbitrary values.
 
Good to know.
Beware that messing with binaries can be dangerous, so be very, very careful if you ever try to edit the table and introduce arbitrary values.
Thanks again @etorix for using time for this. Well I am not familiar with binaries and Hex thing, so it will take time to learn all this, if ever..:) However, it's graphic glitches now with the new SSDT-ZeroRPM-2M.aml. Suddenly it`s red all over the screen, and it's some interference? between sound/bluetooth/safari. The .aml from post#37 are working without any glitch, but too low temps for my taste, fan spinning too much. Positive: I get the highest measure done with Geekbench 6 metal, 126333 with SSDT-ZeroRPM-2M.aml. With Aty,Henbury I get 98000, comfortable fan speed (spinning all the time, low rpm), 50 degrees idle. No problem. Perhaps safest with Aty,Henbury after all
 
Safety first!

As for the comparison, it is rather quick (macOS IS Unix, long live the command line!):
$ diff -C 0 SSDT-ZeroRPM-2M.dsl SSDT-ZeroRPM-ON.dsl
finds only four relevant differences
Code:
*** 149 ****
!                             /* 0328 */  0x7F, 0xA3, 0xE3, 0x37, 0x04, 0x00, 0x82, 0x00,  // ...7....
--- 151 ----
!                             /* 0328 */  0x7F, 0xA3, 0xE3, 0x37, 0x04, 0x00, 0x91, 0x00,  // ...7....
***************
*** 151 ****
!                             /* 0338 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00,  // ........
--- 153 ----
!                             /* 0338 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00,  // ........
***************
*** 271,272 ****
!                             /* 06F8 */  0x01, 0x04, 0x51, 0x00, 0x6B, 0x02, 0x30, 0x00,  // ..Q.k.0.
!                             /* 0700 */  0x3E, 0x00, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00,  // >...d.d.
--- 273,274 ----
!                             /* 06F8 */  0x01, 0x04, 0x51, 0x00, 0x6B, 0x02, 0x23, 0x00,  // ..Q.k.#.
!                             /* 0700 */  0x28, 0x00, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00,  // (...d.d.
Offsets 0x32E and 0x33E are 0x82 in -2M instead of 0x91 in -ON. It's not clear what these values represent. Fan speed? Have you modified a parameter other than temperature while making the reg file in Windows?
Offset 0x6FD is 0x30 (48) instead of 0x23 (35); offset 0x700 is 0x3E (62) instead of 0x28 (40). These nicely match the reported thresholds to spin and stop the fan:
With the SSDT-ZeroRPM-2M.aml you provide, temp goes to 60 degrees, fans start spinning and stops about 48 degrees. Perfect!
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.
Maybe some intermediate values would be safe?
Do you, by any chance, have an IOReg file made with Henbury? It should reveal the sPPT and provide a third point of comparison.
 
Offsets 0x32E and 0x33E are 0x82 in -2M instead of 0x91 in -ON. It's not clear what these values represent. Fan speed? Have you modified a parameter other than temperature while making the reg file in Windows?
I don't remember.... I will try again and only modify temperature
Do you, by any chance, have an IOReg file made with Henbury? It should reveal the sPPT and provide a third point of comparison.
Here!
 

Attachments

  • iMac Pro.ioreg
    21.2 MB · Views: 2
Thanks. Unfortunately, I overestimated my ability to find the sPPT in there.
 
Thanks. Unfortunately, I overestimated my ability to find the sPPT in there.
Thanks anyway. Here are new regfile. I change to 45 / 60 degrees from 55 / 70 (default)
No other parameter touched in MorePowerTool
 

Attachments

  • rx6600xt.zip
    382.9 KB · Views: 2
  • Screenshot 2024-03-13 at 15.29.36.png
    Screenshot 2024-03-13 at 15.29.36.png
    817.3 KB · Views: 4
  • Screenshot 2024-03-13 at 15.29.49.png
    Screenshot 2024-03-13 at 15.29.49.png
    716.1 KB · Views: 4
@etorix Im trying to use find and replace with "0x". How do you do that? In Text edit? By hand? One by one? :geek::problem:
 

Attachments

  • Screenshot 2024-03-13 at 16.20.03.png
    Screenshot 2024-03-13 at 16.20.03.png
    66.8 KB · Views: 3
I suppose that one could do the nearly 2500 of them by hand, but replacing ',' by ', 0x' will get you a good way. :geek:

For the line ends, select the offending sequence comma-space-backslash-line break-space-space, copy and paste in the "Find" field to catch the non-printable line break in there, and replace. (In my case, by a plain comma, and then I replaced the commas.)

Capture d’écran 2024-03-13 à 16.50.25.png


I do the leading 0x by hand.
 
The resulting power table (and SSDT) end up identical to the previous one with 48 / 62 (SSDT-ZeroRPM-2M.aml).
Code:
Disa:SSDT-ZRPM $ diff -C 0 SSDT-ZeroRPM-4560.dsl SSDT-ZeroRPM-2M.dsl
*** SSDT-ZeroRPM-4560.dsl    Wed Mar 13 17:05:02 2024
--- SSDT-ZeroRPM-2M.dsl    Tue Mar 12 15:23:40 2024
***************
*** 8 ****
!  * Disassembly of iASLAfNthc.aml, Wed Mar 13 17:04:24 2024
--- 8 ----
!  * Disassembly of iASLS0TBuo.aml, Tue Mar 12 15:23:26 2024
Disa:SSDT-ZRPM $ diff SSDT-ZeroRPM-4560.aml SSDT-ZeroRPM-2M.aml
Disa:SSDT-ZRPM $
Maybe MorePowerTool has some granularity and does not set temperatures to a single degree?
 
Last edited:
Back
Top