Radeon RX 580 en macOS Catalina

Tarjeta gráfica RX 580 de 8GB en macOS High Sierra (desde 10.13.6), Mojave y Catalina en la placa P55-USB3: funcionamiento excelente con aceleración gráfica (Metal) tal como sale de la caja, sin necesidad de controladores (kexts), con 3 inconvenientes, uno tiene que ver con el arranque del sistema operativo (se propone solución), otro con el número de conectores traseros habilitados (se propone solución) y otro que sólo afecta a una fase de la instalación de Mojave o Catalina (sin solución clara por el momento).

He colocado la tarjeta gráfica XFX AMD Radeon RX-580 P8DFD6 8GB Triple X Edition GDDR5, 256BIT, DVI+HDMI+3DPen una placa base con 10 años de antigüedad (Gigabyte P55-USB3) para poder actualizar el hackintosh a 10.14 Mojave y 10.15 Catalina porque la tarjeta que he utilizado estos últimos años, Nvidia Geforce GTX 750 1GB, impedía pasar de 10.13.6 High Sierra ya que esta fue la última versión para la que Nvidia publicó los controladores web alternativos que eran necesarios para que la tarjeta funcionase bien con aceleración gráfica.

La nueva tarjeta RX 580 necesita bastante más espacio que la antigua aunque cabe perfectamente en una caja formato ATX y requiere conector de corriente adicional. Lleva incorporados 2 grandes ventiladores que la mayor parte del tiempo están parados, al menos en mi caso. En macOS funciona perfectamente, incluso con aceleración Metal, instalándola sin controladores adicionales y sin añadir configuraciones en Clover. Pero presenta inconvenientes que comento a continuación.

Alteraciones durante el arranque

Durante el arranque del sistema operativo, cuando la pantalla pasa del controlador básico al de la tarjeta AMD se presentan 2 artefactos de manera aleatoria, son de muy corta duración (de uno a pocos segundos):

  • Pantallazo blanco muy breve que puede o no ir acompañado de unas líneas de color morado
  • Arranque de los ventiladores de la tarjeta durante unos pocos segundos (el ruido es claramente audible).

Este comportamiento se soluciona con la instalación de 2 extensiones, Lilu y WhateverGreenLilu es una extensión creada por acidanthera y vit9696 entre otros cuya función es ayudar a ejecutar parches sobre extensiones, procesos y librerías durante el arranque de macOS. Se acompaña de plugins específicos para la tarea que se requiera, por ejemplo WhateverGreenque inyecta parches necesarios para ciertas tarjetas gráficas AMD, Intel y Nvidia. Es obligatorio tener ambas extensiones juntas, una de ellas por separado no corrige el problema.

Yo he instalado Lilu 1.4.4 y WhateverGreen 1.3.9 en la carpeta EFI/CLOVER/kexts/Other de la partición EFI y con ello han desaparecido los artefactos durante el arranque. Recuerda que estas 2 extensiones no son necesarias para que la tarjeta funcione correctamente en macOS, si toleras bien esas brevísimas distorsiones de la pantalla o el ruido de los ventiladores en marcha durante unos segundos puedes ahorrarte Lilu y WhateverGreen.

Nota: los autores recomiendan que, si se utilizan Lilu y WhateverGreen con tarjetas Radeon, NO se añadan configuraciones gráficas en Clover (Inject ATI, etc.).

Nota: estas alteraciones, sobre todo el pantallazo blanco breve y en menor medida las líneas moradas y el ruido de los ventiladores, también se observan en Windows y en algunos Mac con la misma tarjeta.

Alteración durante la instalación de macOS

Durante la instalación de macOS se observa este comportamiento. Al arrancar desde un dispositivo USB con Instalar macOS Catalina y Clover, la pantalla se muestra correctamente en el comienzo del programa de instalación hasta que se produce el primer reinicio. En este reinicio en el menú de Clover se elige la instalación pero desde el disco de destino, no desde el dispositivo USB como en el primer arranque. A partir de aquí la pantalla se queda en negro aunque el programa de instalación sigue su curso. Cuando se produce el tercer reinicio, en el que ya no se elige en el menú de Clover la opción de instalación sino la de arrancar macOS desde el disco de destino, se recupera la pantalla y se pueden configurar las opciones iniciales de la cuenta y entrar en el sistema recién instalado con resolución y aceleración correctas. En resumen:

  1. Arranque desde USB > menú Clover > Install macOS from Install macOS Catalina > pantalla funciona bien
  2. Arranque desde USB > menú Clover > Install macOS from MacintoshHD > pantalla en negro
  3. Arranque desde USB > menú Clover > Boot macOS from MacintoshHD > pantalla funciona bien.

