6600 XT en macOS: Zero RPM con PowerPlayTable (2)

La tecnología PowerPlay de AMD permite que la tarjeta gráfica varíe su rendimiento de acuerdo con la demanda, cambiando entre rendimiento elevado y ahorro máximo de energía. Tiene modos de funcionamiento automático según parámetros predefinidos y también permite ajustes de usuario.
Windows 10 y 11 pueden hacer una copia de estos perfiles de consumo en forma de una clave del registro llamada SoftPowerPlayTables (sPPT) cuyo valor es una cadena hexadecimal larga. Es una manera de tener una referencia rápida por parte del sistema operativo. Esta clave sPPT puede ser leída y modificada por algunas utilidades. Gracias a ello es posible modificar parámetros del funcionamiento de las Radeon cambiando su comportamiento y su gestión de energía.

Zero RPM

Las tarjetas AMD Radeon de las series 5000 y 6000 vienen de fábrica con la función Zero RPM activada de forma que los ventiladores están parados por debajo de una temperatura (generalmente 60º), esto las hace completamente silenciosas excepto cuando el procesador gráfico es exigido (tests, juegos, etc.).

En cuanto a los modelos RX 6600 y 6600 XT se ha comentado que, en macOS, suelen funcionar a una temperatura base más elevada que en Windows, aproximadamente 10-15º según los casos. En mi PC, por ejemplo, la temperatura base en Windows es 35-40º y en macOS es 50-55º. Aunque se trata de temperaturas seguras perfectamente válidas para un uso diario, algunos usuarios preferiríamos tener unos valores similares a los de Windows.

La manera más rápida y efectiva de conseguirlo es desactivando la función Zero RPM para que los ventiladores estén girando todo el tiempo y no sólo por encima de una temperatura predefinida. Sin embargo, esto es muy sencillo de hacer en Windows con el software Radeon pero en macOS no existe esta opción.

Monterey 12.3

La versión 12.3 de macOS Monterey ha causado problemas en las AMD Radeon series 5500, 5700, 6800 y 6900 (XT y no XT). Los usuarios se quejan de una disminución grande de las prestaciones que en algunos casos llega a hacer el sistema inutilizable. Una solución en forma de parche para el archivo config.plist fue publicada rápidamente, cambiando el framebuffer utilizado por el chip gráfico. Este parche parece solucionar los problemas de rendimiento. Todavía no está clara cuál es la causa de este comportamiento y no sabemos si Apple está trabajando de alguna manera en ello porque en foros Mac también hay publicaciones aunque el problema parece ser mucho más frecuente en Hacks que en Macs.

La serie RX 6600 (XT y no XT) está libre de este problema, por lo que visto hasta ahora. Yo tengo una RX 6600 XT y en Monterey 12.3 funciona igual que en versiones anteriores. Al probar el parche en mi sistema sólo por curiosidad, para ver si hay alguna diferencia de comportamiento con él, descubrí que el parche desactiva la función Zero RPM y la temperatura base en macOS se mantiene entre 30 y 35º. El ruido de los ventiladores es prácticamente inapreciable. El inconveniente es que algunos tests como por ejemplo GeekBench 5 dan puntuaciones claramente más bajas con el parche.

SoftPowerPlayTable

Una manera de desactivar Zero RPM en macOS sin cambiar ningún otro parámetro es usando sPPT. Es un método menos fácil que el parche para Monterey 12.3 pero tiene la ventaja de que el comportamiento de la GPU, incluyendo las puntuaciones en GeekBench 5, no cambian.
Para obtener la sPPT hay que recurrir a Windows, donde se genera la clave del registro y se exporta a un archivo que llevamos a macOS, aquí se retoca el archivo obtenido y se añade la propiedad al archivo config.plist de OpenCore.

Fase 1 en Windows

Necesitamos 2 programas:

  • GPU-Z (de TechPowerUp): Carga el firmware (vBIOS = video BIOS) de la tarjeta gráfica y lo exporta a un archivo que puede ser leído por MorePowerTool.
  • MorePowerTool (MPT) (de Igor’sLAB): Lee el archivo rom con el firmware y gestiona la clave del registro PP_PhmSoftPowerPlayTable (borrar existente o crear nueva).

GPU-Z carga las especificaciones y configuración de la GPU y permite exportarlo todo a un archivo con extensión rom. Para exportar (desde la pestaña Graphics Card) se usa el icono de flecha que sale de un rectángulo debajo del logo AMD Radeon, a la derecha de la caja de texto con la versión de BIOS. En la pestaña Advanced tienes que anotar el número de Bus en la clave DeviceLocation, este número (en mi sistema es el 3) es importante más adelante, al buscar la clave sPPT en el registro de Windows.

