Cómo instalar macOS 12 Monterey o macOS 13 Ventura en la placa base Gigabyte Z390 Aorus Elite usando OpenCore. Se proponen configuraciones para tener la tarjeta AMD RX 6600 como tarjeta principal y la integrada en modo sin cable o para tener la iGPU Intel como tarjeta única sin dGPU. La carpeta EFI está disponible para diferentes SMBIOS.
Nota: enlace para descargar la carpeta EFI disponible al final del artículo. Actualizada a OpenCore 0.9.1.
Hardware
- Placa base Gigabyte Z390 Aorus Elite
- Procesador Intel i7 9700
- Gráficos iGPU Intel UHD 630
- dGPU AMD Radeon RX 6600 8GB
- Sonido Realtek ALC1220
- Ethernet Intel I219V7
- Wifi + BT Fenvi FV-T919 (BCM94360CD).
¿Qué funciona bien?
- Tarjeta gráfica Radeon (VDA decoder Fully Supported)
- Apagado, reinicio y reposo
- Sonido (ALC1220, HDMI)
- Puertos USB (mapa de puertos USB específico para esta placa)
- AirDrop, iMessage.
Configuración de BIOS (versión F10h)
- CFG Lock: Deshabilitado
- CSM: Deshabilitado
- VT-d: Deshabilitado
- Fast Boot: Deshabilitado
- OS Type: Windows 8/10 WHQL
- Platform Power Management: deshabilitado
- XHCI Hand-Off: Habilitado
- Network Stack: deshabilitada
- Wake on LAN: Deshabilitado
- Secure Boot: deshabilitado
- DVMT Pre-allocated: 256M o superior
- Integrated Graphics: Deshabilitado / Habilitado (según SMBIOS).
OpenCore 0.8.8
Para que la instalación / actualización tenga éxito, se deben configurar 3 parámetros relacionados con la seguridad:
- SecureBootModel=Default en config.plist (Apple Secure Boot como Default establece el mismo modelo que existe en SMBIOS)
- SIP habilitado (csr-active-config=00000000 en config.plist)
- Gatekeeper habilitado (sudo spctl –master-enable en Terminal).
Estas opciones de seguridad se pueden cambiar después de la instalación ya que no son necesarias para que Monterey / Ventura funcionen.
Nota: en las versiones más recientes de Ventura sudo spctl –master-enable (o disable) ha sido reemplazado por sudo spctl –global-enable (o disable).
SMBIOS
El modelo SMBIOS que mejor funciona en mi sistema es iMac19,1. Este modelo de Mac requiere:
- AMD dGPU como tarjeta principal
- Intel 630 iGPU habilitada en BIOS
- Código iGPU para headless mode en config.plist.
También se pueden utilizar SMBIOS de iMacPro1,1 o de MacPro7,1. Ambos funcionan muy bien. Estos modelos de Mac requieren:
- AMD dGPU como tarjeta principal
- Intel 630 iGPU deshabilitada en BIOS (estos modelos de Mac carecen de GPU integrada, sólo tienen GPU AMD)
- RestrictEvents.kext para evitar advertencias de mala configuración de RAM (sólo MacPro1,1)
- CPUFriend.kext: no es obligatoria, pero en mi opinión mejora la administración de energía de la CPU (sólo MacPro1,1).
CPUFriend.kext
Aunque la CPU se detecta bien con SMBIOS de MacPro7,1, mi impresión es que no funciona a baja frecuencia tan a menudo como con iMac 19.1 o iMacPro1,1. Por esta razón he generado una extensión CPUFriendDataProvider.kext desde el comando CPUFriendFriend para acompañar a CPUFriend.kext. Esta extensión es específica para la CPU i7-9700. Con estas 2 kexts (CPUFriendDataProvider.kext + CPUFriend.kext) la CPU muestra una administración de energía correcta y la frecuencia mínima baja a 800 MHz cuando el sistema está inactivo.
SSDT, Drivers y Tools
SSDT
- SSDT-AWAC-DISABLE: para corregir errores con el reloj del sistema en placas base Z390, B460, Z490
- SSDT-EC-USBX: Embedded Controller ficticio en Skylake y siguientes, también corrige la alimentación USB
- SSDT-PLUG: administración de energía en Haswell y sigioentes; para configurar el parámetro plugin-type=1 en el primer procesador
- SSDT-PMC: compatibilidad nativa con NVRAM en sistemas que carecen de ella, por ejemplo, chipset Z390
- SSDT-USBW: para salir del modo de suspensión con un solo toque del ratón o del teclado (este SSDT funciona conjuntamente con USBWakeFixup.kext) >> muy probablemente no sea necesario si el dispositivo USB en DeviceProperties tiene acpi-wake-type=01.
Drivers
- HfsPlus.efi: para reconocer dispositivos HFS+
- OpenRuntime.efi: controlador esencial para ejecutar macOS
- OpenCanopy.efi: menú selector gráfico con temas
- CrScreenshotDxe.efi: capturas de pantalla en OpenCore.
Tools
- OpenShell.efi: shell UEFI para realizar tareas de línea de comandos desde OpenCore.
config.plist
Algunas configuraciones remarcables:
- DeviceProperties >> Add >> PciRoot(0x0)/Pci(0x14,0x0): acpi-wake-type como data con valor 01, para mejorar la activación desde el modo de suspensión
- Misc >> Boot >> PickerAttributes=144 para habilitar Flavours
- NVRAM> 7C436110-AB2A-4BBB-A880-FE41995C9F82> boot-args: alcid=7 agdpmod=pikera (agdpmod=pikera no es necesario con tarjetas RX 580 u otros modelos Polaris, sólo con las tarjetas RX 6600 y las series Navi)
- Misc >> Security >> AllowToggleSip=True para mostrar en el menú selector la herramienta ToggleSIP que permite cambiar fácilmente entre SIP habilitado y SIP deshabilitado para el arranque actual.
Intel UHD 630 headless mode
- iGPU y dGPU deben estar habilitadas en BIOS con la dGPU como tarjeta principal
- No debe haber ningún cable entre el puerto HDMI de la iGPU y cualquier tipo de pantalla
- Lilu y WhatEverGreen bien instaladas
- SMBIOS iMac19.1.
Hay que añadir en DeviceProperties >> Add:
<key>PciRoot(0x0)/Pci(0x2,0x0)</key> <dict> <key>AAPL,ig-platform-id</key> <data>AwCRPg==</data> <key>device-id</key> <data>mz4AAA==</data> <key>enable-metal</key> <data>AQAAAA==</data> </dict>
Este código tiene valores de datos en Base64, en los editores de archivos plist se pueden ver como hexadecimales, por ejemplo AwCRPg== en Base64 (AAPL,ig-platform-id) es 0300913E en hexadecimal.
Para verificar si la función VDA Decoder está habilitada, puedes obtener la aplicación Hackintool (Fully Supported o Failed en la primera pestaña Sistema).
Notas:
- AAPL,ig-platform-id=07009B3E es imprescindible para detectar la iGPU como Coffee Lake
- device-id=9B3E000 para que la iGPU se vea como Intel UHD Graphics 630 en lugar de Kabylake Unknown (opcional)
- enable-metal=01 para habilitar Metal 3 en Ventura.
Intel UHD 630 como GPU principal
Si no tienes una tarjeta gráfica externa y necesitas usar la iGPU como tarjeta única has de configurar SMBIOS de iMac19,1 SMBIOS con código en config.plist para parchear el framebuffer y otras propiedades de forma que la iGPU sea bien detectada:
<key>PciRoot(0x0)/Pci(0x2,0x0)</key> <dict> <key>AAPL,ig-platform-id</key> <data>BwCbPg==</data> <key>device-id</key> <data>mz4AAA==</data> <key>device_type</key> <string>VGA compatible controller</string> <key>enable-hdmi20</key> <data>AQAAAA==</data> <key>enable-metal</key> <data>AQAAAA==</data> <key>framebuffer-con0-busid</key> <data>AAAAAA==</data> <key>framebuffer-con0-enable</key> <data>AQAAAA==</data> <key>framebuffer-con0-pipe</key> <data>EgAAAA==</data> <key>framebuffer-con1-busid</key> <data>AAAAAA==</data> <key>framebuffer-con1-enable</key> <data>AQAAAA==</data> <key>framebuffer-con1-pipe</key> <data>EgAAAA==</data> <key>framebuffer-con2-busid</key> <data>BAAAAA==</data> <key>framebuffer-con2-enable</key> <data>AQAAAA==</data> <key>framebuffer-con2-pipe</key> <data>EgAAAA==</data> <key>framebuffer-con2-type</key> <data>AAgAAA==</data> <key>framebuffer-patch-enable</key> <data>AQAAAA==</data> <key>framebuffer-stolenmem</key> <data>AAAwAQ==</data> <key>force-online</key> <data>AQAAAA==</data> <key>hda-gfx</key> <string>onboard-1</string> </dict>
Nota: force-online=01 es imprescindible, fuerza la activación de todos los conectores de la iGPU.
AMD RX 6600 en Ventura con SMBIOS de MacPro o iMacPro
Las tarjetas AMD de la serie Navi funcionan bien en Ventura cuando se usa SMBIOS de iMac con agdpmod=pikera en boot args como la única configuración requerida. Pero al usar SMBIOS de MacPro o iMacPro muchos usuarios informan de pantalla negra. La forma más sencilla de solucionar esto es agregar en DeviceProperties de config.plist código que configura el framebuffer Henbury para cada uno de los 4 puertos de esta GPU.
De forma predeterminada, se carga el framebuffer Radeon (ATY,Radeon). Pero en AMDRadeonX6000Framebuffer.kext >> Contents >> Info.plist podemos ver que AMDRadeonNavi23Controller tiene ATY,Henbury como framebuffer y las tarjetas de la serie 6600 son Navi 23. Por eso se elige este framebuffer.
El parche se agrega de esta manera:
<key>DeviceProperties</key> <dict> <key>Add</key> <dict> <key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key> <dict> <key>@0,name</key> <string>ATY,Henbury</string> <key>@1,name</key> <string>ATY,Henbury</string> <key>@2,name</key> <string>ATY,Henbury</string> <key>@3,name</key> <string>ATY,Henbury</string> </dict> </dict> <key>Delete</key> <dict/> </dict>
Notas:
- La ruta PCI a la GPU puede ser la misma en tu sistema pero es conveniente verificarla con Hackintool (aplicación) o gfxutil (utilidad de terminal).
- Esto no es necesario para Monterey.
- Esto no es necesario para RX 580 y otras tarjetas Polaris.
- El parche Henbury hace que las puntuaciones obtenidas en el test GeekBench 5 Metal sean claramente más bajas que sin el parche.
Si fuera necesario para otras tarjetas Navi, los framebuffers son diferentes para cada familia:
- 5500 ATY, Python
- 5700 ATY, Sumador
- 6600 ATY,Henbury
- 6800 ATY, Belknap
- 6900 ATY,Carswell
Método alternativo para evitar la pantalla negra con SMBIOS MacPro o iMacPro en Ventura sin parche Henbury
Aunque el parche Henbury soluciona este problema, tiene como efecto colateral una disminución evidente de las puntuaciones de GeekBench 5.
El uso de SSDT-BRG0.aml corrige la pantalla negra en Ventura con modelos SMBIOS que carecen de iGPU. Este SSDT permite definir un dispositivo pci-bridge que falta añadiendo un dispositivo BRG0 del que cuelga la dGPU. Con este SSDT el parche Henbury ya no es necesario. Con SSDT-BRG0 se obtienen las puntuaciones esperadas en GeekBench 5.
/* * This table provides an example of creating a missing ACPI device * to ensure early DeviceProperty application. In this example * a GPU device is created for a platform having an extra PCI * bridge in the path - PCI0.PEG0.PEGP.BRG0.GFX0: * PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) * Such tables are particularly relevant for macOS 11.0 and newer. */ DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000) { External (_SB_.PCI0.PEG0.PEGP, DeviceObj) Scope (\_SB.PCI0.PEG0.PEGP) { /* * This is a PCI bridge device present on PEGP. * Normally seen as pci-bridge in I/O Registry. */ Device (BRG0) { Name (_ADR, Zero) Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0x0F) } Else { Return (Zero) } } /* * This is an actual GPU device present on the bridge. * Normally seen as display in I/O Registry. */ Device (GFX0) { Name (_ADR, Zero) // _ADR: Address } } } }
Comprueba la ruta PCI a tu dGPU, la mía es /PCI0@0/PEG0@1/PEGP@0/GFX0@0 por lo que mi SSDT tiene estas 2 líneas:
External (SB.PCI0.PEG0.PEGP, DeviceObj) Scope (_SB.PCI0.PEG0.PEGP)
Modifica el SSDT (si es necesario) para ajustarlo a tu sistema.
¿Cómo verificar la ruta PCI?
- utilidad gfxutil en Terminal, busca la línea que contiene GFX0 al final
- Hackintool >> pestaña PCIe >> ratón sobre la línea Navi 23 >> copy IOReg path.
Existen algunas configuraciones más avanzadas del SSDT como por ejemplo SSDT-VEGA.aml que, además de crear dispositivos, lo hace imitando la manera en que están configurados los Mac (dispositivos EGP0 y EGP1 en lugar de BRG0). SSDT-VEGA presenta las mismas ventajas que SSDT-BRG0: parche Henbury innecesario y puntuaciones normales en GeekBench 5. También requiere la comprobación de la ruta PCI a tu tarjeta gráfica. En el código de ejemplo mantengo la misma ruta que en el SSDT anterior.
DefinitionBlock ("", "SSDT", 2, "HACK", "VEGA", 0x00000000) { External (_SB_.PCI0, DeviceObj) External (_SB_.PCI0.PEG0, DeviceObj) External (_SB_.PCI0.PEG0.PEGP, DeviceObj) Scope (\_SB) { Scope (PCI0) { Scope (PEG0) { Scope (PEGP) { Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (Zero) } Else { Return (0x0F) } } } Device (EGP0) { Name (_ADR, Zero) // _ADR: Address Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0x0F) } Else { Return (Zero) } } Device (EGP1) { Name (_ADR, Zero) // _ADR: Address Device (GFX0) { Name (_ADR, Zero) // _ADR: Address } Device (HDAU) { Name (_ADR, One) // _ADR: Address } } } } } } }
Instalación de macOS Monterey o Ventura
El proceso es casi el mismo para la instalación y para la actualización:
- Necesitas una carpeta EFI que funcione
- Descarga macOS desde Actualización de software o crea un instalador USB; no comento sobre la creación de un instalador USB porque hay muchos sitios con esta información.
- Ejecuta la aplicación Install macOS Monterey / Ventura o el programa de instalación desde el USB de arranque
- El proceso tiene 2 reinicios desde el disco Install macOS y un tercer reinicio desde el disco de destino con Monterey.
Archivos SMBIOS y config.plist
Se incluyen variantes para 4 posibles SMBIOS:
- iMac19,1 con AMD dGPU + iGPU headless mode
- iMac19,1 con iGPU como tarjeta principal sin dGPU
- MacPro7,1 con dGPU + iGPU deshabilitada
- iMacPro1,1 con dGPU + iGPU deshabilitada.
Hay 4 archivos config.plist para las diferentes SMBIOS. Recuerda rellenar tus números de serie y ROM.
- config-13-imac-amd.plist: iMac19,1 + dGPU AMD + iGPU enabled en BIOS
- config-13-imac-intel.plist: iMac19,1 + iGPU enabled en BIOS como tarjeta principal
- config-13-imacpro.plist: iMacPro1,1 + dGPU AMD + iGPU disabled en BIOS
- config-13-macpro.plist: MacPro7,1 + dGPU AMD + iGPU disabled en BIOS.
UTBMap.kext (en compañía de USBToolBox.kext) esta diseñada específicamente para la placa base Gigabyte Z390 Aorus Elite. Si tienes una placa diferente, has de tener tu propio mapa de puertos USB.
¡Importante!
- No olvides cambiar el nombre del archivo de configuración seleccionado a config.plist
- Recuerda completar tus números de serie y ROM (están vacíos).
- Haz ResetNVRAM la primera vez que arrancas desde una nueva EFI.
- Mi dGPU actual es AMD RX 6600 XT; para RX 580 y otras tarjetas Polaris quita agdpmod=pikera de boot args y no utilices el parche Henbury
Enlace para descargar la EFI con OpenCore 0.9.0
Enlace para descargar la EFI con OpenCore 0.9.1
Agradecimientos
Acidanthera OpenCore y kexts
Guías Dortania OpenCore
Foro InsanelyMac
Foro tonymacx86
Hola pol, mira, tengo un inconveniente con la gráfica que tengo, actualmente manejo una RX 6600 XT MSI Gaming X, hice el proceso del SSDT pero veo que no puedo conectar más de un monitor a la gráfica, si lo hago la pantalla principal comienza a parpadear y luego queda en negro al igual que la segunda pantalla, es decir no puedo usar más de un monitor, me podrías a ayudar a revisar el tema?
Buenas tardes, ya te respondí en el tema RX 6600 XT en macOS con PowerPlayTable, pego aquí la respuesta para que sigamos viendo cómo resolver esto.
25/10/2023 a las 13:43:
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.
Hola Pol, he hecho varios cambios ya, parche Henbury, SSDT con PowerPlayTable, actualmente tengo OpenCore 0.9.5, te acabo de enviar al correo que me indicas, el reporte de gfxutil y mi config.plist.
Voy a probar con una RX 6600 Hellhound a ver si persiste el problema.
Buenas tardes, Tamy. He visto tus archivos, SSDT y config.plist.
SSDT-BRG0.aml está bien, la ruta al dispositivo coincide con la que obtienes con gfxutil.
Config.plist: puesto que tienes SMBIOS iMacPro1,1, puedes funcionar sin WhateverGreen (como ya haces) y quitando la gráfica de la sección DeviceProperties. Es decir, no añades nada para la gráfica excepto SSDT-BRG0 que lo mantienes tanto en la carpeta ACPI como en config.plist. Olvida SSDT-VEGA por ahora.
Con SMBIOS iMacPro1,1 o MacPro7,1, las AMD de la serie 6000 pueden funcionar sin WhateverGreen. Con SMBIOS de iMac no, WhateverGreen es necesario. Además, como tu CPU no tiene gráfica integrada está bien elegida la SMBIOS iMacPro1,1.
En resumen, quitas todo lo que la gráfica de config.plist, mantienes deshabilitada WhateverGreen y dejas sólo SSDT-BRG0.
En ACPI conservas el SSDT-BRG0 (además de los que ya utilizas):
En DeviceProperties >> Add dejas esto solamente:
Por supuesto, sigues con WhateverGreen desactivada:
La primera vez que arranques con estos cambios, haces ResetNVRAM en el icono del menú de OpenCore.
Recuerda tener siempre una EFI que permite arrancar macOS (en un USB o en otro disco) por si, al probar cambios u otra EFI, fallase el arranque.
Otros comentarios sobre config.plist:
Estos cambios en config.plist hazlos uno por uno reiniciado entre cambios, si haces los 3 a la vez y falla no sabremos cuál es el causante.
Vete haciendo pruebas y me comentas los resultados. La placa base que tienes y la gráfica deberían pode funcionar perfectamente con más de 1 monitor.
Saludos, Emilio.
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI («Darwin»))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
El uso de esta líneas en la carga de casi todos los SSDT no me queda claro pero he leído documentación ACPI y según saco en claro es para indicar que la máquina está ejecutando un sistema Apple OSX. Pensé que era todo lo contrario, que le decía al sistema que en arranques duales con Windows estos SSDT no se cargan en Windows.
Buenas tardes, querido amigo.
Esta condición If (_OSI («Darwin»)) lo que intenta es detectar si el sistema que está arrancando con OpenCore es macOS.
Return (Zero) >> NO es macOS >> no ejecutar el método.
Return (0x0F) >> SÍ es macOS >> ejecutar el método.
Por eso creo que, tal como lo has escrito, no es correcto, yo lo uso al revés.
Tú dices
Si es macOS >> no seguir, saltar sin ejecutar el método. Pero queremos justo lo contrario, si es macOS >> seguir y ejecutar el método pero, si no es macOS (Windows o Linux), saltar sin ejecutarlo.
Por ello el código que tengo en mis SSDT es este:
Como ves, se invierten Return (Zero) y Return (0x0F).
Se consigue lo que leo en tu comentario, que los métodos ACPI que llevan esta condición no se aplican al arrancar Windows o Linux.
Buenos días, por aquí tengo una Gigabyte Z390 UD y he intentado encontrar lógica o información adecuada del uso o no del kext RestrictEvents.kext en todos los equipos, veo este muy a menudo instalado. Al leer la guía correspondiente, dice que su uso es para un determinado tipo de portátiles y para los MacPro7.1
Cualquier aportación me sería de ayuda, gracias como siempre.
Buenos días, amigo.
RestrictEvents.kext tiene usos muy específicos aunque en ellos consigue resultados muy notables. Estas son las principales prestaciones:
Mac
Hack
Todos
En resumen, la veo útil sólo si no se tiene SMBIOS de MacPro7,1 o CPU AMD y cuando se utiliza OpenCore en un Mac.