Jump to content

GUIA: instalación de ATI Radeon 6850 en Lion


92 posts in this topic

Recommended Posts

Tarjeta gráfica AMD Radeon 6850 de 1Gb en Mac OS X Lion

 

Se trata del modelo Asus EAH6850 Direct CU que tiene 1Gb de memoria DDR5. Es una tarjeta de gama media con potencia suficiente para no echar de menos a los modelos más caros en la gran mayoría de las tareas. Es bastante silenciosa. Su identificador es 0×67391002 y está incluido en extensiones como ATI6000Controller.kext y ATIRadeonX3000.kext:

Fabricante: ATI (0×1002)

ID del dispositivo: 0×6739.

Se puede usar en Lion con excelente rendimiento pero con algunas limitaciones que se comentarán en este texto junto con métodos diferentes de instalación.

 

Es importante remarcar que esta tarjeta viene con 4 puertos, 2 DVI (uno puramente digital y otro con salida analógica para poder conectar convertidores DVI-VGA en caso necesario), 1 HDMI y 1 DisplayPort (DP en adelante), DVI 1 será el analógico y DVI 2 el digital (DVI 2 es el que está separado de los otros 3 que forman una misma línea):

 

[---] [-------] [DVI2]

[DP] [HDMI] [DVI1]

 

No he conseguido que DVI 2 funcione de ninguna manera, el monitor se apaga como cuando entra en modo de ahorro de energía. DVI 1 funciona siempre, independientemente del método de instalación utilizado. Los otros 2 puertos funcionan de forma variable según los casos.

 

Instalación sin DSDT

 

La forma más simple de instalar esta tarjeta es colocándola sin más y arrancando el PC, en mi sistema (placa Gigabyte P55-USB3) arranca y funciona con buenas resoluciones pero sin aceleración gráfica completa (se puede comprobar arrancando DVD Player o Chess que fallan y no llegan a iniciarse). Esta modalidad equivale a tener en el archivo org.chameleon.boot.plist (o.c.b.p en adelante) el modificador Graphics Enabler (GE en adelante) = No, de forma que Chameleon no carga datos para la tarjeta. En Perfil de Sistema aparece mal reconocida, se muestra como AMD Radeon 6xxx. Solamente funciona el puerto DVI 1.

 

Pero si en vez de GE=No ponemos GE=Yes en o.c.b.p la tarjeta arranca con aceleración gráfica completa (DVD Player arranca bien) y se muestra correctamente en Perfil de Sistema como AMD Radeon 6850. Funcionan los puertos DVI 1 y DP.

 

Los chips gráficos AMD (ATI) utilizan distintos framebuffers dependiendo del chip, el framebuffer nativo del chip 6850 parece ser Duckweed. Con GE=No se utiliza el framebuffer genérico de ATI que se llama Radeon, no proporciona aceleración gráfica completa. Con GE=Yes se utiliza Duckweed. Se puede averiguar el framebuffer utilizado con el comando ioreg | grep ATY en Terminal, se obtiene una salida similar a ésta:

 

| +-o ATY,Duckweed@0 <class AtiFbStub, id 0x1000002f8, registered, matched, active

| +-o ATY,Duckweed@1 <class AtiFbStub, id 0x1000002f9, registered, matched, active

| +-o ATY,Duckweed@2 <class AtiFbStub, id 0x1000002fa, registered, matched, active

| +-o ATY,Duckweed@3 <class AtiFbStub, id 0x1000002fb, registered, matched, active

 

Desde o.c.b.p se puede configurar qué framebuffer utilizar con el modificador AtiConfig en la clave Kernel Flags, suele acompañarse del modificador AtiPorts que indica el nº de puertos de la tarjeta gráfica, 4 en este caso. Por ejemplo, forzando la utilización del framebuffer Bulrushes:

 

<key>Kernel Flags</key>

<string>AtiConfig=Bulrushes AtiPorts=4</string>

 

se consigue que funcionen 3 puertos, todos menos DVI 2, pero se observa el fallo ya comentado con DVD Player y además paradas y retrardos del ratón. Estos framebuffers a veces se llaman personalidades (personalities) en archivos de configuración y en los Info.plist.

Como resumen, si usas GE=Yes y te conformas con 2 puertos (DVI 1 y DP) la tarjeta gráfica funciona muy bien en Lion.

 

Puedes realizar pruebas con los modificadores AtiConfig y AtiPorts porque algunos usuarios con modelos diferentes de placa base han conseguido resultados distintos a los míos.

 

Instalación con DSDT

 

También es posible inyectar datos del chip gráfico desde el archivo DSDT.aml. En las pruebas que yo he realizado no he obtenido todavía la situación ideal de aceleración gráfica completa y los 4 puertos funcionantes, pero sí se consiguen resultados interesantes como cambiar el nombre de la tarjeta en Perfil de Sistema o conseguir buena aceleración con GE=No.

 