MPT es donde se realiza la tarea de generar en el registro la sPPT con Zero RPM desactivada.

  • En la parte superior elige el modelo de GPU que tienes instalado, suele mostrar al comienzo del nombre el número de bus que anotamos anteriormente (3 en este caso).
  • Es recomendable borrar la tabla que pudiera existir ya en el registro desde el botón Delete sPPT.
  • Carga el archivo rom generado con GPU-Z.
  • Modifica la opción Zero RPM desmarcando la casilla de selección en 2 lugares: pestaña Features y pestaña Fan.

Escribe en el registro la nueva tabla desde el botón Write sPPT: la clave del registro se llama PP_PhmSoftPowerPlayTable y está localizada en

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{4d36e968-e325-11ce-bfc1-08002be10318}\

Aquí hay varias claves numeradas, elige la que coincide con el número de bus que tienes anotado desde antes:
0003\PP_PhmSoftPowerPlayTable. Con la clave 003 seleccionada, expórtala como archivo de registro (reg), no como archivo de texto (txt). La estructura del archivo es diferente en cada caso y he visto que es más sencillo editar el archivo reg que el archivo txt. Regedit exporta la clave 003 completa, no he encontrado la forma de exportar solamente la clave PP_PhmSoftPowerPlayTable. Cambia la extensión desde reg a txt y guardas el archivo en un lugar accesible desde macOS.

Fase 2 en macOS

Arreglar el archivo de texto para poder usarlo en OpenCore.

  • Yo he utilizado BBEdit pero puede servir cualquier programa capaz de editar texto plano, sin formato.
  • Selecciona el bloque que empieza por «PP_PhmSoftPowerPlayTable»= eliminando el resto del texto.
  • Borra también «PP_PhmSoftPowerPlayTable»=hex: dejando sólo la cadena hexadecimal compuesta por varias líneas.
  • Buscar y reemplazar:
    • quita las comas
    • quita el espacio que hay delante de las líneas
    • quita el carácter barra invertida (\) al final de cada línea
    • quita los saltos de línea para obtener una cadena de una sola línea, has de emplear Grep en la función Buscar y reemplazar.

El texto antes de la transformación es así (no se muestra la cadena completa, sólo una parte):

"PP_PhmSoftPowerPlayTable"=hex:a6,09,12,00,02,22,03,ae,09,00,00,22,43,00,00,83,\
00,18,00,00,00,1c,00,00,00,00,00,00,76,00,00,00,00,00,00,00,00,00,00,00,00,\
00,01,00,00,00,01,00,00,00,0d,00,00,00,52,0b,00,00,00,05,00,00,e8,03,00,00,\

Después de la transformación es así:

a6091200022203ae090000224300008300180000001c000000000000760000000000000000000000000001000000010000000d000000520b000000050000e8030000

OpenCore

Es necesario saber la ruta PCI a la tarjeta gráfica, se puede hacer con la herramienta gfxutil o desde Hackintool en la pestaña PCIe (Device Name = Navi 23 [Radeon RX 6600/6600 XT/6600M] >> columna Device Path). Se obtiene la ruta PCI que en mi caso es esta:

Nota: Device Name y Device Path pueden ser diferentes en tu sistema.

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

Abre el archivo config.plist y en

DeviceProperties >> Add > PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

añade la clave PP_PhmSoftPowerPlayTable, su valor como Data es la cadena larga de texto.

Reinicia. Si todo ha ido bien, verás que los ventiladores están en marcha todo el tiempo con un sonido muy bajo, que la temperatura base rara vez supera los 35º y que el comportamiento de la GPU y las puntuaciones en los test no han cambiado.

Nota: algunos errores en la cadena hexadecimal pueden llevar a pantalla negra al llegar al Escritorio, es muy recomendable tener una EFI que funcione bien en un dispositivo USB o en otro disco para arrancar macOS en caso de problemas.

Aviso: la información en que se basa este artículo en su mayor parte procede del sitio Igor’sLAB.

2 comentarios en «6600 XT en macOS: Zero RPM con PowerPlayTable (2)»

  1. Hola, yo también he observado este comportamiento, en mi caso esto solamente aparece si en Preferencias del Sistema >> Pantallas está seleccionada la frecuencia de refresco variable (40-60 Hz), si elijo 60 Hz como frecuencia fija el mensaje que refieres deja de aparecer.

  2. Buenas tardes, he creado la clave y efectivamente la temperatura de la RX 6600 XT se mantiene unos 15º por debajo pero, cuando tengo la clave PP_PhmSoftPowerPlayTable activa, al volver del reposo de la pantalla o del ordenador el monitor muestra el mensaje Input Not Supported y no se quita hsta que reinicio. Sabes cómo solucionarlo?

Deja un comentario