uzmi Posted June 16, 2013 Share Posted June 16, 2013 Hola: Existen muy buenos post (en inglés) donde se puede aprender como lograr que las Ati 6850 (y/o similares) funcionen perfectamente. El problema surge si nuestro dominio del idioma inglés es muy limitado y el "Traductor Google" ya no da mas de si. Incluso existe un excelente post en español donde se comenzó a tratar el tema pero por desgracia quedó abandonado. No tengo estudios ni preparación adecuada de informática por eso adelanto que este post solo será un "breve relato" de como lo conseguí. Con esto quiero decir que no estoy en condiciones para solventar dudas sin embargo quiero que mi experiencia sirva como punto de partida a otros. Ademas siempre existirá la posibilidad de que alguien mas instruido pueda ayudar en caso de dudas. Para acometer esta tarea me he basado en los siguientes aportes: http://www.insanelymac.com/forum/topic/273937-guide-getting-xfx-hd6850-connectors-to-work/ http://www.insanelymac.com/forum/topic/278122-guia-instalacion-de-ati-radeon-6850-en-lion/ http://www.insanelymac.com/forum/topic/287995-how-to-launch-ati-card-by-dsdt/ y en particular debo agradecer a Juanerson que en este post http://www.insanelymac.com/forum/topic/289066-dsdt-msi-z68ma-ed55-b3/ y en muchísimos otros, no ha dejado de compartir sus conocimientos en favor de "des-asnarme" y ayudarme a resolver mis dudas. MATERIALES: Radeon_bios_decode, Redsock_bios_decoder, Ati-personality.pl-0.11, HexEdit, la bios de la gráfica (se obtiene con GPUz desde windows) y ademas es necesario tener instalado Xcode. He descomprimido todo en el escritorio para facilitar la tarea. DECODIFICANDO: Abrir el terminal, arrastrar y soltar radeon_bios_decode escribir símbolo > y arrastrar y soltar Barts.rom (la bios de la gráfica). Pido disculpas si mis indicaciones resultan tediosas o demasiado obvias pero esto está pensado para gente como yo que necesita todo indicado al mas mínimo detalle. Lo mismo con redsock_bios_decoder. Los resultados: guzmans-imac:~ uzmi$ /Users/uzmi/Desktop/radeon_bios_decode < /Users/uzmi/Desktop/Barts.rom ATOM BIOS Rom: SubsystemVendorID: 0x1787 SubsystemID: 0x200f IOBaseAddress: 0x0000 Filename: HIS_barts_pr BIOS Bootup Message: BARTS PRO PCIE 1GB/256B GDDR5 DVI-I/DVI-D/HDMI/DP 775E/1000M PCI ID: 1002:6739 Connector at index 0 Type [@offset 44254]: DisplayPort (10) Encoder [@offset 44258]: INTERNAL_UNIPHY2 (0x21) i2cid [@offset 44364]: 0x90, OSX senseid: 0x1 Connector at index 1 Type [@offset 44264]: HDMI-A (11) Encoder [@offset 44268]: INTERNAL_UNIPHY2 (0x21) i2cid [@offset 44391]: 0x93, OSX senseid: 0x4 Connector at index 2 Type [@offset 44274]: DVI-I (2) Encoder [@offset 44278]: INTERNAL_UNIPHY (0x1e) i2cid [@offset 44428]: 0x94, OSX senseid: 0x5 Connector at index 3 Type [@offset 44284]: DVI-I (2) Encoder [@offset 44288]: INTERNAL_KLDSCP_DAC1 (0x15) Aporta señal analógica. Como DVI-I aporta la salida VGA (con adaptador) y tenemos 4 conectores y no 5, lo desechamos (el SenseID es igual al de DVI-I) i2cid [@offset 44428]: 0x94, OSX senseid: 0x5 Connector at index 4 Type [@offset 44294]: DVI-D (3) Encoder [@offset 44298]: INTERNAL_UNIPHY1 (0x20) i2cid [@offset 44455]: 0x95, OSX senseid: 0x6 guzmans-imac:~ uzmi$ /Users/uzmi/Desktop/redsock_bios_decoder < /Users/uzmi/Desktop/Barts.rom HIS_barts_pr: BARTS PRO PCIE 1GB/256B GDDR5 DVI-I/DVI-D/HDMI/DP 775E/1000M Subsystem Vendor ID: 1787 Subsystem ID: 200f 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 [3] which is [DVI_D] encoder obj id [0x20] which is [iNTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false Los mismos datos pero mejor ordenados: radeon_bios_decode PCI ID: 1002:6739 Connector at index 0 DisplayPort (10) Encoder : INTERNAL_UNIPHY2 (0x21) OSX senseid: 0x1 Connector at index 1 HDMI-A (11) Encoder : INTERNAL_UNIPHY2 (0x21) OSX senseid: 0x4 Connector at index 2 DVI-I (2) Encoder : INTERNAL_UNIPHY (0x1e) OSX senseid: 0x5 Connector at index 4 DVI-D (3) Encoder : INTERNAL_UNIPHY1 (0x20) OSX senseid: 0x6 redsock_bios_decoder Connector Object Id [19] [DISPLAY_PORT] encoder obj id [0x21] INTERNAL_UNIPHY2 osx txmit 0x12 [duallink 0x2] enc 0x4 Connector Object Id [12] [HDMI_TYPE_A] encoder obj id [0x21] INTERNAL_UNIPHY2 osx txmit 0x22 [duallink 0x2] enc 0x5 Connector Object Id [2] [DVI_I] encoder obj id [0x1e] INTERNAL_UNIPHY osx txmit 0x10 [duallink 0x0] enc 0x0 Connector Object Id [3] [DVI_D] encoder obj id [0x20] INTERNAL_UNIPHY1 osx txmit 0x11 [duallink 0x1] enc 0x2 USANDO EL SCRIPT: Valores del kext Usar script ati-personality-pl. no funciona si no está instalado Xcode. (Arrastrar el script directamente en el terminal y dar enter) Se obtienen todas las personalidades de los diferentes kexts. En este caso solo interesan las correspondientes a Ati6000Controller.kext y en especial la de Duckweed. Personality: Duckweed ConnectorInfo count in decimal: 4 Disk offset in decimal 605008 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 Puerto 0 0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 Puerto 1 0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04 Puerto 2 0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05 Puerto 3 0000040 Cada linea corresponde a un conector. Dividir las parejas de números en 4 -4 -2 -2 -1-1-1-1 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 Puerto 0 Puerto 0 Puerto 1 Puerto 2 Puerto 3 00 04 00 00 corresponde a Connector Type 00 04 00 00 00 08 00 00 00 02 00 00 04 03 00 00 corresponde a Aty Control Flag 04 03 00 00 04 02 00 00 14 02 00 00 (5) 00 01 corresponde a Features 00 01 00 01 00 01 00 00 corresponde a Desconocido (dejar tal cual) 00 00 00 00 00 00 12 corresponde a Transmitter 22 11 00 04 corresponde a Encoder 05 02 00 04 corresponde a HotPlugID 05 03 06 01 corresponde a SenseID 02 04 05 Esto es lo que el kext Ati6000Controller tiene, ahora toca comparar con los datos obtenidos arriba y si corresponde modificar. USANDO LA CABEZA: Buscar valores de la gráfica, comparar y modificar El forero mucha hizo una tabla que también nos ayudará y nos permitirá orientarnos mejor. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 1- CONNECTOR TYPE: CONNECTORT YPE_LVDS 0x00000002 //Pantalla portatil CONNECTORT YPE_DVIDL 0x00000004 //Dual Link CONNECTOR TYPE_VGA 0x00000010 CONNECTOR TYPE_S-V 0x00000080 CONNECTOR TYPE_DP 0x00000400 CONNECTOR TYPE_HDMI 0x00000800 CONNECTOR TYPE_DVISL 0x00000004 //Single Link 2- ATY, CONTROL FLAG: 0x0002 : LVDS > ControlFlag : 0x0040 / 0x0100 0x0004 : DVI-SL? > ControlFlag : 0x0016 - 0x0014 / 0x214 0x0010 : VGA > ControlFlag : 0x0010 0x0080 : S-Video > ControlFlag : 0x0002 0x0200 : DVI-? > ControlFlag : 0x0014 / 0x0214 - 0x0204 0x0400 : DisplayPort > ControlFlag : 0x0100 - 0x0104 - 0x0304 / 0x0604 - 0x0400 0x0800 : HDMI > ControlFlag : 0x0200 0x1000 : DVI-? > ControlFlag : 0x0016 3-FEATURES: FEATURE_USE_INTERNAL 0x01 FEATURE_USE_RGB_ON_YUV 0x04 FEATURE_USE_BACKLIGHT 0x08 FEATURE_BACKLIGHT_INVERTED 0x10 FEATURE_USE_CLAMSHELL 0x20 Por ejemplo para pantalla LVDS será 0x09 = 0x01 + 0x08 (Internal + Backlight) 0x0002 : LVDS > Features : 0x09 0x0004 : DVI-? > Features : 0x00 0x0010 : VGA > Features : 0x00 0x0080 : S-Video > Features : 0x04 0x0200 : DVI-? > Features : 0x00 0x0400 : DisplayPort > Features : 0x00 0x0800 : HDMI > Features : 0x00 0x1000 : DVI-? > Features : 0x00 4- DESCONOCIDO: Dejar tal cual 5- TRANSMITTER: Del 0 al 3 UNIPHY 0x00 UNIPHY1 0x01 UNIPHY2 0x02 Del 4 al 7 (LinkID) DUAL-LINK 0x00 // LINKA + LINKB LINKA 0x10 LINKB 0x20 UNIPHYA 0x10 // = UNIPHY:LINKA UNIPHYB 0x20 // = UNIPHY:LINKB UNIPHYAB 0x00 // = UNIPHY:DUALLINK UNIPHYC 0x11 // = UNIPHY1:LINKA UNIPHYD 0x21 // = UNIPHY1:LINKB UNIPHYCD 0x01 // = UNIPHY1:DUALLINK UNIPHYE 0x12 // = UNIPHY2:LINKA UNIPHYF 0x22 // = UNIPHY2:LINKB UNIPHYEF 0x02 // = UNIPHY2:DUAL LINK DACA 0x00 DACB 0x10 6- ENCODER: Lo sacamos del resulatado obtenido con redsock_bios_decoder de mas arriba. Del 0 al 3 (DIG_ID : Digital) DIG1 0x00 // = DIGA DIG2 0x01 // = DIGB DIG3 0x02 // = DIGC Solo para Radeon HD series 5xxx o superiores DIG4 0x03 // = DIGD Solo para Radeon HD series 5xxx o superiores DIG5 0x04 // = DIGE Solo para Radeon HD series 5xxx o superiores DIG6 0x05 // = DIGF Solo para Radeon HD series 5xxx o superiores Del 4 al 7 (DAC_ID : Analog) DAC 0x10 7- HOTPLUG ID: Es un identificador único para cada puerto, probé con 0 para PUERT0, 1 para el puerto 1 y 2 para puerto2 y funcionó (Nota del autor) 8- SENSE ID: Se obtiene también con redsock_bios_decoder *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Port Connector ConnectorType Aty Control Flag Features Unknown Transmitter Encoder HotPlugID SenseID 0000000 DP 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 Según Ati6000Controller 0000000 DP 0x00000400= 00 04 00 00 0x304=04 03 00 00 00 01 (1) 00 00 12 (2) 04 (3) 04 01(4) No hay que modificar (sin probar) 0000010 DVI-I DL 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 Segun Aty Controller 0000010 DVI-I DL 0x00000004=04 00 00 00 0x0014=14 00 00 00 00 01 00 00 10 00 05 05 Resultado final 0000020 HDMI 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04 Según Ati6000Controller 0000020 HDMI 0x00000800=00 08 00 00 0x0200= 00 02 00 00 00 01 00 00 22 05 03 04 Primer intento (5) 0000020 HDMI 0x00000800=00 08 00 00 0x0204= 04 02 00 00 00 01 00 00 22 05 03 04 Resultado final 0000030 DVI_D DL 00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05 Según Ati6000Controller 0000030 DVI_D DL 0x00000004=04 00 00 00 0x0214=14 02 00 00 00 01 00 00 11 02 06 06 Primer intento (6) 0000030 DVI_D DL 0x00000004=04 00 00 00 0x0014=14 00 00 00 00 01 00 00 11 02 06 06 Resultado final Tener presente que por ejemplo 0x00000400=00 04 00 00 (se invierten de a dos). Los colores son solo para explicar excepto los rojos que son modificaciones. El resultado es este: 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000010 04 00 00 00 14 00 00 00 00 01 00 00 10 00 05 05 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04 0000030 04 00 00 00 14 00 00 00 00 01 00 00 11 02 06 06 (1) Info mucha FEATURES: FEATURE_USE_INTERNAL 0x01 (01) 0x0400 : DisplayPort > Features : 0x00 (00) (2) Info redsock_bios_decoder : [DISPLAY_PORT] [iNTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] (3) Info redsock_bios_decoder : [DISPLAY_PORT] [iNTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4 (04))] (4) Info radeon_bios_decode : DisplayPort (10) INTERNAL_UNIPHY2 (0x21) OSX senseid: 0x1 (01) (5) Según los datos de mucha el Aty ControlFlag del HDMI debería ser 0x200 (00 02 00 00) pero no quiso funcionar me decanté por dejar el original 0x0204 (04 02 00 00) y probar (6) Igual que el caso anterior, debería ser ControlFlag : 0x0016 o 0x0014 o 0x214, probé con 0x 214 pero no lo aceptó y opté por elegir 0x0014 que es el mismo que usé para el DVI-I (ambos DVI-I y-D son dual link) Mantengo los mismos HotPlugID MODIFICAR ATI6000CONTROLLER.KEXT Copiar Ati6000Controller.kext al escritorio Abrir HexEdit, ir a Ati6000Controller.kext--> Contents-->MacOS-->AMD6000Controller HexEdit-->Find--> Find & Replace Find --> Cifra de Conector X obtenida de Ati6000Controller.kext Replace with --> Cifra de Conector X modificada por nosotros. 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 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000010 04 00 00 00 14 00 00 00 00 01 00 00 10 00 05 05 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04 0000030 04 00 00 00 14 00 00 00 00 01 00 00 11 02 06 06 Salvar, instalar el kext modificado, reparar permisos, reconstruir cache y probar. Iniciar Mountain Lion con Chameleon y o.c.b.p. con GraphicsEnabler --> No DSDT: Por último queda retocar el DSDT. Tomé el código que Hard233 hizo para Miliuco para basarme en él y hacer las modificaciones pertinentes. (gracias Juanerson) Dejo mi dsdt en la carpeta Materiales para que puedan comparar. Y como dicen los dibujos animados: Eso es todo amigos Materiales.zip 5 Link to comment https://www.insanelymac.com/forum/topic/289914-ati-his-radeon-hd-6850-en-mountain-lion/ Share on other sites More sharing options...
miliuco Posted December 3, 2013 Share Posted December 3, 2013 Excelente texto, Uzmi, perdón por no leerte antes, voy a probar con tu IC (información de conectores) ya que es diferente a las 2 cadenas que he utilizado yo del usuario shiecldk, la tuya la pongo aquí junto a las otras 2 y se ven claramente las diferencias (en rojo negrita las parejas de shiecldk que son diferentes a las tuyas): Uzmi 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 10 00 05 05 00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04 04 00 00 00 14 00 00 00 00 01 00 00 11 02 06 06 shiecldk (2 IC diferentes) 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 03 04 04 00 00 00 14 02 00 00 00 01 00 00 10 00 06 05 00 02 00 00 14 02 00 00 00 01 00 00 11 02 05 06 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 05 04 04 00 00 00 14 02 00 00 00 01 00 00 00 00 03 05 00 02 00 00 04 02 00 00 00 01 00 00 11 02 06 06 Repito: formidable trabajo, pruebo tus cadenas y comento los resultados, mi gráfica es ASUS EAH6850 1gb. 1 Link to comment https://www.insanelymac.com/forum/topic/289914-ati-his-radeon-hd-6850-en-mountain-lion/#findComment-1973383 Share on other sites More sharing options...
miliuco Posted December 3, 2013 Share Posted December 3, 2013 uzmi: perfecto, con tu cadena de IC y el código gráfico en el DSDT también funcionan los 4 puertos, igual que con las cadenas de shiecldk, y todo parece funcionar bien. Link to comment https://www.insanelymac.com/forum/topic/289914-ati-his-radeon-hd-6850-en-mountain-lion/#findComment-1973422 Share on other sites More sharing options...
Recommended Posts