Puedes leer sobre inyección de código gráfico en DSDT en ####### y en InsanelyMac entre otros sitios.

 

He probado un código propuesto por iFabio (ahora Fabio2203) con el que se obtiene:

tarjeta bien reconocida en Perfil de Sistema

aceleración gráfica sin necesidad de usar GE=Yes

2 puertos funcionantes: DVI 1 y DP.

El código se añade en el dispositivo PCI0, en mi DSDT se añade un dispositivo PEGP dentro de PCI0, PEGP ha de tener correcta la dirección de memoria en que está la tarjeta gráfica, la línea Name (_ADR, 0×00030000), normalmente es 0×00030000 (en mi caso) o 0×00010000 (en otras placas), se puede ver con el programa de Apple llamado Ioregistry Explorer aunque esa referencia de memoria no es sencilla de localizar:

 

 

Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_UID, Zero)
Name (_ADR, Zero)
Name (_BBN, Zero)
Method (_S3D, 0, NotSerialized)
{
	If (LEqual (OSFL, 0x02))
	{
		Return (0x02)
	}
	Else
	{
		Return (0x03)
	}
}

Device (PEGP)
{
	Name (_ADR, 0x00030000)
	Device (GFX0)
	{
		Name (_ADR, Zero)
		Method (_DSM, 4, NotSerialized)
		{
			Store (Package (0x0C)
				{
					"@0,name",
					Buffer (0x0E)
					{
						"ATY,Duckweed"
					},

					"@1,name",
					Buffer (0x0E)
					{
						"ATY,Duckweed"
					},

					"@2,name",
					Buffer (0x0E)
					{
						"ATY,Duckweed"
					},

					"@3,name",
					Buffer (0x0E)
					{
						"ATY,Duckweed"
					},

					"model",
					Buffer (0x13)
					{
						"ATI Radeon HD 6850"
					},

					"hda-gfx",
					Buffer (0x0A)
					{
						"onboard-1"
					}
				}, Local0)
			DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
			Return (Local0)
		}
	}

	Device (HDAU)
	{
		Name (_ADR, One)
		Method (_DSM, 4, NotSerialized)
		{
			Store (Package (0x02)
				{
					"hda-gfx",
					Buffer (0x0A)
					{
						"onboard-1"
					}
				}, Local0)
			DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
			Return (Local0)
		}
	}
}

 

 

También he probado otro código propuesto por Juanerson, va colocado en el mismo sitio del DSDT, con este código la tarjeta funciona bien pero necesita GE=Yes en o.c.b.p

tarjeta bien reconocida en Perfil de Sistema

aceleración gráfica solamente si se usa GE=Yes

2 puertos funcionantes: DVI 1 y DP:

 

 

Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_UID, Zero)
Name (_ADR, Zero)
Name (_BBN, Zero)
Method (_S3D, 0, NotSerialized)
{
	If (LEqual (OSFL, 0x02))
	{
		Return (0x02)
	}
	Else
	{
		Return (0x03)
	}
}

Device (PEGP)
{
	Name (_ADR, 0x00030000)
	Device (GFX0)
	{
		Name (_ADR, Zero)
		Method (_DSM, 4, NotSerialized)
		{
			Store (Package (0x0A)
				{
					"AAPL,aux-power-connected",
					Buffer (0x04)
					{
						0x01, 0x00, 0x00, 0x00
					},

					"built-in",
					Buffer (One)
					{
						0x00
					},

					"graphic-options",
					Buffer (0x04)
					{
						0x04, 0x00, 0x00, 0x00
					},

					"hda-gfx",
					Buffer (0x0A)
					{
						"onboard-1"
					},

					"model",
					Buffer (0x13)
					{
						"AMD Radeon HD 6850"
					}
				}, Local0)
			DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
			Return (Local0)
		}
	}

	Device (HDAU)
	{
		Name (_ADR, One)
		Method (_DSM, 4, NotSerialized)
		{
			Store (Package (0x08)
				{
					"built-in",
					Buffer (One)
					{
						0x00
					},

					"hda-gfx",
					Buffer (0x0A)
					{
						"onboard-1"
					},

					"layout-id",
					Unicode (" "),
					"PinConfigurations",
					Buffer (Zero) {}
				}, Local0)
			DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
			Return (Local0)
		}
	}
}

 

 

Resumen

 

El puerto DVI 1 es el único que funciona en todas las circunstancias. El puerto DVI 2 no ha funcionado con ningún método.

Con GE=Yes hay aceleración, funcionan DVI 1 y DP.

Con GE=No falta aceleración, funcionan DVI 1 y DP.

El DSDT de Fabio2203 no necesita GE=Yes para tener aceleración, funcionan DVI 1 y DP.

El DSDT de Juanerson necesita GE=Yes para tener aceleración, funcionan DVI 1 y DP.

La única forma de que funcione el puerto HDMI es cambiando al framebuffer Bulrushes pero hay fallos con paradas y retardos del ratón y falta aceleración. Algunos usuarios han comentado que utilizando Bulrushes junto con el DSDT de Fabio2203 se consigue HDMI sin fallos del ratón.

 

