AMD 6600 en macOS: PowerPlayTable en SSDT

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 la clave del registro PP_PhmSoftPowerPlayTable que contiene la tabla SoftPowerPlayTable (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 tarjetas gráficas cambiando su comportamiento y/o gestión de energía y llevar estos ajustes a macOS.

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 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.

SoftPowerPlayTable

Una manera de desactivar Zero RPM en macOS sin cambiar ningún otro parámetro es usando la tabla SPPT obtenida en Windows. Tiene la ventaja de que el comportamiento de la GPU, incluyendo las puntuaciones en GeekBench, no cambia. Para obtener la tabla SPPT hay que recurrir a Windows, donde se genera como 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 a un archivo SSDT o 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 ROM 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 clave 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 (botón Load).
  • Modifica la opción Zero RPM desmarcando la casilla de selección en 2 lugares: pestañas Features y Fan.

Hay 2 maneras de guardar la configuración como tabla SPPT, ambas maneras terminan en un archivo de texto con la tabla SPPT:

1.- Un método más complejo es escribir en el registro la nueva tabla SPPT desde el botón Write SPPT, esta clave 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 en mi caso.
Con la clave 0003 seleccionada, expórtala como archivo de registro (REG), no como archivo de texto (TXT). La estructura del archivo es diferente en cada caso y es más sencillo editar el archivo REG que el archivo TXT.
Regedit exporta la clave 003 completa, no solamente la clave PP_PhmSoftPowerPlayTable.
Cambia la extensión de REG a TXT y guarda el archivo en un lugar accesible desde macOS.

2.- El método más sencillo es, desde MorePowerTool, clic en el botón Save >> en el diálogo Guardar archivos eliges Save As REG (archivo de registro) >> se genera un archivo de texto con extensión REG que contiene exclusivamente la clave PP_PhmSoftPowerPlayTable. Cambia la extensión de REG a TXT y guarda el archivo en un lugar accesible desde macOS.

Fase 2 en macOS

Hay que modificar el archivo de texto para poder usarlo en SSDT o en config.plist >> Convertir el texto del archivo de registro de Windows en una cadena hexadecimal formateada para poder ser incluida en un archivo SSDT (softPowerPlayTable en SSDT) o en el archivo config.plist (softPowerPlayTable en DeviceProperties).

softPowerPlayTable en SSDT

Usa GPU-Z en Windows para exportar la ROM de tu tarjeta gráfica como se comentó más arriba.
La tabla SPPT se extrae desde el archivo ROM con la herramienta upp.

1.- Tabla SPPT desde la ROM

Extraer la tabla SPPT desde la ROM >> Descarga upp y ejecútalo junto al archivo ROM.

git clone https://github.com/sibradzic/upp.git && cd upp
python3 setup.py build
sudo python3 setup.py install
sudo python3 -m pip install click
upp --pp-file=extracted.pp_table extract -r <rom_file>.rom

Después de ejecutar upp, se crea un archivo llamado extracted.pp_table.
Lo copiamos a la carpeta donde tenemos el script pp_table-to-hex-dsl.sh.
Le damos permisos para ejecución: chmod +x ./pp_table-to-hex-dsl.sh.
Lo ejecutamos: ./pp_table-to-hex-dsl.sh. Por defecto busca el archivo extracted.pp_table generado por upp y lo transforma en la cadena hexadecimal para llevar al SSDT.
El texto convertido se muestra en la ventana del Terminal.

"PP_PhmSoftPowerPlayTable"
   Buffer ()
   {
       /* 0000 */  0xA6 , 0x09 , 0x0F , 0x00 , 0x02 , 0x22 , 0x03 , 0xAF , 0x09 , 0x00 , 0x00 , 0x77 , 0x40 , 0x00 , 0x00 , 0x80 , // .....".....w@...
       /* 0010 */  0x00 , 0x18 , 0x00 , 0x00 , 0x00 , 0x1C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x76 , 0x00 , 0x00 , 0x00 , // ............v...
       ...
       /* 09A0 */  0x00 , 0x00 , 0x00 , 0x00 , 0x1E , 0x06 // ......
   }

Copia el contenido de la ventana del Terminal para guardarlo en un archivo de texto o llevarlo directamente al SSDT.

Nota: Ten en cuenta que con este método tenemos la tabla predeterminada de fábrica, sin cambios. No se ha modificado en lo que respecta a la característica Zero RPM.

2.- Tabla SPPT desde el registro de Windows

Este método permite traer a macOS una tabla SPPT modificada para deshabilitar o alterar la característica Zero RPM, personalizando el comportamiento de la tarjeta gráfica.

En la fase Windows hemos guardado la tabla SPPT como clave PP_PhmSoftPowerPlayTable del registro de Windows y la hemos llevado a 2 archivos diferentes:

  • MorePoweTool >> Save >> Save As REG: contiene únicamente la clave PP_PhmSoftPowerPlayTable
  • MorePowerTool >> Write SPPT >> buscamos la clave en el registro según las instrucciones anteriores >> Exportar clave como REG: contiene toda la sección de la tarjeta gráfica, incluida pero no sólo PP_PhmSoftPowerPlayTable.

Cualquiera de los 2 archivos ha de ser transformado a una cadena hexadecimal válida para SSDT. Esta transformación puede ser automatizada mediante el script win-reg-to-hex-dsl.sh o manualmente paso a paso.

  • Método automatizado

Copiamos los archivos traídos desde Windows a la carpeta donde tenemos el script win-reg-to-hex-dsl.sh.
Le damos permisos para ejecución: chmod +x ./win-reg-to-hex-dsl.sh y lo ejecutamos.

./win-reg-to-hex-dsl.sh Archivo-del-registro.reg

El texto convertido se muestra en la ventana del Terminal.

"PP_PhmSoftPowerPlayTable",
Buffer ()
{
     0xa6,0x09,0x12,0x00,0x02,0x22,0x03,0xae,0x09,0x00,0x00,0x22,0x43,0x00,0x00,0x83,
     0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x00,0x00,0x00,
     ...
     x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
     0x00,0x00,0x00,0x00,0x1e,0x06
}

Copia el contenido de la ventana del Terminal para guardarlo en un archivo de texto o llevarlo directamente al SSDT.

  • Método manual

Abre el archivo del registro de Windows con un editor de texto plano que admita reemplazos basados en Grep (yo uso BBEdit pero hay otros que sirven para ello) y aplica estos cambios uno tras otro:

  • Borra todas las claves del registro excepto PP_PhmSoftPowerPlayTable
  • Borra la cadena inicial «PP_PhmSoftPowerPlayTable»=hex:
  • Quita los espacios que hay al inicio de todas las líneas
  • Quita las barras inclinadas invertidas (\) de los finales de línea
  • Reemplaza las comas por » , 0x» sin las comillas
  • Añade 0x al principio del texto
  • Quita todos los saltos de línea (hay que emplear Grep en Buscar y reemplazar) -> cadena en una única línea
  • Añade esto al principio del texto:
    «PP_PhmSoftPowerPlayTable»,
    Buffer ()
    {
  • Añade esto al final del texto:
    }

3.- Incluir la cadena hexadecimal en el archivo SSDT

Este es el código de un SSDT bastante común que se utiliza con tarjetas gráficas AMD. Puedes usarlo como referencia.

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

    Scope (\_SB.PCI0.PEG0.PEGP)
    {
        If (_OSI ("Darwin"))
        {
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Local0 = Package (0x02)
                {
					
				// Insert here your code

				// End mark

				}
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }

    Scope (\_SB.PCI0)
    {
        Method (DTGP, 5, NotSerialized)
        {
            If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
            {
                If ((Arg1 == One))
                {
                    If ((Arg2 == Zero))
                    {
                        Arg4 = Buffer (One)
                            {
                                 0x03                                             // .
                            }
                        Return (One)
                    }

                    If ((Arg2 == One))
                    {
                        Return (One)
                    }
                }
            }

            Arg4 = Buffer (One)
                {
                     0x00                                             // .
                }
            Return (Zero)
        }
    }
}

El texto copiado anteriormente desde la ventana del Terminal se pega en el SSDT, justo entre los comentarios:

// Insert here your code

// End mark

Recuerda modificar la ruta IOReg de tu tarjeta gráfica de acuerdo con tu sistema, puede ser diferente a la del SSDT de ejemplo. Para saber la ruta IOReg 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 IOReg que en mi caso es esta:

PCI0.PEG0.PEGP.BRG0.GFX0

Para una mejor identificación del SSDT, cambia su nombre a SSDT-sPPT.aml y no olvides compilarlo al formato AML. Al compilar el archivo DSL a AML, el compilador ajusta el formato, calcula el tamaño del búfer y añade otros elementos a la cadena.

Coloca SSDT-sPPT.aml en la carpeta APCI y en config.plist, reinicia y vuelve a cargar OpenCore.

4.- Comprobar que el SSDT se carga correctamente

Para ver si todo está correcto, arranca IORegistryExplorer y compara lo que ves con esta imagen (PP_PhmSoftPowerPlayTable entre las propiedades de GFX0 o como se llame el dispositivo gráfico en tu sistema):


Si has añadido cadena SPPT con Zero RPM modificada, has de observar los cambios en las temperaturas de la GPU y en el giro de los ventiladores. Esta gráfica muestra las 3 condicione cuando el sistema no está sometido a gran demanda gráfica:

  • Zero RPM off: Zero RPM desactivada, temperatura raramente supera 35º
  • Zero RPM 45º: ventiladores arrancan a 45º y paran a 40º
  • Zero RPM on: ajuste de fábrica, ventiladores parados por debajo de 60º, temperatura alrededor de 50-55º.

softPowerPlayTable en DeviceProperties

Es otra manera de llevar la tabla SPPT a macOS, como cadena hexadecimal en la sección DeviceProperties de config.plist, con la ruta PCI que corresponda con nuestra tarjeta gráfica. Mi experiencia personal es que el método SSDT funciona siempre, tanto en Monterey como en Ventura y en Sonoma, en cambio este otro método no siempre transmite las modificaciones de Zero RPM a macOS.

1.- Preparación del texto

Partimos del archivo de texto con las claves extraídas desde el registro de Windows.

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 los espacios que hay al inicio 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, hay que emplear Grep en 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

2.- 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:

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.

<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict>
        <key>PP_PhmSoftPowerPlayTable</key>
        <data>>Cadena larga, vista como hexadecimal en editores de archivos PLIST y como Base64 en editores de texto plano</data>
</dict>

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.

Nota de abril de 2023: macOS Ventura 13.4

Hay usuarios con la versión 13.4 de macOS Ventura que no consiguen deshabilitar la función Zero RPM cuando se utiliza la cadena SoftPowerPlayTable (SPPT). Incluso con ella bien cargada desde SSDT o desde archivo config.plist de OpenCore (comprobable mediante IORegistry Explorer), los ventiladores de la GPU están la mayor parte del tiempo parados y la temperatura oscila entre 50 y 55º (aproximadamente 10º más que en Windows), igual que ocurre sin cadena SPPT. Esto sucede más frecuentemente con la tabla SPPT en config.plist, si la tabla SPPT está en SSDT suele funcionar bien.

Hay una manera de recuperar la función perdida. Al modificar el archivo ROM de la vBIOS en Windows con MorePowerTool, en lugar de desactivar Zero RPM (desmarcando su casilla de opción) se deja activada (casilla marcada) pero se modifican las temperaturas a las que arrancan y se paran los ventiladores. Por defecto están configuradas así: Stop Temperature 50º y Start Temperature 60º.

Yo he probado ajustando Start Temperatura a 45º y Stop temperature a 40º, he escrito la nueva clave del registro y la he exportado hasta SSDT o config.plist de OpenCore. Con esta modificación, en macOS los ventiladores arrancan y paran con la temperatura de la GPU oscilando entre 40 y 45º, consiguiendo un resultado similar al que se había perdido. El rendimiento en GeekBench es el esperado en un modelo RX 6600 XT.

Agradecimientos

  • Igor’sLAB de donde he obtenido mucha información
  • Anton Sychev (klich3) que añadió el método SSDT y es el autor de los scripts que permiten llevarlo a cabo de forma automatizada.

Descarga

Aquí tienes un archivo ZIP con los 2 scripts de klich3, el archivo de texto que se obtiene en mi sistema desde win-reg-to-hex-dsl.sh, el SSDT de ejemplo y otro SSDT con la cadena hexadecimal incorporada para ver el resultado.

38 comentarios en «AMD 6600 en macOS: PowerPlayTable en SSDT»

    • Hola, Pablo. ¿Me preguntas a mí a Heriberto que dice que lo consiguió en una RX 570? Porque si es a Heriberto es posible que no lea tu mensaje y no responda.

      Si extraes la cadena SoftpowerPlayTable por alguno de los métodos descritos en el artículo podrías insertarla el el SSDT, donde los comentarios // Insert here your code - // End mark, y usar el SSDT en tu sistema.

      Te doy una opción. Consigue la ROM de tu RX 570 con el método 1.- Tabla SPPT desde la ROM que se hace desde macOS usando la utilidad upp, se genera un archivo llamado extracted.pp_table, manda este archivo a mi email eaperez arroba me punto com y yo intento generar el SSDT para que lo pruebes. Pero necesito también la ruta IOReg a la dGPU, consigue la utilidad gfxutil, ejecútala en Terminal y manda el texto que genera.

      ¿Exactamente qué deseas conseguir? ¿Qué es lo que quieres cambiar o mejorar en el funcionamiento de la RX 570?

      Responder
      • Hola, Pol, muchas gracias por tu respuesta. Lo que quiero es que ambos ventiladores estén en constante movimiento para reducir la temperatura de mi GPU, sé que al llegar a los 55° se activan pero prefiero tenerla de este modo para poder alargar su vida útil y evitar futuros problemas por sobrecalentamiento.

        ¿Cómo se debe utilizar la herramienta upp? Ya tengo los otros datos pero no tengo idea de cómo usar esta herramienta, qué se debe instalar para poder ejecutarla y crear la Tabla SPPT.

        Un poquito de ayuda, Pol, por favor no me vendría nada mal. Gracias

        Responder
        • El uso de upp no es difícil y está bien descrito en el artículo. Abres Terminal y ejecutas esos comandos:

          git clone https://github.com/sibradzic/upp.git && cd upp
          python3 setup.py build
          sudo python3 setup.py install
          sudo python3 -m pip install click
          upp --pp-file=extracted.pp_table extract -r .rom

          Pero ya que me has mandado la ROM de tu GPU, voy a intentar modificarla en Windows con MorePowerTools, generar la tabla SoftPowerPlay, llevarla a macOS y allí fabricar el SSDT para enviártelo.

          Veo que gfxutil devuelve la ruta IOReg de la GPU como /PCI0@0/PEG0@1/GFX0@0. ¿Ahora usas algún otro SSDT para la GPU? Si la respuesta es sí, arranca macOS con ese SSDT inactivo y vuelve a enviar la salida de gfxutil. Si la respuesta es no, nos quedamos con esa ruta IOEReg como válida.

          ¿Cómo has obtenido esa ROM que me has mandado? ¿La extrajiste con GPU-Z en Windows, como se dice en el artículo? ¿O la has conseguido de alguna base de datos de ROM, una que coincida con tu modelo de RX 570?

  1. Hola, tengo una consulta a ver si me ayudas a saber por dónde empezar, tengo una MSI Gaming X 6600XT con Monterrey con una placa Gigabyte Aorus Z390, core i5 9600 KF. Implementé el SSDT_VEGA.aml en vez de los parches Henbury pero pasa algo extraño y es que en la tarjeta gráfica sólo puedo utilizar un puerto a la vez, es decir, si conecto un monitor al HMDI y uno al Display Port los monitores quedan en pantalla negra y uno apenas parpadea, pero si sólo dejo uno conectado sí da imagen. En Windows ambos monitores funcionan.

    Sabes qué puede ser o qué se podría mirar para arreglar este bug?

    Responder
    • Hola, Tamy, dime qué versión de OpenCore estás utilizando y manda tu archivo config.list y el archivo SSDT_VEGA a la dirección eaperez arroba me punto com.
      Hay que revisar qué puede estar fallando porque debería funcionar por 2 monitores, seguro.
      Una cosa más, consigue la utilidad gfxutil (gfxutil-1.83b-RELEASE), ejecútala y dime la línea que corresponde a la gráfica, suele estar de las últimas y contener GFX0.

      Responder
  2. Saludos, Emilio. Tengo una Mac Pro 5,1 y estoy usando Open Core Legacy Patcher 0.6.4 con una tarjeta de video RX6600 XT con macOS 12 Monterey actualmente, pero cuando trato de hacerle el update a Ventura 13 pierdo el video. Vi en tu blog que lo habías logrado. ¿Puede ayudarme? ¿Necesito algún KEXT en específico para poder utilizar esta tarjeta de video en macOS 13 Ventura?

    ¡Gracias!

    Responder
    • Buenas tardes, Edgar. Date cuenta de que tu situación es diferente a la mía.
      Yo tengo un hackintosh relativamente moderno (2019) que no necesita OCLP, solamente OpenCore, y que acepta fácilmente Monterey y Ventura con la misma configuración de OpenCore.
      Tú tienes un Mac relativamente obsoleto (2010) que necesita OCLP para funcionar. Al que le has puesto una gráfica moderna y potente.

      Como seguro ya sabrás, tu Mac (CPU) carece de las instrucciones AVX2.0 por lo que en teoría está fuera de soporte para Ventura.
      Los creadores de OCLP han estado trabajando en este asunto y han conseguido que se pueda instalar Ventura en Mac Pro como el tuyo que tengan una gráfica AMD moderna. Por ahora esta opción está restringida a las familias Polaris (RX 580 y otras) y Vega (Vega 56/64/Radeon VII). Pero para la familia Navi (la tuya es Navi 23) todavía este trabajo está sin completar.

      _________________________________________

      Explicación técnica (de la guía de OCLP)

      Para usuarios con Mac Pros de 2008 a 2013 (MacPro3,1-6,1) e iMacs de 2009 a 2011 (iMac9,1-12,2), tenga en cuenta que macOS Ventura ahora requiere soporte AVX2.0 en la CPU para la aceleración nativa de la GPU. Por lo tanto, si bien su GPU puede ser compatible de forma nativa, no puede ejecutar Ventura oficialmente con estas GPU.

      Las CPU compatibles con AVX2.0 son Haswell o más nuevas, con las que no se pueden actualizar las Mac Pro anteriores a 2019.

      Actualmente, en este momento, OpenCore Legacy Patcher solo admite aplicar el parche a los archivos de sistema, relativos a gráficos AMD, en las familias Polaris y Vega para que ya no requieran AVX2.0.
      Recientemente recibimos una donación de AMD RX 6600, por lo que esperamos que en el futuro el proyecto pueda admitir AMD Navi con Mac anteriores a Haswell. Sin embargo, no se pueden dar estimaciones de tiempo.

      _________________________________________

      Como ves, tu gráfica todavía no está soportada oficialmente por OCLP.

      Como información adicional, la RX 6600 que recibió khronokernel (principal desarrollador de OCLP) se la envié yo a Canadá hace ya 2 meses para ayudar en el proyecto y sé que la tiene instalada en un Mac de los que usa para el desarrollo pero no debe ser tan fácil porque todavía no han publicado una versión de OCLP que incluya estas GPU (6600, 6800 y 6900).

      Cuando lo consigan, lo publicarán seguro y vendrá incluido en alguna futura versión de OCLP (0.6.5 actualmente).

      Así que por ahora sigue con Monterey y revisa de vez en cuando el GitHub de OCLP para saber cuándo resuelven este inconveniente.

      Un saludo, Emilio.

      Responder
  3. Buenas,

    he seguido todos tus pasos, desde la extracción de la BIOS, creación de la sPPT KEY en RegEdit con el MorePowerTool, hasta la limpieza total (una sola cadena de texto) con Sublime Text en MacOS (también lo intenté con BBEdit) y crear la KEY PP_PhmSoftPowerPlayTable en el DP usando OpenCore Editor, pero no consigo desactivar el ZERO RPM en MacOS. Sé que está hecho, porque al entrar en el Adrenaline de AMD veo el Zero RPM desactivado y la KEY PP_PhmSoftPowerPlayTable en el RegEdit.

    Siguiendo otro tutorial parecido (5T33Z0) conseguí hacerlo para una RX 570, pero no lo logro con esta Sapphire RX 6600.

    Uso OpenCore 0.9.1 con iMacPro1.1. Hay algo que se me escape? Se te ha dado el caso de que no funcione siempre? Te agradecería cualquier ayuda que puedas darme.

    Muchas gracias de antemano y saludos !!!

    Responder
    • He visto casos con RX 6600 (XT o no XT) en que, aún con todo el proceso bien hecho, macOS sigue teniendo Zero RPM habilitada y los ventiladores de la gráfica están parados la mayor parte del tiempo. Lo he visto sobre todo en Ventura, menos en Monterey. No tengo clara la causa.
      Cuando has hecho la parte de Windows ¿has modificado algo más o solamente has desactivado Zero RPM? Si has hecho varios cambios, es mejor comenzar haciendo sólo el de desactivar Zero RPM para disminuir la probabilidad de fallos.
      Está claro que el punto en que más fácilmente se puede cometer un error es al convertir la clave del registro en una cadena apta para config.plist. Otro punto que a algunos usuarios les ha dado la lata es que la ruta PCI a la gráfica no esté bien configurada en config.plist. Pero a veces, con todo bien hecho, sin errores, no se consigue el resultado esperado.
      Lo único que puedo hacer es repasar contigo estos puntos para ver si coincidimos en que están bien. Si lo deseas, puedes mandarme por email a la dirección eaperez arroba me punto com con estos datos:

      • clave extraída en Windows sin modificación, tal como la coges del registro
      • archivo config.plist que estás usando con la clave sPPT ya incluida
      • ruta PCI a la gráfica (gfxutil o Hackintool).
      Responder
  4. Buenas, cómo añado el valor hexadecimal creado a través de este método sPPT? A un SSDT. Es decir, para que cargue el SSDT de la gráfica.

    Responder
    • Hola, Javir, la verdad es que no lo he hecho nunca.

      En el canal Hackintosh España de Youtube tienen un vídeo precisamente sobre esto, añadir la cadena como una propiedad en el archivo SSDT en lugar de hacerlo en el archivo config.plist. Búscalo con el título Hackintosh España. Radeon Rx6600XT. SoftPowerPlayTable.

      Responder
  5. Buenas tardes, tengo una ADM RADEON RX 580 8GB y he intentado hacer el proceso, pero en la aplicación de MOREPOWERTOOL no me aparece ninguna gráfica, intento cargar el archivo generado por GPU-Z pero me da error, «no compatible», supongo que porque no hay seleccionado ningún modelo de gráfica.
    El problema que tengo es que a menudo tengo irregularidades gráficas en color rojo o azul y se me bloquea el sistema, a veces en un momento vuelve a la normalidad y otras tengo que reiniciar.
    Quizá esta no sea la solución para mi problema, pero quería probarlo. Tengo la IDGP UHD630 en modo apoyo y la DGPU como principal, OC 0.8.7 y MacOS ventura Beta 13.1 (22C5059b).

    Responder
    • Buenas noches. Tengo guardada una RX 580, probaré a crear la sPPT con ella a ver si me pasa lo mismo que a ti o descubro alguna explicación a lo que cuentas.
      Esos fallos de colores y bloqueos no son habituales con esta gráfica, por lo general funciona muy bien sin estos problemas.
      Dime algo más de tu hardware (placa base y CPU) y de OpenCore (usas WhateverGreen? qué modelo de SMBIOS? alguna configuración especial para la AMD en config.plist?).

      Responder
    • Pues tienes razón, he probado con una XFX RX 580 de 8 GB y me pasa lo mismo que a ti. MorePowerTools no carga el archivo rom extraído desde GPU-Z. Es más, he descargado una rom para esta tarjeta desde la colección de VBIOS de TechPowerUp y tampoco se carga en MorePowerTools, siempre con el mensaje de no soportado.
      No sé por qué sucede esto. Yo he probado las RX 6600 (XT y no XT) para escribir el artículo y con ellas todo funciona bien.
      De todas maneras, sigo pensando que tu GPU ha de funcionar bien aunque no crees la tabla.
      Dime esos datos que te pedí y, si lo deseas, manda la EFI comprimida por algún servicio como Wetransfer o similar.

      Responder
      • Buenas noches, Pol, ya ves, te ha pasado lo mismo.
        Bueno te paso mis datos de hardware.

        Hardware:
        – Placa: MSI MPG Z490 GAMING EDGE WIFI;
        – Gráfica: AMD Radeon RX 580 8 GB;
        – CPU: Intel Core i9 10850 K Avengers Edition;
        – Ram: Corsair (2×16) 32 GB;
        – Monitor: MSI Optic MAG321CURV 31,5″ 4K.

        Con este equipo me pasan a veces extraños y congelaciones, casi siempre aparecen cuando estoy trabajando con AE o Final Cup, o sea, cuando hago algo que exige rendimiento de vídeo.
        Por otra parte, la integrada UHD 630 la tengo activa y como principal la RX 580 en modo headless, aún así no veo que la IGPU haga nada, cuando miro Istatics la 630 nunca se mueve en ningún proceso, es eso normal? Lo más importante es mirar, si es posible, la configuración que tengo por si ves algo que haya podido pasar por alto o esté incorrecto, te lo agradezco de antemano.

        La SMBIOS es iMac20,2; versión de MacOS Ventura 13.1 (22C65), Versión de OC 0.8.7, todo actualizado, kext y drivers.
        Por lo general funciona todo excelentemente, pero a veces me pasa lo comentado, configuración especial supuestamente lo normal y correcta para que esté activa la iGPU pero nada raro implementado, ni siquiera tengo framebuffer, solo el ID, pero me gustaría poder hacer el hexadecimal para mejorar el rendimiento gráfico y quizá que desaparezcan los extraños gráficos y congelaciones al usar programas exigentes.

        He recibido ayuda de otros compañeros de Hackintosh España a los que agradezco mucho su ayuda y me va todo a full pero eso es lo único que a veces me pasa, sólo a veces.

        Espero poder hacer el hexadecimal si es posible con tu ayuda Pol, a ver si lo podemos solventar. Saludos cordiales.

        Responder
        • Buenas noches.
          Para saber si la iGPU funciona en modo sin cable, instala Intel Power Gadget (IPG) y BlackMagic RAW Speed Test.
          Con IPG en marcha (segunda ventana, línea verde de la iGPU) arrancas el test y observas si la línea de la iGPU sube y baja con los requerimientos del test. Como en esta imagen:

          iGPU headless mode

          Si se mantiene plana, no está haciéndolo bien.

          Miraré la EFI con detalle y te comentaré algo por aquí.

          Has visto que junté los 2 mensajes, para una lectura más cómoda.

        • Buenas tardes, Pol, he hecho la prueba y efectivamente la línea verde está plana y no hace nada de nada, a cero todo el tiempo, por lo que la iGPU no está trabajando, y también veo que la temperatura de la CPU se pone a 100% pero eso será por otro motivo. En definitiva, algo debo tener mal.

        • Tengo que mirar despacio tu EFI para ver por qué no actúa la iGPU.
          La CPU es normal que trabaje a tope en unas fases de ese test, el test va probando CPU y GPU de forma alternativa. Sin olvidar que el trabajo que haría la iGPU ahora lo asume la CPU.

        • Te propongo unos cambios en las propiedades de la iGPU en config.plist. Prueba estas en lugar de las que tienes ahora y dime si la línea verde sube y baja con el test.

          iGPU Comet Lake

          Van 2 device-id, pruebas primero con el que no tiene marca de comentario y, si falla, pruebas con el otro.

        • Buenas noches Pol, gracias por los cambios, te comento, ha mejorado el rendimiento de los ventiladores que ahora aceleran cuando deben y perfectamente, pero ahora lo que no veo en Intel Power Gadget es la GFX, no está la línea verde, antes estaba aunque plana a cero sin moverse pero estaba detectada, ahora no aparece, paso capturas de las pruebas.

          Buenas de nuevo Pol, he probado eliminando un device-id sin # y el valor, y luego con el otro valor, pero no la detecta, ¿hay que dejar la #? ¿puedo probar con el valor que tenía anteriormente que sí me la detectaba?

        • Hola ya ves que he juntado los 2 mensajes en uno.

          La app IPG debería detectar la iGPU y mostrar la línea verde, qué extraño. Por supuesto, prueba con el device-id que usabas antes y que sí la detectaba, no quites las 3 últimas claves enable-metal, igfxfw y rps-control.

          Los device-id han de ir sin la marca de comentario #, ya has supuesto que puse 2 para probar primero uno y después el otro, al que pruebas le quitas # y al que no se la dejas puesta. Pero haz la prueba con tu anterior device-id a ver qué pasa.

        • Buenas de nuevo, he probado todas las combinaciones e incluso mi anterior configuración y no me detecta la iPGU, no aparece la línea verde en IPG, es muy extraño, siempre hago Reset NVRAM pero nada.
          Seguiré probando y cuando lo consiga comentaré…
          Muchas gracias Pol.

        • Pues sí que es raro, incluso con la configuración que tenías antes y que al menos mostraba la iGPU aunque sin ayuda en la codificación.
          Pregunta tonta: ¿has deshabilitado la IGPU en BIOS?

          Otra opción posible: usar SMBIOS de modelos de Mac que no tienen iGPU para que la AMD sea la única tarjeta gráfica. Se trata de probar el modelo iMacPro1,1 y ver si te gusta más cómo funciona el sistema. Para este SMBIOS hay que:
          – deshabilitar la iGPU en BIOS
          – quitar el código para la iGPU de config.plist.

        • Hola, Pol, he probado numerosas combinaciones y no consigo que la línea verde se mueva, incluso he probado con programas como Final Cut y AE para ver si había movimiento, nada.
          En cuanto a BIOS, lo tengo habilitado, me aparece la línea verde en IPG pero, como digo, no hace nada.
          Envío capturas de pruebas y estado del bios. El SMBIOS que utilizo es iMac20.2, es el que mejor me funciona, quizá deba probar iMacPro1.1, lo haré deshabilitando en el config.plist el Pci 2.0 de la iGPU.
          Seguiré comentando. Saludos.

        • Las capturas no las puedo ver porque los enlaces dirigen a tu disco local. Has de subirlas a algún sitio desde el que yo las pueda ver o descargar. O enviarlas por correo a eaperez arroba me punto com (lo escribo así para evitar los bots de spam). Y podemos seguir desde allí.

          El cambio de SMBIOS es una posibilidad, si te gusta más iMac20,2 quédate con él aunque una de las ventajas principales de este SMBIOS es utilizar la iGPU para codificación de vídeo y en tu caso todavía no la tienes habilitada. La ventaja de iMacPro1,1 es que te desentiendes de la iGPU, este modelo de Mac no tiene iGPU y el sistema viene diseñado para utilizar solamente la AMD para todas las tareas. Es cuestión de probar y ver qué sensación tienes, si te gusta más o no.

        • Hola, Pol, tras muchas pruebas y con configuraciones distintas y tus aportes y también con los aportes del grupo Hackintosh España ¡hemos dado en el clavo!, la configuración que funciona en mi caso y más arriba tenéis mi Hardware es la siguiente:

          SMBIOS iMac20.2 IGPU (Headless) + dGPU
          BIOS: dGPU (grafica principal o inicial
          IGPU (habilitada + multimonitor)
          IGPU: AAPL,id-plataforma-ig = 0300C89B

          Agradecer a Pol su ayuda y también al grupo Hackintosh España del que soy usuario. Muchas gracias a todos por vuestra ayuda!!!

        • Me alegro. Pero AAPL,id-plataforma-ig = 0300C89B era la que estabas utilizando ya, no? qué es lo que ha cambiado para que ahora funcione bien? has quitado la clave device-id? o activar multimonitor en BIOS (opción que no existe en muchas placas)?
          Supongo que ahora sí que ves movimientos de la línea verde en Intel Power Gadget no?
          En fin, a disfrutar de la máquina.

          Nota: te vuelvo a recordar que las capturas de pantalla o imágenes que están en tu disco no las podemos ver aunque pongas el enlace porque no es un enlace accesible de un sitio de Internet sino tu propio ordenador. Si mandas algunas a mi email (ver mi mensaje anterior) puedo añadirlas a tu mensaje.

    • Las instrucciones son para obtener la clave PowerPlayTable del registro de Windows, esa clave no existe en macOS por lo que no la puedes sacar desde ahí. Pero dime qué buscas y qué hardware tienes. ¿Es solamente para bajar la temperatura de la gráfica en macOS o para alguna otra finalidad? ¿Modelo de gráfica (6600, 6800, etc.)? Dímelo porque puede ser que lo que intentas hacer se pueda conseguir desde macOS mediante alguna otra manera.

      Responder
  6. Pol, no sé cuál es el problema pero al actualizar (OpenCore 0.8 y todos los kexts al día), al seleccionar Mac Installer (la partición que sale para la actualización) plum, kernel panic, y pone algo así el error:

    com.apple.kec.corecrypto (12.0)

    Hay alguna opción que tener en cuenta en OpenCore para pasar de BigSur a Monterey?

    Responder
    • Buenas noches. Me dijiste que tenías X299 con 7900X y RX 5700 XT. Supongo que estás actualizando de Big Sur a Monterey, no instalando Monterey desde cero. Y la EFI que falla al instalar Monterey arranca bien en Big Sur, es así?
      Necesitaría ver tu EFI, intenta subirla en ZIP a algún sitio desde el que la pueda descargar, o enviarla por Wetransfer o similar a eaperez arrroba me punto com.
      Marca y modelo de la placa base también puede ayudar. Y marca y modelo del SSD en el que instalas.
      Antes de nada, te recuerdo que Monterey, para instalar o actualizar bien, requiere SecureBootModel = Default (no Disabled).
      No tengo claro que corecrypto sea quien genera el kernel panic, puede ser que salga en el log pero el kernel panic puede originarse en otra cosa.

      Responder
  7. Mi gráfica actual es la 5700XT, si esta va bien en la 12.4 ya no me da tanto pánico actualizarme gracias a tus respuestas.
    Tengo OpenCore 0.8 con todos los kexts al día.
    Mi CPU tiene algo mas de tiempo es la plataforma x299 con la CPU 7900X.

    Muchas gracias.

    Responder
    • La 5700 XT parece funcionar bien desde 12.3.1, por supuesto en 12.4 también.
      Tu placa y CPU no son ultramodernas pero todavía perfectamente válidas, ligeramente más complicadas de tener con macOS que los más corrientes chipsets Z390 – Z490 – Z590 pero buen material. Mi placa Z390 Aorus Elite y CPU 9900K calculo que son solamente 1 año más jóvenes que las tuyas, tal vez 2017 contra 2018, y funcionan tan bien que me da mucha pereza actualizar a algo más moderno.
      Supongo que con esa CPU tienes SMBIOS de iMacPro o MacPro, al no tener gráfica integrada.
      En fin, en mi opinión puedes actualizar sin mayores preocupaciones.

      Responder
  8. Hola pol, una consulta, estoy muy contento con mi hack en Big Sur 11.6.6 pero ya sólo de leer problemas de gráfica en Monterey me echa para atrás, en la 12.4 se han arreglado los problemas que había? y Monterey va mejor que Big Sur ? vale la pena ? tendría que mapear de nuevo los USB o me valdría lo que tengo? qué tendría que tener en cuenta al pasarme a Monterey (aparte del SSD que ya lo tengo solventado)? La verdad, tema de ventiladores me daría igual porque va todo por RL custom pero, si el rendimiento es peor, no me pasaría.

    Son ya más de una pregunta, gracias de antemano y de enseñarnos a resolver problemas con Mac.

    Responder
    • Buenas tardes, vamos por partes.

      Si Big Sur te gusta cómo va, puedes quedarte con él perfectamente, es un sistema excelente que funciona muy bien y supuso un cambio muy grande respecto al anterior Catalina. Igual te digo que, si deseas pasar a Monterey, no veo inconveniente porque también funciona muy bien pero lo que siempre hay que mirar es que no tengas alguna aplicación importante en Big Sur que tenga algún inconveniente en Monterey. Yo tengo ambos en el mismo PC y el rendimiento es el mismo en ambos, yo no observo diferencias, las puntuaciones de los tests de CPU y de GPU son idénticos en ambos sistemas.

      No sé qué gráfica tienes, supongo que no es 6600 porque no funciona antes de Monterey, en cambio las 6800 y 6900 sí funcionan ya en Big Sur.
      Los problemas gráficos en la versión Monterey 12.3 fueron solventados en la versión siguiente 12.3.1 y afectaban a las familias AMD 5500, 5700, 6800 y 6900 y no afectaban a la serie 6600. Era una bajada grande de rendimiento. Enseguida apareció un parche que lo solucionaba añadiendo código en config.plist pero ya te digo que en 12.3.1 el problema desapareció.

      Lo que hemos visto muchos usuarios que tenemos macOS y Windows en el mismo PC es que las tarjetas de la serie 6000 (6600, 6800 y 6900) suelen funcionar unos 10-15º más calientes que en macOS que en Windows, siempre dentro de cifras que no son peligrosas en absoluto. Y lo que yo observé por casualidad al probar el parche para Monterey 12.3 es que ese parche bajaba la temperatura en reposo de la gráfica en macOS a los niveles de Windows al desactivar la característica Zero RPM. Posteriormente comprobé que usando la propiedad PowerPlayTable en macOS, obtenida desde Windows, se podía desactivar también Zero RPM y trabajar con la gráfica a 35º en reposo en lugar delos 50º habituales sin esa opción.

      El mismo mapa de puertos USB vale para Big Sur y para Monterey, al menos yo uso el mismo.

      Son varias respuestas, comenta si tienes alguna duda sobre ello.

      Responder
  9. 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?

    Responder
    • Hola, en este caso es recomendable desactivar en Preferencias del Sistema >> Pantallas la frecuencia de refresco variable (40-60 Hz), si pones 60 Hz como frecuencia fija el mensaje que refieres suele dejar de aparecer.

      Responder

Deja un comentario