Este comportamiento no se corrige ni siquiera colocando Lilu y WhateverGreen en la carpeta EFI/CLOVER/kexts/Other del dispositivo USB con el programa de instalación. Al menos en mi caso no he encontrado solución excepto colocar la tarjeta GTX 750 en lugar de la nueva RX 580 y hacer la instalación con la antigua y colocar la nueva cuando macOS ya está instalado. Pero con ello lo único que se consigue es tener pantalla durante la segunda etapa de la instalación en la que el usuario no interviene excepto en los reinicios por lo que se puede dejar la RX 580 e instalar macOS perfectamente con ese inconveniente de no ver cómo avanza la barra durante esa fase la instalación.

Sólo funcionan 2 conectores de los 5 disponibles

Esta tarjeta dispone de 3 puertos Display Port (DP), 1 puerto HDMI y 1 puerto DVI. En mi caso y en el de otros usuarios solamente funcionan 2 DP, los que están más alejados del conector HDMI. Es suficiente si se utiliza un único monitor o 2 monitores que se puedan conectar por DP. Pero si se desea tener 3 o más dispositivos conectados o alguno de ellos solamente dispone de HDMI es necesario habilitar los 5 conectores o al menos 4 de ellos puesto que el DVI está obsoleto y no permite alcanzar resoluciones tan elevadas como DP y HDMI.

El usuario foxbox ha propuesto una solución en el hilo titulado [Solved] Sapphire RX 580 Nitro+ SE | black screen on HDMI and DVI. Consiste en inyectar desde Clover una modificación al framebuffer Orinoco (que se utiliza en la tarjeta RX 580) para que los 5 conectores carezcan de dirección asignada de forma fija y, en cambio, la reciban de forma dinámica. Este cambio se realiza desde la sección KextsToPatch de Clover.

Esta es la cadena original del framebuffer Orinoco, en negrita los números de los 5 puertos DP-DP-DP-HDMI-DVI: 

000400000403000000010101000000001204060100000000
000400000403000000010201000000002205040300000000
000800000402000000010300000000001102010200000000
000800000402000000010400000000002103050400000000
040000000400000000010500000000000000030600000000

Esta es la cadena modificada, en negrita el cambio a 0 de todos los conectores para que sean seleccionados automáticamente a medida que se necesiten:

000400000403000000010001000000001204060100000000
000400000403000000010001000000002205040300000000
000400000403000000010001000000001102010200000000
000800000402000000010000000000002103050400000000
040000000402000000010000000000000000030600000000

Para realizar este cambio desde Clover has de añadir estos 2 bloques en config.plist, cada uno en su sección correspondiente:

<key>Graphics</key>
	<dict>
		<key>FBName</key>
		<string>Orinoco</string>
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
		</dict>
		<key>VideoPorts</key>
		<integer>5</integer>
	</dict>
	
	<key>KernelAndKextPatches</key>
	<dict>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>Mojave Orinoco uni</string>
				<key>Disabled</key>
				<false/>
				<key>Find</key>
				<data>
				AAQAAAQDAAAAAQEBAAAAABIEBgEAAAAAAAQAAAQDAAAA
				AQIBAAAAACIFBAMAAAAAAAgAAAQCAAAAAQMAAAAAABEC
				AQIAAAAAAAgAAAQCAAAAAQQAAAAAACEDBQQAAAAABAAA
				AAQAAAAAAQUAAAAAAAAAAwYAAAAA
				</data>
				<key>InfoPlistPatch</key>
				<false/>
				<key>Name</key>
				<string>AMD9500Controller</string>
				<key>Replace</key>
				<data>
				AAQAAAQDAAAAAQABAAAAABIEBgEAAAAAAAQAAAQDAAAA
				AQABAAAAACIFBAMAAAAAAAQAAAQDAAAAAQABAAAAABEC
				AQIAAAAAAAgAAAQCAAAAAQAAAAAAACEDBQQAAAAABAAA
				AAQCAAAAAQAAAAAAAAAAAwYAAAAA
				</data>
			</dict>
		</array>
	</dict>

Esto ha de ir acompañado de otros 3 cambios en la sección Graphics de Clover: Orinoco en FB NameInject ATI y 5 en Vídeo Ports. Yo he probado esta solución en macOS Catalina y efectivamente habilita los 5 puertos de la tarjeta pero, como solamente utilizo 1 monitor, la he quitado y me he quedado con la opción de Lilu y WhateverGreen.