Nota: para usuarios expertos con ganas de trabajar en profundidad existe una guía desarrollada por Alexander Martinez, se trata de un texto muy profesional con un enorme trabajo detrás pero excesivamente complejo para la mayoría de los usuarios.

Link to comment
Share on other sites

Tarjeta gráfica AMD Radeon 6850 de 1Gb en Mac OS X Lion

 

Se trata del modelo Asus EAH6850 Direct CU que tiene 1Gb de memoria DDR5. Es una tarjeta de gama media con potencia suficiente para no echar de menos a los modelos más caros en la gran mayoría de las tareas. Es bastante silenciosa. Su identificador es 0×67391002 y está incluido en extensiones como ATI6000Controller.kext y ATIRadeonX3000.kext:

  • Fabricante: ATI (0×1002)
  • ID del dispositivo: 0×6739.

 

Hola miliuco,

 

Creo que se podría probar creando un DSDT más detallado y no solo con la inyección del Framebuffer. Si quieres envíame el archivo ROM de la BIOS de tu tarjeta y veo si puedo configurar un DSDT acorde con ella.

 

Un saludo!

Link to comment
Share on other sites

Hard223: muchas gracias por tu ofrecimiento, adjunto el archivo ROM que extraje para probar el método de Alexander Martínez, yo no me veo capaz de crear código DSDT a partir de la ROM así que tu ayuda será bien recibida.

 

barts.rom.zip

Link to comment
Share on other sites

ACTUALIZADO: 29/04/2012

 

Hard223: muchas gracias por tu ofrecimiento, adjunto el archivo ROM que extraje para probar el método de Alexander Martínez, yo no me veo capaz de crear código DSDT a partir de la ROM así que tu ayuda será bien recibida.

 

barts.rom.zip

 

Hola miliuco,

 

Según tu ROM:

 

BARTSPRO.100:

 

6739.13.12.0.21.AS01

 

Subsystem Vendor ID: 1043

Subsystem ID: 3b4

Object Header Structure Size: 355

Connector Object Table Offset: 48

Router Object Table Offset: 0

Encoder Object Table Offset: fd

Display Path Table Offset: 12

Connector Object Id [19] which is [DISPLAY_PORT]

encoder obj id [0x21] which is [iNTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] linkb: false

Connector Object Id [12] which is [HDMI_TYPE_A]

encoder obj id [0x21] which is [iNTERNAL_UNIPHY2 (osx txmit 0x22 [duallink 0x2] enc 0x5)] linkb: true

Connector Object Id [2] which is [DVI_I]

