Intel UHD Graphics 630 en macOS

Utilizar la tarjeta gráfica integrada Intel UHD Graphics 630 Coffee Lake R (i7-9700) en headless mode (modo sin cable al monitor) para ser utilizada por macOS Catalina, Big Sur y Monterey en tareas de codificación de vídeo, o utilizarla como tarjeta principal que lleva la imagen al monitor.

Nota: este artículo refiere a OpenCore como gestor de arranque. Siguiendo estas instrucciones es posible hacerlo también con Clover.

En los Mac con tarjeta gráfica integrada (iGPU) y otra dedicada (dGPU) el sistema utiliza la integrada para codificación y descodificación de vídeo. Al construir un Hackintosh con ambos tipos de GPU podemos encontrarnos con que, aunque la dGPU sea mucho más potente que la iGPU, si esta no está bien instalada y reconocida por el sistema, falla la codificación de vídeo. Cuando esto sucede pero no queremos tener la iGPU como tarjeta primaria hay que configurarla en headless mode (se llama así cuando está activa pero sin cable hacia monitor) para que sea la dGPU la que muestre la imagen pero la integrada esté disponible para codificar/descodificar vídeo.

La instalación de la iGPU depende de 2 factores:

  • placa base porque cada fabricante coloca 1, 2 o 3 puerto/s HDMI en el panel trasero
  • generación del procesador Intel, diferentes generaciones de procesador llevan diferentes modelos de iGPU.

Mi PC tiene placa Z390 Aorus Elite con procesador de 9ª generación (Coffee Lake Refresh, se configura como Coffee Lake) con Intel UHD Graphics 630 que está en la ruta PciRoot(0x0)/Pci(0x2,0x0) y su Plattorm ID es 3E9B0007. La dGPU es Radeon RX 580. En esta placa solamente hay un conector para la iGPU, es de tipo HDMI v1.4 y se corresponde con el índice 3 en la lista teórica de 3 conectores como máximo que puede llevar este modelo de iGPU:

  • Index 1, BusID 0x00, Type HDMI (el tipo no importa en este puerto)
  • Index 2, BusID 0x00, Type HDMI (el tipo no importa en este puerto)
  • Index 3, BusID 0x04, Type HDMI (este es el puerto activo, el único existente en esta placa).

Esto tiene importancia al usar la iGPU como tarjeta primaria o única pero no al usarla en headless mode.

iGPU en headless mode

  • La iGPU y la dGPU han de estar habilitadas en BIOS con la dGPU como primaria
  • No hay cable entre el puerto de la iGPU y cualquier tipo de monitor
  • Lilu y WhatEverGreen están bien instaladas
  • modelo SMBIOS de iMac19,1
  • Hay que añadir unas propiedades en la sección DeviceProperties de OC:
			<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>
				<key>igfxfw</key>
				<data>AgAAAA==</data>
				<key>force-online</key>
				<data>AQAAAA==</data>
				<key>rps-control</key>
				<data>AQAAAA==</data>
			</dict>

Este código lleva los valores data en Base64, en los editores de archivos PLIST pueden ser vistos como valores hexadecimales, por ejemplo AwCRPg== en Base64 equivale a 0300913E en hexadecimal.

Con estos cambios puedo arrancar desde la dGPU con la iGPU bien reconocida por macOS. Para comprobar si la función VDA Decoder está activada utiliza Hackintool (Fully Suported o Failed en la primera pestaña System).

Notas:

  • device-id=9B3E000 para que se muestre como Intel UHD Graphics 630 en vez de Kabylake Unknown
  • enable-metal=01para habilitar Metal 3 en Ventura
  • force-online=01 para forzar el estado activo de todos los conectores de la iGPU (obligatorio)
  • igfxfw=02 para forzar la carga del firmware Apple GuC (mejora el rendimiento de la IGPU)
  • rps-control=01 para habilitar el parche de control RPS (mejora el rendimiento de la IGPU).

iGPU como tarjeta principal

