Radeon 6850 (2)

Tarjeta gráfica ASUS EAH6850 (Radeon 6850) en Lion 10.7.3: modificar ATI6000controller mediante script de Perl

Nota: es recomendable consultar el primer post del hilo de Alexander Martinez titulado [Guide] Getting XFX HD6850 connectors to work, en él se propone un método avanzado de configurar el chip gráfico Radeon 6850 en Lion para que todos los puertos funcionen adecuadamente. Consulta también el hilo de Shiecldk titulado Make ASUS EAH6850 100% work! y las entradas del usuario Hard233 en el hilo titulado GUIA: instalación de ATI Radeon 6850 en Lion, ambos referidos al modelo ASUS EAH6850 (los 3 artículos en InsanelyMac).

El método de Alexander Martinez para su tarjeta XFX HD6850 se basa en:

  • extraer la ROM de la tarjeta ATI y descodificarla para identificar el orden y tipo de conectores que la GPU utiliza como enlaces físicos para comunicarse con cada puerto
  • obtener las personalidades (framebuffers) existentes en nuestro sistema leyéndolas desde las extensiones gráficas (ATI6000Controller en nuestro caso)
  • probar con diferentes framebuffers y conectores hasta conseguir averiguar la combinación adecuada para que todos los puertos de la tarjeta funcionen correctamente, esta es la parte más laboriosa del proceso y la que requiere mayores conocimientos para llevarla a cabo
  • modificar el archivo ATI6000Controller a nivel hexadecimal, substituyendo los datos de los conectores por los datos válidos anotados en el paso anterior
  • el post contiene los nombres de los programas requeridos para extraer la ROM (GPU-Z en Windows), descodificarla (radeon_bios_decode creado por bcc9) y obtener los framebuffers (aty_personality.py también creado por bcc9).

En resumen, se trata de crear una extensión ATI6000Controller.kext modificada específicamente para el modelo concreto de nuestra tarjeta gráfica. Si se realiza con éxito, todos los puertos (2xDVI, 1xHDMI y 1xDP) mandan correctamente la señal al monitor, aceptando el cambio de puerto en caliente, sin necesidad de usar “Graphics Enabler = Yes” y sin retardos del ratón.

En este artículo se tratará específicamente de la manera de modificar ATI6000Controller mediante un script de Perl (SP en adelante). Para aquellos que no están familiarizados con ésto, Perl busca una determinada cadena y la reemplaza por otra. La primera cadena contiene la información de conectores (IC) obtenida desde ATI6000controller (original de Apple). La segunda cadena contiene la IC modificada para coincidir con las características de nuestra tarjeta, esta cadena ha de crearse siguiendo el método de Alexander Martinez o recurrir a alguna de las ya probadas para un modelo idéntico a nuestra gráfica. Yo he utilizado la que amablemente creó Hard233 específica para mi tarjeta (ASUS EAH6850).

El esquema que sigue el SP es:

sudo perl -pi -e 's|primera_cadena|segunda_cadena|g' /System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/ATI6000Controller

Para crear la primera cadena desde la extensión ATI6000controller original tal como la instala Mac OS X se utiliza el script ati-personality.py que proporciona la IC de esta forma:

Personality: Duckweed
ConnectorInfo count in decimal: 4
Disk offset in decimal 176800 (2b2a0 in hex)

0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04
0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05

Personality es el framebuffer y disk offset es el sitio en que comienza la cadena dentro del archivo binario ATI6000controller (176800 en decimal y 2b2a0 en hexadecimal). Necesitamos las 4 líneas de 16 pares de caracteres cada una:

00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02
00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04
00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05

Copiamos estas 4 líneas y las pegamos en un editor de texto como por ej. TextWrangler (gratuito), reemplazamos los espacios entre caracteres por x, añadimos x al inicio de cada línea y ponemos todo en una sola línea:

x00x04x00x00x04x03x00x00x00x01x00x00x12x04x04x01x00x04x00x00x04x03x00x00x00x01x00x00x22x05x05x02x00x08x00x00x04x02x00x00x00x01x00x00x11x02x03x04x00x02x00x00x14x02x00x00x00x01x00x00x00x00x06x05

Hacemos lo mismo con la segunda cadena, creándola desde la IC que sea más adecuada. Aparte de la de Hard233, he probado otras 2 que parecen funcionar bien:

Hard233

00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
00 08 00 00 04 02 00 00 00 01 00 00 22 05 01 04
04 00 00 00 14 02 00 00 00 01 00 00 00 00 03 05
00 02 00 00 14 00 00 00 00 01 00 00 11 02 06 06