encoder obj id [0x1e] which is [iNTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false

Connector Object Id [2] which is [DVI_I]

encoder obj id [0x15] which is [iNTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false

Connector Object Id [1] which is [DVI_I]

encoder obj id [0x20] which is [iNTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false

 

Y tus especificaciones:

 

Espera que confirmo lo de DL y SL.

 

Veo las especificaciones:

  • DisplayPort 1,2
  • HDMI 1,4a
  • DVI DualLink con salida digital (el que llamo DVI2)
  • DVI SingleLink con salida DVI y VGA mediante adpatador (el que llamo DVI1).

"The EAH6850 DirectCU deviates from the standard reference design connectivity by using a single full size DisplayPort 1.2 connection, a single HDMI 1.4a port, a single Dual Link capable DVI port and a Single Link DVI connection that can be used for a VGA connection with the supplied adapter."

 

 

He configurado la inyección para especificar los 4 conectores con el orden de tu gráfica, así como el FrameBuffer.

 

Device (PCI0)
{
               Name (_HID, EisaId ("PNP0A03"))
               Name (_UID, Zero)
               Name (_ADR, Zero)
               Name (_BBN, Zero)
               Method (_S3D, 0, NotSerialized)
               {
                               If (LEqual (OSFL, 0x02))
                               {
                                               Return (0x02)
                               }
                               Else
                               {
                                               Return (0x03)
                               }
               }
               Device (PEGP)
               {
                               Name (_ADR, 0x00030000)
                               Device (GFX0)
                               {
                                               Name (_ADR, Zero)
                                               Method (_DSM, 4, NotSerialized)
                                               {
                                                               Store (Package (0x42)
                                                                       {
                                                                               "@0,AAPL,boot-display",
                                                                               Buffer (0x04)
                                                                               {
                                                                                       0x01, 0x00, 0x00, 0x00 /* Tarjeta principal */
                                                                               },
                                                                               "@0,compatible",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@0,connector-type",
                                                                               Buffer (0x04)
                                                                               {
                                                                                       0x00, 0x04, 0x00, 0x00 /* Conector #0 tipo DisplayPort */
                                                                               },
                                                                               "@0,device_type",
                                                                               Buffer (0x08)
                                                                               {
                                                                                       "display"
                                                                               },
                                                                               "@0,display-type",
                                                                               Buffer (0x05)
                                                                               {
                                                                                       "NONE"
                                                                               },
                                                                               "@0,name",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@0,VRAM,memsize",
                                                                               Buffer (0x08)
                                                                               {
                                                                                       /* 0000 */      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40 /* Memoria: 0x40 = 1GB (0x20 = 512MB, 0x10 = 256MB) */
                                                                               },
                                                                               "@1,compatible",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@1,connector-type",
                                                                               Buffer (0x04)
                                                                               {
                                                                                       0x00, 0x80, 0x00, 0x00 /* Conector #1 tipo HDMI */
                                                                               },
                                                                               "@1,device_type",
                                                                               Buffer (0x08)
                                                                               {
                                                                                       "display"
                                                                               },
                                                                               "@1,display-type",
                                                                               Buffer (0x05)
                                                                               {
                                                                                       "NONE"
                                                                               },
                                                                               "@1,name",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@2,compatible",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@2,connector-type",
                                                                               Buffer (0x04)
                                                                               {
                                                                                       0x04, 0x00, 0x00, 0x00 /* Conector #2 tipo DVI DualLink */
                                                                               },
                                                                               "@2,device_type",
                                                                               Buffer (0x08)
                                                                               {
                                                                                       "display"
                                                                               },
                                                                               "@2,display-type",
                                                                               Buffer (0x05)
                                                                               {
                                                                                       "NONE"
                                                                               },
                                                                               "@2,name",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@3,compatible",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "@3,connector-type",
                                                                               Buffer (0x04)
                                                                               {
                                                                                       0x00, 0x02, 0x00, 0x00 /* Conector #3 tipo DVI SingleLink */
                                                                               },
                                                                               "@3,device_type",
                                                                               Buffer (0x08)
                                                                               {
                                                                                       "display"
                                                                               },
                                                                               "@3,display-type",
                                                                               Buffer (0x05)
                                                                               {
                                                                                       "NONE"
                                                                               },
                                                                               "@3,name",
                                                                               Buffer (0x0D)
                                                                               {
                                                                                       "ATY,Duckweed" /* FrameBuffer */
                                                                               },
                                                                               "AAPL,aux-power-connected",
                                                                               Buffer (0x04)
                                                                               {
                                                                                       0x01, 0x00, 0x00, 0x00 /* Tiene alimentación auxiliar */
                                                                               },
                                                                               "AAPL,slot-name",
                                                                               Buffer (0x09)
                                                                               {
                                                                                       "PCIe x16" /* Tipo de conector PCI Express */
                                                                               },
                                                                               "ATY,Card#",
                                                                               Buffer (0x0F)
                                                                               {
                                                                                       "113-E14802-X06"
                                                                               },
                                                                               "ATY,Copyright",
                                                                               Buffer (0x33)
                                                                               {
                                                                                       "Copyright AMD Inc. All Rights Reserved. 2005-2008"
                                                                               },
                                                                               "ATY,Rom#",
                                                                               Buffer (0x0F)
                                                                               {
                                                                                       "113-B7710C-176"
                                                                               },
                                                                               "ATY,VendorID",
                                                                               Buffer (0x02)
                                                                               {
                                                                                       0x02, 0x10 /* VendorID de AMD */
                                                                               },

                 "ATY,DeviceID",
                                                                               Buffer (0x02)
                                                                               {
                                                                                       0x39, 0x67 /* DeviceID de 6850 */
                                                                               },

                                                                               "device_type",
                                                                               Buffer (0x13)
                                                                               {
                                                                                       "ATY,DuckweedParent"
                                                                               },
                                                                               "model",
                                                                               Buffer (0x16)
                                                                               {
                                                                                       "ASUS EAH6850 DirectCU" /* Marca y modelo de tarjeta que se mostrará en Perfil de sistema*/
                                                                               },
                                                                               "name",
                                                                               Buffer (0x13)
                                                                               {
                                                                                       "ATY,DuckweedParent"
                                                                               },
                                                                               "hda-gfx",
                                                                               Buffer (0x0A)
                                                                               {
                                                                                       "onboard-1" /* Audio HDMI */
                                                                               }
                                                                       }, Local0)
                                                               DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                                                               Return (Local0)
                                               }
                               }
                               Device (HDAU)
                               {
                                               Name (_ADR, One)
                                               Method (_DSM, 4, NotSerialized)
                                               {
                                                               Store (Package (0x02)
                                                                               {
                                                                                               "hda-gfx",
                                                                                               Buffer (0x0A)
                                                                                               {
                                                                                                               "onboard-1"
                                                                                               }
                                                                               }, Local0)
                                                               DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                                                               Return (Local0)
                                               }
                               }
               }


 

Y el FrameBuffer para la Personalitie elegida (Duckweed) a:

 

Connector Type --- ControlFlags ---- Features --Unknown ---- Transmitter-- Encoder ---- HotPlugID - SenseID

00 04 00 00 ------- 04 03 00 00 ------ 00 01 ----- 00 00 -------- 12 ------------ 04 ------------ 04 ----------- 01 -> DP

00 08 00 00 ------- 04 02 00 00 ------ 00 01 ----- 00 00 -------- 22 ------------ 05 ------------ 01 ----------- 04 -> HDMI

00 02 00 00 -------14 02 00 00 ------ 00 01 ----- 00 00 -------- 00 ------------ 00 ------------ 03 ----------- 05 -> DVI-I DualLink (DVI1)

04 00 00 00 ------- 14 00 00 00 ------ 00 01 ----- 00 00 -------- 11 ------------ 02 ------------ 06 ----------- 06 -> DVI-D SingleLink (DVI2)

 

PD:

 

GraphicsEnabler=No

NO AtiConfig, y NO AtiPorts

Link to comment
Share on other sites

Pienso como surfcaster ¡vaya nivel! lo pruebo y comento pero en algún momento tendrás que enseñarnos algo acerca de crear este DSDT inspirándote en datos de la ROM.

 

Gracias.

Link to comment
Share on other sites

Pienso como surfcaster ¡vaya nivel! lo pruebo y comento pero en algún momento tendrás que enseñarnos algo acerca de crear este DSDT inspirándote en datos de la ROM.

 

Gracias.

 

Realmente no hay mucho que hacer:

 

- Leer la rom con "redsock_bios_decoder" desde terminal

 

redsock_bios_decoder < barts.rom

 

- Identificar el orden y tipo de conectores.

 

- Conocer los bytes de cada tipo de conector e inyectarlos en el DSDT.

 

Hay que tener en cuenta varias cosas:

 

Apple desarrolla los drivers según las tarjetas gráficas que monta en cada uno de sus equipos oficiales, y aunque efectivamente ya se hacía referencia a la serie 69xx desde los KEXTS de Snow Leopard, hasta la fecha no hay ningún equipo MAC con gráficas 69xx. Apple programa los "ConnectorInfo" de las diferentes personalities del FrameBuffer acorde con las gráficas utilizadas oficialmente para que coincidan con el número de conectores de cada tarjeta, así como el tipo, si permite conexión en caliente, etc...

 

Supongo que desde el equipo de chameleon, han especificado el FrameBuffer que inyecta el GraphicsEnabler al detectar este modelo de tarjeta como "Duckweed" porque su ConnectorInfo debe coincidir bastante con ésta, no obstante podría ser que para tu modelo concreto exista un FrameBuffer más adecuado, pero muy probablemente no exista ninguno que funcione al 100%. De echo, puedes probar a cambiar el FrameBuffer inyectado en el DSDT por otro que parece que también coincide bastante, cambiando:

 

Buffer (0x0D)
{																						
"ATY,Duckweed"
},

 

por:

 

Buffer (0x0A)
{																						
"ATY,Gibba"
},

 

y

 

Buffer (0x13)
 {																					
 "ATY,DuckweedParent"
 },

 

Buffer (0x10)
 {																					
 "ATY,GibbaParent"
 },

NOTA: Puedes usar la misma idea con el FrameBuffer "Bulrushes" (cuenta bién la cantidad de caracteres +1 en HEX para ponerlo en el Buffer).

 

Cuando Apple decida utilizar la serie 69xx en sus equipos, será más sencillo conocer la especificaciones de la tarjeta en cuestión (tipo y cantidad de conectores), así como el FrameBuffer utilizado, con el fin de utilizar una tarjeta de PC cuya marca y modelo sea lo más similar a la utilizada en el equipo MAC, pero hasta entonces, puesto que este tipo de tarjetas ya están soportadas por 10.6.8, 10.7 y 10.8, lo que podemos hacer es elegir un FrameBuffer lo más acertado posible para nuestro modelo de tarjeta y "adaptarlo" como muy bien ha hecho Alexander en el post que lincas...

 

Es cierto que puede parecer bastante complicado, pero realmente no lo es tanto. No tengo ninguna ATI a mano aquí para hacer pruebas (estoy fuera de casa), pero puesto que este problema nos afecta a casi todos los que usamos ATI, llevo tiempo con la idea de crear un sofware que "ayude" a modificar las personalities con cierta facilidad (sin tener que entender todo el proceso). El DSDT que te he configurado habría que compaginarlo con un ATI6000Controller. Si quieres puedo echarte un cable a la hora de crear el ConnectorInfo, e intentar iniciar el desarrollo del software que te comento usando este FrameBuffer a modo de prueba para comenzar...

 

Salu2!

Link to comment
Share on other sites

Me gusta mucho todo lo que comentas, aunque has publicado poco tienes grandes conocimientos en este tema. Luego haré la prueba de tu dsdt pero cuenta conmigo para cualquier tarea relacionada con este proyecto de tu software, y supongo que surfcaster se apunta también.

Link to comment
Share on other sites

Hola, iFIRE (y compañía).

 

He probado el dsdst para la gráfica que amablemente creó hard223, éstas son las observaciones:

 

- la tarjeta es bien reconocida, arranca con aceleración gráfica usando Duckweed, funcionan los puertos DVI1 y DP, estas 3 cosas suceden independientemente de que ponga GE=Yes o GE=No en o.c.b.p.

- no funcionan los puertos DVI2 y HDMI (es lo habitual)

- compaginando este dsdt con la extensión ATI6000Controller modificada por Alexander Martínez funcionan los 4 puertos incluso con cambios en caliente pero... los retardos de ratón hacen que el sistema no se pueda usar, estos retardos no se quitan con GE=No ni con GE=Yes.

 

Conclusiones provisionales: los dsdt de Fabio y Hard223 permiten usar GE=No, el dsdt de Juanerson necesita GE=Yes, los 3 dsdt funcionan perfectamente sin que yo observe diferencias apreciables, en los 3 funcionan los puertos DVI1 y DP.

 

La única forma de que funcionen los 4 puertos es con la extensión modificada de Alexander Martínez, como bien dice hard223 el dsdt ha de compaginarse con esa extensión parece que obligatoriamente si se quieren obtener los 4 puertos funcionantes, con esta extensión los puertos van todos bien y además se cambian en caliente pero en mi sistema aparecen los comentados retardos de ratón, posiblemente probando otras combinaciones al modificar ATI6000Controller.kext podría conseguirse que todo fuese bien pero me falta tiempo para dedicarle y conocimientos al editar hexadecimalmente el kext.

 

No hay que olvidar que sin esfuerzo (con GE=Yes sin más) podemos tener la tarjeta funcionando bien con al menos 2 salidas para usar 2 monitores (yo uso un cable DP a DVI que compré bastante barato y el clásico DVI-DVI) aunque a todos nos gusta conseguir profundizar en busca de la "perfección" (je, je).

 

Si hard223 se mete en algo más profundo aquí me tienes para pruebas y ayudas en lo que necesites. Salu2.

Link to comment
Share on other sites

La única forma de que funcionen los 4 puertos es con la extensión modificada de Alexander Martínez, como bien dice hard223 el dsdt ha de compaginarse con esa extensión parece que obligatoriamente si se quieren obtener los 4 puertos funcionantes, con esta extensión los puertos van todos bien y además se cambian en caliente pero en mi sistema aparecen los comentados retardos de ratón, posiblemente probando otras combinaciones al modificar ATI6000Controller.kext podría conseguirse que todo fuese bien pero me falta tiempo para dedicarle y conocimientos al editar hexadecimalmente el kext...

 

 

Hola de nuevo miliuco,

 

Estoy con el programita que os comenté, y necesitaría que me subieras el archivo "ATI6000Controller.kext" original de la versión de OSX que estés ejecutando para parcheartelo y que lo pruebes a ver si funcionan todos los conectores OK.

 

Por otro lado para todos los que queráis ayudar al desarrollo de este nuevo proyecto, me vendría fenomenal que me echárais un cable aportando los resultados del script ati-personality.pl.0.8.zip

de bcc9 que podéis descargar de su post.

 

El script debéis descargarlo y ejecutarlo desde una ventana de terminal así:

 

sudo -s
cd /ruta a la carpeta descomprimida ati-personality.pl.0.8
./ati-personality.pl -v –a >personalitiesx32.txt
./ati-personality.pl -v -x –a >personalitiesx64.txt

 

La idea es conseguir la información de este script para las siguientes versiones de OSX:

 

Snow: 10.6.4, 10.6.5, 10.6.6, 10.6.7, 10.6.8

Lion: 10.7.0, 10.7.1, 10.7.2, 10.7.3, 10.7.4 y superiores según vayan saliendo...

 

Los comandos generarán dos archivos personalitiesx32.txt y personalitiesx64.txt. Crear un archivo ZIP y renombrarlo con nombre "personalities_10.6.4.zip" por ejemplo (debe coincidir con el nombre de la versión de OSX a la que correspondan los kexts analizados por la utilidad). Luego podéis publicarlos en este hilo.

 

El script de bcc9 lo que hace es buscar en /System/Library/Extensions los KEXTS:

 

ATI1300Controller.kext

ATI1600Controller.kext

ATI1900Controller.kext

ATI2400Controller.kext

ATI2600Controller.kext

ATI3800Controller.kext

ATI4600Controller.kext

ATI4800Controller.kext

ATI5000Controller.kext

ATI6000Controller.kext

ATIFramebuffer.kext

 

Y generará información acerca de las personalities encontradas en cada uno de los kexts (tanto para x32 como para x64) y lo almacenará en los archivos txt.

 

Para usuarios avanzados: Si disponéis de los kexts de las versiones de OSX citadas, podéis modificar el archivo ati-personality.pl para procesar los archivos en la ruta que deseis (por ejemplo si extraeis los kexts de un dmg de instalación de la versión OSX en concreto o un UpdateCombo usando Pacifist por ejemplo). La línea sería:

 

my $sledir = "/System/Library/Extensions/";

 

NOTA: No es necesario que vuestro equipo tenga una tarjeta ATI.

 

IMPORTANTE: Se necesita tener instalado xCode (se usa otool).

 

Esto me ayudará a programar el parcheo de los kexts según la versión de OSX instalada (también dejaré la posibilidad de cargar el propio "ati-personality.pl" si no funciona la detección automática).

 

Muchas gracias a todos por vuestra ayuda!

Link to comment
Share on other sites

Hola Hard233, te envio de mi Graphica , a ver si te sirve ;)

 

Un Saludo!!!!!! :D

 

personalities_10.7.3.zip

 

Gracias iFIRE!

 

Lo que necesito no son los kexts en sí, sino el resultado (los ficheros de texto) del comando "ati-personality.pl" como puse en el texto.

 

En principio si todo va bien, la aplicación podría ser compatible con bastantes tarjetas ATI y no solo con las 68xx (de momento solo para las personalities con formato de 16 bytes).

 

Gracias again :angel_not:

Link to comment
Share on other sites

Gracias iFIRE!

 

Lo que necesito no son los kexts en sí, sino el resultado (los ficheros de texto) del comando "ati-personality.pl" como puse en el texto.

 

En principio si todo va bien, la aplicación podría ser compatible con bastantes tarjetas ATI y no solo con las 68xx (de momento solo para las personalities con formato de 16 bytes).

 

Gracias again :angel_not:

 

Ok, a mi me genera los dos archivos, pero tengo un error en la terminal

 

Last login: Wed Apr 18 14:35:50 on ttys000

WORKGROUP:~ osmardallas$ sudo -s

Password:

bash-3.2# cd /Users/osmardallas/Desktop/ati-personality

bash-3.2# ./ati-personality.pl -v –a >personalitiesx32.txt

Cannot open otool -arch i386 -l /System/Library/Extensions/ATI1300Controller.kext/Contents/MacOS/ATI1300Controller for input

bash-3.2# ./ati-personality.pl -v -x –a >personalitiesx64.txt

Cannot open otool -arch x86_64 -l /System/Library/Extensions/ATI1300Controller.kext/Contents/MacOS/ATI1300Controller for input

bash-3.2#

 

personalities.zip

Link to comment
Share on other sites

Ok, a mi me genera los dos archivos, pero tengo un error en la terminal

 

Last login: Wed Apr 18 14:35:50 on ttys000

WORKGROUP:~ osmardallas$ sudo -s

Password:

bash-3.2# cd /Users/osmardallas/Desktop/ati-personality

bash-3.2# ./ati-personality.pl -v –a >personalitiesx32.txt

Cannot open otool -arch i386 -l /System/Library/Extensions/ATI1300Controller.kext/Contents/MacOS/ATI1300Controller for input

bash-3.2# ./ati-personality.pl -v -x –a >personalitiesx64.txt

Cannot open otool -arch x86_64 -l /System/Library/Extensions/ATI1300Controller.kext/Contents/MacOS/ATI1300Controller for input

bash-3.2#

 

personalities.zip

 

Perdón olvidé decir que se necesita tener instalado xCode para que funcione (otool es parte de xCode) ;P

Link to comment
Share on other sites

 

Es importante remarcar que esta tarjeta viene con 4 puertos, 2 DVI (uno puramente digital y otro con salida analógica para poder conectar convertidores DVI-VGA en caso necesario), 1 HDMI y 1 DisplayPort (DP en adelante), DVI 1 será el analógico y DVI 2 el digital (DVI 2 es el que está separado de los otros 3 que forman una misma línea):

 

[---] [-------] [DVI2]

[DP] [HDMI] [DVI1]

 

 

miliuco, puedes confirmarme cuál de los dos DVI es Single Link y cuál Dual Link??? No tengo muy claro si el DVI-I es Dual Link o es el DVI-D el Dual Link y no lo veo en la web de ASUS... :(

Link to comment
Share on other sites

Lo que te puedo decir con seguridad es que el que llamo DVI1 es el que tiene salida analógica y digital y es el que funciona en cualquier circunstancia, yo supongo que se corresponde con estos 2 conectores que tienen el mismo id, de ellos UNIPHY sería la salida digital y KLDSCP_DAC1 la analógica (VGA):

 

Connector Object Id [2] which is [DVI_I]

encoder obj id [0x1e] which is [iNTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false

Connector Object Id [2] which is [DVI_I]

encoder obj id [0x15] which is [iNTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false

 

Y el que llamo DVI2 que está separado sólo tiene salida digital (no VGA) y supongo que será éste:

 

Connector Object Id [1] which is [DVI_I]

encoder obj id [0x20] which is [iNTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false

 

Porque los otros 2 conectores tienen claro el nombre DisplayPort y HDMI.

 

Lo que no sé es decirte cuál es dual link y cuál no, dime si con la explicación anterior te basta o necesitas algo más.

 

Y ahí va mi kext de la versión 10.7.3 sin modificar (el nativo de Apple) y mis personalidades x32 y x64.

 

Animo con el proyecto, ya veo que sería como crear una aplicación o script que haga lo que tan tedioso y difícil es en la propuesta de Alexander Martinez (sin menoscabo de su enorme mérito) de una forma mucho más automática. ¡Vaya, me muero de ganas de ver lo que va saliendo!

 

Y yo que pensaba que sabía cosas sobre este asunto...

 

Gracias y sigue pidiendo. Salu2.

 

ATI6000Controller_10.7.3.zip

 

personalities_10.7.3.zip

Link to comment
Share on other sites

Lo que no sé es decirte cuál es dual link y cuál no, dime si con la explicación anterior te basta o necesitas algo más.

 

 

El tema es que tengo claro los conectores pero no sé cuál es DL y cuál SL, y es importante para el ConnectorType. No trae manual ni nada? donde aparezca especificado? No obstante te haré 2 kexts y probamos...

 

Luego le echo un ojo y te lo subo a ver si todo va ok... Salu2

Link to comment
Share on other sites

Espera que confirmo lo de DL y SL.

 

Veo las especificaciones:

  • DisplayPort 1,2
  • HDMI 1,4a
  • DVI DualLink con salida digital (el que llamo DVI2)
  • DVI SingleLink con salida DVI y VGA mediante adpatador (el que llamo DVI1).

"The EAH6850 DirectCU deviates from the standard reference design connectivity by using a single full size DisplayPort 1.2 connection, a single HDMI 1.4a port, a single Dual Link capable DVI port and a Single Link DVI connection that can be used for a VGA connection with the supplied adapter."

Link to comment
Share on other sites

Espera que confirmo lo de DL y SL.

 

Veo las especificaciones:

  • DisplayPort 1,2
  • HDMI 1,4a
  • DVI DualLink con salida digital (el que llamo DVI2)
  • DVI SingleLink con salida DVI y VGA mediante adpatador (el que llamo DVI1).

"The EAH6850 DirectCU deviates from the standard reference design connectivity by using a single full size DisplayPort 1.2 connection, a single HDMI 1.4a port, a single Dual Link capable DVI port and a Single Link DVI connection that can be used for a VGA connection with the supplied adapter."

 

Ok. He modificado el post anterior en el que te pastee el código DSDT con el DSDT modificado y un kext para que hagas la prueba... Suerte! ;P

Link to comment
Share on other sites

Estos son los resultados de la pueba:

  • el código dsdt funciona bien en solitario (sin cambiar la extensión) aparentemente igual que el dsdt anterior (acepta GE=No, funcionan DVI1 y DP)
  • la extensión ATI6000Controller modificada se carga si uso la versión anterior de tu dsdt pero en ese caso sin mejoras (funciona igual que con la nativa, sólo DVI1 y DP)
  • la extensión ATI6000Controller modificada no funciona con el nuevo dsdt, con éste el sistema parece arrancar bien pero se queda justo en la pantalla gris claro que hay antes de mostrar el escritorio y sus iconos y ahí se atasca.

Resumen: kext + dsdt nuevo = no, kext + dsdt antiguo = bien pero no mejora, dsdt nuevo sin kext = bien pero no mejora.

Link to comment
Share on other sites

Estos son los resultados de la pueba:

  • el código dsdt funciona bien en solitario (sin cambiar la extensión) aparentemente igual que el dsdt anterior (acepta GE=No, funcionan DVI1 y DP)
  • la extensión ATI6000Controller modificada se carga si uso la versión anterior de tu dsdt pero en ese caso sin mejoras (funciona igual que con la nativa, sólo DVI1 y DP)
  • la extensión ATI6000Controller modificada no funciona con el nuevo dsdt, con éste el sistema parece arrancar bien pero se queda justo en la pantalla gris claro que hay antes de mostrar el escritorio y sus iconos y ahí se atasca.

Resumen: kext + dsdt nuevo = no, kext + dsdt antiguo = bien pero no mejora, dsdt nuevo sin kext = bien pero no mejora.

 

Ok prueba estos dos, con el DSDT último que te pasé (puedes probar tb el anterior si quieres), y haz la prueba también con el DSDT de Fabio2203 que no tenía especificados los conectores...

 

Por cierto, has probado el HDMI?

 

Salu2

ATI6000Controller.kext_10.7.3_A.zip

ATI6000Controller.kext_10.7.3_B.zip

  • Like 1
Link to comment
Share on other sites

Haré un comentario más detallado, por ahora sólo como resumen te diré que la extensión A no va bien pero la extensión B parece dar salida a 3 de los puertos (todos salvo HDMI) con varios dsdt y sin retardos del ratón.

Link to comment
Share on other sites

 Share

×
×
  • Create New...