También se puede configurar esta tarjeta para ser la principal de macOS de manera que emite señal al monitor y también codifica vídeo. Esto es lo que hay que hacer:

  • Habilitarla en la placa como principal: Initial Display Output IGFX en lugar de PCIe 1 Slot (este sería el paso final).
  • Lilu y WhatEverGreen bien instaladas
  • SMBIOS de iMac19,1
  • Añadir en config.plist: DeviceProperties el código siguiente (BwCbPg== equivale a 07009B3E en hexadecimal):
			<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>hda-gfx</key>
				<string>onboard-1</string>
				<key>igfxfw</key>
				<data>AgAAAA==</data>
				<key>force-online</key>
				<data>AQAAAA==</data>
				<key>rps-control</key>
				<data>AQAAAA==</data>
			</dict>

Nota: si tienes KP o pantalla negra al salir del reposo hay que reemplazar la propiedad hda-gfx por No-hda-gfx (data) con el valor 0000000000000000, con ello suelen arreglarse los fallos al salir del reposo pero se pierde el audio por HDMI.

<key>No-hda-gfx</key>
<data>AAAAAAAAAAA=</data>

86 comentarios en «Intel UHD Graphics 630 en macOS»

  1. Aparentemente tienes bien el código en DeviceProperties, al menos como se recomienda en las guías para SkyLake de escritorio (no portátil).

    ¿Tienes algo en boot-args? Yo probaría 3 argumentos: igfxonln=1 -disablegfxfirmware agdpmod=ignore. Aparte de los que ya tengas ahí, se trata de añadir estos. Prueba y me dices.

  2. Hola, tengo un i5 6500 y Big Sur instalado. Se supone que admite Monterey con HD 530, pero al instalarlo la pantalla no da señal. Sigo con Big Sur pero tampoco puedo usar la función sleep ya que no enciende la pantalla y, si se apaga la pantalla, tampoco vuelve a conectar y entonces hay que apagar el pc y volver a encender.

    Estoy usando en device properties lo siguiente:

    PciRoot(0x0)/Pci(0x2,0x0)
    -AAPL,ig-platform-id 00001219
    -device-id 1B190000
    -framebuffer-fbmen 00009000
    -framebuffer-patch-enable 01000000
    -framebuffer-stolenmem 00003001

  3. No cabe duda que un Intel 3770K ha pasado su mejor época 🙂 pero hay que ver cómo siguen funcionando a pesar de todo. Cuando renueves el material vas a notar un cambio grande, más teniendo una RX580 (es la que yo uso) que va muy bien tanto en Mac como en Windows. En teoría con 30 Hz has de ver la pantalla algo más débil de color o de intensidad, tal vez no sea mucho pero seguro que algo se nota. Para que se vea menos fluidez hay que recurrir a juegos o programas con exigencia gráfica.
    En fin, se encuentro algo útil para ti te lo comentaré. Ya sabes dónde estoy. Un saludo, Emilio.

  4. Sí, justamente han sido esos hilos los que me han animado a aventurarme. Aunque hay escasez de materiales, me pareció ver que se sacaban 30000 chips de Alder Lake al día y memorias DDR5 ya no hablemos. Hay bastante más demanda que oferta, por eso ahora también tiene mucho sentido aprovechar hardware de los últimos 10 años de segunda mano, como gráficas y demás. Tengo una Rx 580, así que quiero aprovechar y actualizar el PC.
    No la he puesto en este porque ya tendría que cambiar la fuente de alimentación, y una cosa te va llevando a la otra. La carcasa está un poco justa de espacio, y además este 3770k ya ha dado sus mejores años.

    Esto me recuerda a aquellos tiempos de windows en que ponerle una tarjeta o cualquier accesorio era una odisea, no era tan fácil como enchufar y listo. Y eso tiene algo de nostálgico. Está chulo aprender cómo funciona, ver las tripas de la bestia. Hackintosher por afición.

    De todas formas el actual va bastante bien. Aun con sus 30 Hz no noto nada de lag, va bastante fluido, quizás si que al abrir windows se ve un poco más alegre, pero para el tipo de trabajo que hago en mac, va de sobra. Lo de cambiarlo es porque ya tocaba ponerse al día en hardware. He conseguido que funcione en un ordenador de hace 10 años, y va muy bien. Si ya cambias el hardware, debería de ir como un tiro.

  5. Pues como dice Edhawk en tonymacx86… no se me ocurre nada más que decirte. Por un lado la Nvidia podría funcionar en Windows diferente a macOS pero, si en Windows coge 60 Hz, es que es capaz de cogerlos, eso está claro.
    VDA Decoder supported va por otro lado, quiere decir que la tarjeta puede codificar vídeo por hardware, puede estar activada esa característica y sin embargo el monitor no pasar de 30 Hz.
    En fin, miraré más cosas a ver si puedo darte alguna información útil pero por ahora estoy sin ideas.

    Eres guindillas en tonymacx86? Este usuario habla de ir dejando a un lado este PC y comprar algo moderno, posiblemente Alder Lake. En este foro hay 2 hilos específicos de Alder Lake:
    – Gigabyte Z690 Aero G + i5-12600K + AMD RX 6800 XT de CaseySJ
    – Z690 Chipset and Alder Lake CPUs de tonymacx86.
    Ahí tienes toda la información acerca de los chips Z690 y las CPU de 12 generación en macOS. Pero hay que comprar una gráfica AMD (RX580 o superior) que ahora están muy caras y los chips Z690 tienen todavía algunos inconvenientes que no existen en los anteriores Z590.

  6. -Las dos van por HDMI.
    -Tengo dos monitores, uno de 27 4k y otro de 23 HD. El de 23 va conectado a la iGPU y da 1920×1080 a 60 Hz. El de 27, 3840×2160 a 30 Hz. Dentro de macOS he puesto para que los menús y el dock salgan en la de 27. Pero BIOS y el opencore cargan desde la de 27, sólo durante unos segundos de carga de macOS se pasa la imagen al de 23. Que en principio es el que está seleccionado en BIOS al poner iGPU preferente. Pero en windows es igual, me sale como principal el de 27. Un poco enrevesado de explicar. Pero está funcionando como principal el de 27 que es lo correcto, ya que el otro no lo tendré siempre en marcha.
    -No, no sale esa opción, tampoco presionando cmd+ resolución ajustada (mostrar modos de baja resolución), se queda la opción de 30 Hz marcada oscurecida y no deja seleccionar nada superior.

    Lo curioso es eso, que aún sin añadir ninguna de estas líneas ya me sale VDA Decoder = Fully Supported, al añadir la primera línea tb sale, y al añadir el resto no hay ningún cambio aparente.

    Te dejo un enlace a un foro donde hemos intentado cosas también y viene el modelo de tarjeta, etc:
    Can’t refresh rate 60 hz on 4k (Forums de tonymacx86 >> Post installation >> Hardware).

  7. Hay modelos de GT710 que no pueden funcionar a 4K con 60 Hz, solamente a 4K con 30 Hz. El problema es que no es fácil saber exactamente el chip de la gráfica para saber si es de las que soportan 4K a 30 o no.

    En teoría, la iGPU con la única línea AAPL,ig-platform-id en config.plist funciona como tarjeta sin cable, lo que llaman en inglés headless mode, para ayudar a la otra gráfica en tareas de computación. Pero es raro que sólo con esa línea la iGPU funcione bien llevando imagen al monitor aunque en tu caso dices que sí lo hace. El resto de líneas que escribí son parámetros para definir esos 3 puertos internos de la iGPU (aunque al exterior sólo muestre uno recuerda que en realidad tiene 3 posibles conectores, de hecho algunas placas base, aunque pocas, tienen más de 1 conector externo HDMI para la iGPU). Estas otras líneas hacen lo que se llama framebuffer patch con WhateverGreen en artículos sobre este asunto.

    Preguntas:
    – ¿cómo conectas las 2 gráficas? La iGPU supongo que HDMI-HDMI, ¿y la Nvidia?
    – iGPU principal en BIOS conectada al monitor primario: ¿funciona bien ese monitor, se ve bien la pantalla, 4K con 60 Hz? Esto con y sin las líneas extra en config.plist aparte de AAPL,ig-platform-id
    – dGPU principal en BIOS conectada al monitor primario ya me has contado cómo funciona pero ¿en Preferencias del Sistema >> Pantallas sale una opción para cambiar la frecuencia de refresco y poner 60?

  8. Bueno, veo que lo tienes dominadísimo. Jejeje. Lo primero gracias!

    Te comento, la primera línea, AAPL,ig-platform-id Data 0A006601 la había probado ya, deduciendo un poco de la guía de Dortania, y de hecho así, con esa sola línea simplemente, funcionan las dos pantallas. Pero la que está en 4k (que es la que está en la GT710) sigue mostrando sólo 30 Hz.
    Tuve que cambiar en la bios y poner iGPU como principal si no, no cargaba el OS, y se reiniciaba. Tras cambiarlo en bios, tarda unos 10 segundos más en cargar el SO y a, medio camino de la barra blanca de carga, manda la imagen al monitor secundario, luego vuelve al principal, y ya carga la bienvenida al sistema con las dos pantallas (si la secundaria está apagada no hace esto). Hasta aquí había llegado por mi cuenta.

    Luego he visto tu respuesta y he probado a añadir lo que me sugieres (el resto de líneas) y no hay ninguna diferencia de comportamiento (bueno sí, en una ocasión al entrar al macOS salió una raya horizontal blanca durante un segundo que antes nunca salió, cosa extraña).
    ¿Para qué son el resto de lineas de código para config.plist?
    Gracias por revisarlo.

  9. Prueba añadiendo este código en el archivo config.plist, tal como lo ves en la imagen. La propiedad framebuffer-con1-alldata, cuyo valor se ve cortado en la imagen, este es el número completo:
    02050000 00040000 07040000 03040000 00040000 81000000 04060000 00040000 81000000
    Configura bien el tipo de cada clave: Data o Number. Y escribe los nombres tal como los ves en la imagen. Los añado aquí para que sea más sencillo copiar y pegar:

    AAPL,ig-platform-id Data 0A006601
    framebuffer-patch-enable Number 1
    framebuffer-memorycount Number 2
    framebuffer-pipecount Number 2
    framebuffer-portcount Number 4
    framebuffer-stolenmem Data 00000004
    framebuffer-con1-enable Number 1
    framebuffer-con1-alldata Data 02050000 00040000 07040000 03040000 00040000 81000000 04060000 00040000 81000000

  10. Buenas,
    Estoy con Big Sur y Opencore 0,7,5.
    Así es, el principal al GT 710 y el secundario a la iGPU.

    Me está pasando algo curioso, en windows da 4k 60 Hz (Gt 710) y en MacOS no se puede cambiar y sólo saca 4k 30 Hz. Te lo comento por si en el proceso se te ocurre algo.

  11. Buenas noches, la verdad es que no tengo acceso a hardware como el que comentas pero para poder decirte algo útil me tienes que informar:
    ¿qué versión de macOS? Ya te aviso que en Monterey tendrás problemas con la Nvidia cuyos drivers han desaparecido en esta versión de macOS por lo que ha de ser Mojave o Catalina o Big Sur.
    ¿qué versión de OpenCore?
    La idea es tener las 2 gráficas activadas, la GT710 y la Intel, la Nvidia ya ves que funciona bien sin hacer nada especial pero la Intel necesita código en el archivo config.plist además de las extensiones Lilu.kext y WhateverGreen-kext.
    El monitor principal se conectaría a la GT710, ¿no?

  12. Hola,
    Tengo una GT 710 conectada por HDMI y me gustaría usar otro HDMI, el de la iGPU HD4000 (de un Ivy bridge) para usar dos monitores en Mac. Con OpenCore.
    ¿Me puedes ayudar?

  13. Necesitas definir propiedades para todos los conectores internos de la gráfica integrada. No basta con definir solamente las del conector activo. Incluso en las placas base que solamente tienen un conector HDMI para la iGPU (como la mía) existen 3 conectores internos de los que Gigabyte, en este caso, solamente utiliza uno para sacarlo al exterior. Siempre es necesario tener todos los conectores bien definidos, el activo y los que no se utilizan.

    Enhorabuena por el trabajo que haces, he estado viendo el canal de Youtube, cantidad de vídeos bien realizados.
    Un saludo, Emilio.

  14. Gracias, me quedó claro, ahora la pregunta del millón lo digo porque soy algo maniático con todo.

    framebuffer-con0-enable
    framebuffer-con1-enable
    framebuffer-con2-enable

    Si mi gráfica UHD 640 el display0 esta en AppleIntelframebuffer@2 y sólo necesitaría con2-enable y sus allegados.

    En cuanto si estoy en InsanelyMac estoy ahí, en la página de Olarila y tengo el canal de Youtube y Facebook de hackintosh España pero como sabes no podemos saberlo todo y este tema tenía ganas de meterle mano con un segundo monitor, gracias por tu tiempo.

  15. Hola, creo que te leo también en InsanelyMac, ¿no?
    Ese olvido en poner la iGPU como principal en BIOS causa más de un quebradero de cabeza, me alegro de que lo hayas solucionado.
    Respecto a las propiedades de los framebuffer, no se puede reemplazar uno por otro, date cuenta de que framebuffer-conX-alldata incluye varias otras propiedades, entre ellas busid y type, pero no incluye framebuffer-conX-enable que se pone por separado.
    Necesitas cada una de esas propiedades (además de AAPL,ig-platform-id):

    • framebuffer-patch-enable: WhateverGreen va a aplicar parches o no
    • framebuffer-conX-enable: este conector va a estar habilitado o no
    • framebuffer-conX-alldata: contiene el id del bus de este conector y el tipo (HDMI, DP…)
    • framebuffer-stolenmem: MB reservados para la iGPU como tú bien dices.
  16. Buenas tardes, al final he conseguido poner los dos monitores, el problema que tenía es no poner la IGPU como predeterminada en la BIOS, ahora funciona de lujo. Pero soy de saber el por qué framebuffer-con2-alldata como si se puede sustituir por framebuffer-con2-enable.
    Este de abajo me queda claro que es para la asignación de memoria de la gráfica IGPU:
    framebuffer-stolenmem.

  17. ¡Pero pon al menos un nombre al comentar aunque sea solamente para dirigirme a ti!
    Ese error «OC: grabbed zero system-id for SB» suele estar relacionado con el valor de SecureBootModel en Misc >> Security. Prueba los valores SecureBootModel Default o Disabled. Ambos deberían funcionar bien. Prueba y me comentas.
    Dime qué modelo SMBIOS estás usando. Y alguna característica del hack (modelo de placa base, CPU y gráfica).

  18. Buenas, Sr. Pérez, resulta que le instalé una NVME a mi hack, creando EFI desde 0. El problema es que ahora utilicé 0.7.5 y no me arranca el sistema, muestra un error OC: grabbed zero system-id for SB. Intenté desactivar SecureBootModel pero me manda que hace falta esa configuración. Anteriormente tenía OpenCore 0.7.4 y funcional iGpu y dGpu.

  19. Buona notte, Marco. I have to see your config.plist. Email me the file (look at your email).

  20. Hi, I’ve installed successfully Monterey on Lenovo 510-15icb that has i5-9400 as processor and intel UHD 630 and RX550 (working). I’m trying to fix the 630, on system properties on PCI is saying that have loaded the kext but the screen connected through HDMI doesn’t work, it’s three days that I’m trying, and with the default 07009B3E and 00009B3E doesn’t work, I don’t know what to do, help please. Email windows1.0 at libero dot it.

Deja un comentario