Esta es la segunda cadena con los datos de Hard233:

x00x04x00x00x04x03x00x00x00x01x00x00x12x04x04x01x00x08x00x00x04x02x00x00x00x01x00x00x22x05x01x04x04x00x00x00x14x02x00x00x00x01x00x00x00x00x03x05x00x02x00x00x14x00x00x00x00x01x00x00x11x02x06x06

Combinándolo todo, obtenemos el PS completo para ser ejecutado desde Terminal:

sudo perl -pi -e 's|x00x04x00x00x04x03x00x00x00x01x00x00x12x04x04x01x00x04x00x00x04x03x00x00x00x01x00x00x22x05x05x02x00x08x00x00x04x02x00x00x00x01x00x00x11x02x03x04x00x02x00x00x14x02x00x00x00x01x00x00x00x00x06x05|x00x04x00x00x04x03x00x00x00x01x00x00x12x04x04x01x00x08x00x00x04x02x00x00x00x01x00x00x22x05x01x04x04x00x00x00x14x02x00x00x00x01x00x00x00x00x03x05x00x02x00x00x14x00x00x00x00x01x00x00x11x02x06x06|g' /System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/ATI6000Controller

Es importante hacer desde Terminal “sudo touch /System/Library/Extensions” antes de reiniciar. Otras configuraciones que también funcionan con el modelo ASUS EAH6850 de 1gb son:

The DJey

00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
04 00 00 00 14 00 00 00 00 01 00 00 11 02 01 06
00 08 00 00 00 02 00 00 00 01 00 00 22 05 03 04
00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05

Sollarman

00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
00 08 00 00 04 02 00 00 00 01 00 00 22 05 06 04
04 00 00 00 14 02 00 00 00 01 00 00 00 00 05 05
00 02 00 00 04 00 00 00 00 01 00 00 11 02 03 06

No es necesario tener “Graphics Enabler = Yes” ni AtiConfig ni AtiPorts en org.chamelon.boot.plist. Para que Perfil de Sistema muestre una información más completa sobre la tarjeta gráfica se puede utilizar el código DSDT de Hard233 que se muestra en el anterior sobre esta tarjeta gráfica: Radeon 6850 (1).

NOTA para Mountain Lion

Marquino amablemente comprobó el funcionamiento de este script en ML y añadió un comentario con la modificación requerida que consiste en cambiar el destino del script, que en Lion es

/System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/ATI6000Controller

y en ML es

/System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/AMD6000Controller

Este sería el PS completo para usar en ML:

sudo perl -pi -e 's|x00x04x00x00x04x03x00x00x00x01x00x00x12x04x04x01x00x04x00x00x04x03x00x00x00x01x00x00x22x05x05x02x00x08x00x00x04x02x00x00x00x01x00x00x11x02x03x04x00x02x00x00x14x02x00x00x00x01x00x00x00x00x06x05|x00x04x00x00x04x03x00x00x00x01x00x00x12x04x04x01x00x08x00x00x04x02x00x00x00x01x00x00x22x05x01x04x04x00x00x00x14x02x00x00x00x01x00x00x00x00x03x05x00x02x00x00x14x00x00x00x00x01x00x00x11x02x06x06|g' /System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/AMD6000Controller

AVISOlas instrucciones y propuestas de esta página se proporcionan sin garantía de ningún tipo a la hora de llevarlas a la práctica. Lo que ha funcionado bien en mi caso pudiera no hacerlo en el tuyo.

Anuncios

4 pensamientos en “Radeon 6850 (2)

  1. Actualización 10.7.4

    He actualizado a Lion 10.7.4 y he comprobado que la información de conectores en el archivo ATI6000Controller es la misma que en la versión 10.7.3 y está en el mismo off set por lo que este método funciona también después de la actualización que instala la versión vanilla de la extensión y nos hace perder la configuración de los 4 puertos.

  2. ¡Confirmado en ML!
    Unicamente hay que modificar en el PS:

    sudo perl -pi -e 's|primera_cadena|segunda_cadena|g' /System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/AMD6000Controller

    Esto combinado con el arreglo en la DSDT de Hard233.

  3. Muchas gracias, veo que la información de conectores no cambia pero sí el destino final de la modificación hexadecimal así que nos has ahorrado trabajo. En cuanto instale Mountain Lion lo probaré.

  4. Ya lo he probado en ML y parece funcionar bien, al menos tan bien como funcionaba en Lion con los 4 puertos habilitados y aceleración gráfica.

Los comentarios están cerrados.