Jump to content

(Solucionado) Inyectar Device-Id del dispositivo LPC para activar SpeedStep


pagani
 Share

32 posts in this topic

Recommended Posts

Juanerson me comentaba el otro día:
 
En el segundo .ioreg ya tienes SpeedStep de los P-States (son compatibles con la norma Apple desde la BIOS de tu placa). Entonces, faltaría inyectar-simular un dispositivo LPC en la DSDT compatible con OS X para que sea reconocido por el sistema, de esa manera lograr que carguen tanto los C-States (siempre y cuando sean compatibles desde las tablas SSDT de la BIOS) como el propio LPC, y así completar la gestión de energía del procesador. A los puertos USB tal vez haya que retocarlos muy poco también desde la DSDT. Y con eso debería funcionar el reposo completamente.

 

En resumen, lo que hace falta se resuelve fácil desde la DSDT. En primer lugar hay que saber el "device-id" nativo del dispositivo LPC de la iMac12,1. Saludos.

 

EDITADO:

Device-ID del dispositivo LPC de la iMac12,2 : pci8086,1c44 (se inyecta como <44 1c 00 00>)

 

He estado leyendo un poco sobre DSDT, y bueno, dentro del poco tiempo que he tenido me he liado un tanto. Hay varios métodos para inyectar el dispositivo, pero aún no me ha quedado claro ninguno (o más bien tengo miedo de cargármelo todo). ¿Como tengo que hacer para inyectar el Device-id para simular LPC? .  El DSDT lo he generado con AIDA64 desde Windows. Pongo aquí los enlaces a mi (tal como lo generó AIDA64, cambiando la extensión bin por aml) y el generado por IORegistryExplorer.

Se que hay mucha información por la red, pero la mayoría no me aclara gran cosa, sobre todo porque está en inglés, aunque el traductor ayuda mucho. He leído algo sobre realizar el inyectado sin necesidad de DSDT, y otros métodos, casi todos diferentes, lo que me lía más aún.

Por ello aprovecho para preguntar aquí a quienes nos pueden aportar un poco de luz sobre el tema y así ir aprendiendo el modo de  tener un sistema cada vez más compatible y estable.

 

https://mega.co.nz/#!I9AHgbzT!0znByUQozsTk_iyZdM98H8T5LJIVN0AavMzMY1Q42Go       (ioreg)

 

https://mega.co.nz/#!xtYDDSzb!nvXhn2tT9wGoX0C19PQfb56koXazxzjfuZnIjBif2Vo                (DSDT)

 

No se si aún se puede resolver fácil y en este ioreg siguen estando los P-States después de algunos cambios. 

 

Saludos cordiales.

 

 

Link to comment
Share on other sites

Tengo el hardware de la firma. Una placa base Gigabyte B75M-D3P, con micro i3 3220 ivy bridge, gráfica nvidia GT520, sonido realtek ALC 887, LAN chip Realtek 8111DP (10/100/1000 Mbit). Te cuelgo el DSDT del programa que me has pasado. Por cierto, muy útil.

 

DSDT:

 

https://mega.co.nz/#!554RlZLC!cg3uwe2isnCoxvN1Ay8my0lqpQwRXrm1VugrRYMctc8

 

 

Recibe un cordial saludo.

Link to comment
Share on other sites

Hola, para cargar AppleLPC usa este parche:

into method label _DSM parent_adr 0x001F0000 remove_entry;
into device name_adr 0x001F0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
Return (Package()\n
{\n
"name", "pci8086,1e44",\n
"device-id", Buffer () { 0x44, 0x1E, 0x00, 0x00 },\n
})\n
}
end;

Para solucionar el error "Invalid object type for reserved name (found ZERO, requires Buffer)" usa este:

into method label _CRS parent_hid PNP0C01 remove_entry;
into device name_hid PNP0C01 insert
begin
Method (_CRS, 0, NotSerialized)\n
{\n
Return (CRS)\n
}\n
end;

Estos parches los puedes aplicar con Maciasl: http://sourceforge.net/projects/maciasl/

 

Reply with IOReg

  • Like 1
Link to comment
Share on other sites

El problema es que un iMac12,2 (sandy bridge) usa un id 8086,1c44, pero el tuyo es (Ivy Bridge) 8086,1e49. Creo que sería mejor cambiar el modelo emulado a un iMac13,x (Ivy Bridge) que usa un LPC similar al de tu sistema actual. De paso el Speedstep debería funcionar mejor, siendo bastante diferente el sistema que usa OS X para Ivy comparado con Sandy. Incluso usa un kext controlador distinto (ACPI_SMC_Platform vs X86PlatformPlugin).

 

Este es el código para cambiar el id:

Method (_DSM, 4, NotSerialized){
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
    Return (Package()
    {
        "compatible", "pci8086,1e44",
    })
}

Solo corregí lo mínimo para compilar y agregue el fake id 1e44, si quieres puedes cambiarlo a 1c44 de la iMac12,2 pero no lo aconsejo.

 

Mas información sobre Speedstep para Ivy Bridge aquí.

dsdt(server OS X).aml.zip

  • Like 1
Link to comment
Share on other sites

Hola,

 

He compilado de momento los dos patch que me ha pasado jlc4 y me ha creado un archivo System DSDT.dsl. Este es el DSDT definitivo? Ando totalmente perdido. Ha generado unos cuantos mensajes warning con el segundo patch, pero ha compilado bien.

 

Y como menciona Maniac10, es cierto que estaría mejor con la smbios imac 13,1. Así que es la que de momento voy a dejar, pues si que hay un imac con el ivy bridge i3 3225, que solo se diferencia del mío en la gráfica incorporada.

Me falta probar cambiando la función Method que me has pasado (¿Es para sustituir en el  código de jlc4 esta función? :

 

Method (_DSM, 4, NotSerialized)\n
{\n
If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
Return (Package()\n
{\n
"name", "pci8086,1e44",\n
"device-id", Buffer () { 0x44, 0x1E, 0x00, 0x00 },\n
})\n
}

 

y sustituirla por la otra, más adecuada para un imac 13,1 - 13,2, ésta:

 

Method (_DSM, 4, NotSerialized){
If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
Return (Package()
{
"compatible", "pci8086,1e44",
})
}

En cuanto al enlace que me indicas, lo he realizado varias veces, pero nunca me activa LPC ni SpeedState. Sin embargo todo funciona sin ningún error. Únicamente una advertencia a la hora de motar la partición EFI. No tengo claro si aquí (en el enlace que contiene ssdtPRGen), debería ser una instalación con la partición EFI activada.

 

Tampoco tengo muy claro como usar el archivo compilado, el DSDT.sdl, pues pensaba que la extensión debía ser aml. Estoy probando sobre un disco externo, no creo que haya problemas por ahí.

 

Saludos cordiales y perdón por mi torpeza, pero todo esto es más que nuevo para mí.

Link to comment
Share on other sites

Los warning que mencionas ya los tenia el dsdt que subiste, pero NO son obstáculos para compilar.

Si, sigue el consejo de Maniac (cambiar smbios) porque tienes ivy bridge.

En cuanto al parche que te deje, puedes usarlo y probar si carga AppleLPC, si no es así entonces prueba con el method que te dejo Maniac, el solo usa "compatible". Ve que pasa.

Cuando quieres compilar un dsdt debes guardarlo con la extension "aml" (File Format: ACPI Machine Lenguaje Binary)

Para generar el ssdt para tu cpu debes seguir las instrucciones que encontraras en el siguiente link: https://github.com/Piker-Alpha/ssdtPRGen.sh

Ademas, debes configurar tu bootloader para que use el ssdt generado.

Si usas clover, sube el config.plist

Attach IOReg

Link to comment
Share on other sites

Me falta probar cambiando la función Method que me has pasado (¿Es para sustituir en el  código de jlc4 esta función? :

No hace falta cambiar esta función, ambas inyectan el mismo id del iMac13,x.

 

En cuanto al enlace que me indicas, lo he realizado varias veces, pero nunca me activa LPC ni SpeedState. Sin embargo todo funciona sin ningún error. Únicamente una advertencia a la hora de motar la partición EFI. No tengo claro si aquí (en el enlace que contiene ssdtPRGen), debería ser una instalación con la partición EFI activada.

Probablemente te falte emular un modelo de Mac que use Ivy para que se cargue el kext de power management adecuado. Por ahora veo en tu ioreg que esta cargando el kext para Sandy.

 

El script probablemente quiera instalar automáticamente el SSDT en la carpeta de Clover (en la partición EFI normalmente), por eso el error, pero puedes copiarlo manualmente sin problemas. Y si usas Clover podemos probar un método para inyectar el LPC sin tener que crear un DSDT.

Link to comment
Share on other sites

Bueno, ya tengo compiladas tanto el DSDT.aml, como el SSDT.aml.  Creo que poco a poco voy teniendo un poco más claro como funciona todo. Lo malo es que uso Chameleon, pero paso a paso. Más adelante tal vez me ponga con Clover.

 

El SSDT lo marco en las opciones de Chameleon Wizard, y el DSDT, pues no tengo muy claro como lo uso, ni si hay que usar los dos a la vez. De momento con el SSDT sólo no logro se cargue AppleLPC. 

 

Yo creo que está bien, sobre todo el DSDT, y actualmente tengo como SMBIOS imac 13,1. Os pongo los enlaces por si tenéis paciencia para ver si están bien. 

 

https://mega.co.nz/#!l5Jh3SjL!pibCEtNgcz0CyghiA-N5JNjtIMPiACMtcPX-VrddEtY                        SSDT.aml

 

https://mega.co.nz/#!ohpREDTb!vx00ojXqmkbxueWaKQwnnJWMe5L1CpGGwBgxGvepSAw       DSDT.aml

 

Creo que lo mejor que hago es arañar espacio para otra partición y volver a probar instalándolo todo y añadiendo el DSDT y el SMBIOS en Pandora al principio.

 

Un millón de gracias por vuestra ayuda y paciencia.

Saludos.

 

Link to comment
Share on other sites

Tengo que subir la copia del ioreg (las subo como attach).

 

Ha cargado por fin AppleLPC, pero o bien en el archivo que generó o algún otro problema, el caso es que iba muy lento el equipo. Unas 4 veces más lento, tanto en la CPU, como en la gráfica. Por ejemplo en un geekbench 2 pasó de  casi 8000 a unos 2000. Así mismo con el monitor HWMonitor se veía claramente ese descenso, el micro multiplicaba por 8, por lo que iba a unos 800 Mhz.

Además de DropSSDT=Yes, ¿Es necesario Generate P-States y Generate C-States?. Volveré a generar ambos ficheros y los compararé un poco para ver si encuentro algo raro.

 

Saludos.

 

Link to comment
Share on other sites

Bueno, más o menos ya empiezo a saber por donde van los tiros. A fuerza de probar se va aprendiendo. Sigo hasta que esté bien generado el SSDT. Además no estaba cargado este kext: acpi_smc_platformplugin

 

Saludos.

Link to comment
Share on other sites

Arrancas con el argument “-xcpm” como describe la guía de PimentelX?

 

Y no estoy muy seguro pero creo que para Ivy debes habilitar la opción “xcpm" al generar el SSDT. Lee las instrucciones como dice jl4c, especialmente las ultimas 2, xcpm y workarounds for Ivy.

 

Y no necesitas el kext acpi_smc_platformplugin en tu sistema, sino el X86PlatformPlugin.

Link to comment
Share on other sites

Así es, como te dijo Maniac: Ivy Bridge usa X86PlatformPlugin y no ACPI_SMC_PlatformPlugin.


Arrancas con el argument “-xcpm” como describe la guía de PimentelX?

 

Y no estoy muy seguro pero creo que para Ivy debes habilitar la opción “xcpm" al generar el SSDT. Lee las instrucciones como dice jl4c, especialmente las ultimas 2, xcpm y workarounds for Ivy.

No, no es necesario. XCPM es para los nuevos Haswell y también para algunos Ivy Bridge (en laptops es necesario parchar el kernel para usar XCPM).

  • Like 1
Link to comment
Share on other sites

Si use el flag xcpm. He probado con él y sin él, pero iba igual. X86PlatformPlugin si que carga. Cargan todos los kext que se mencionan, excepto ACPI_SMC_PlatformPlugin, pero si no es necesario, el resto están todos cargados. Visto con HWMonitor, la cpu multiplica sólo por 8 y 16, cuando ahora por ejemplo esos valores son por 16 y 32. El reloj interno del micro son 100 Mhz. También creo que he generado mal el SSDT, pues no le introduje ningún argumento, creía que reconocía el micro de modo automático. 

 

Saludos cordiales.

Link to comment
Share on other sites

En una instalación copia de la anterior, todo funciona bien. Me ahorré parchear AppleIntelCPUPowerManagement, pues ya era un parche, y parece que de momento todo va bien. Tengo que afinarlo un poco más e instalarlo en mi Maverick del día a día. Supongo que estos métodos no servirán para Yosemite.

 

25atd6w.png

 

Gracias a todos por vuestra ayuda.

Link to comment
Share on other sites

Lo extraño es que está cargado el plugin de Sandy Bridge, ACPI_SMC_PlatformPlugin y no X86PlatformPlugin, antes era viceversa y el equipo iba lentísimo, ahora va muy bien (aparentemente) Pimentel recomienda probar otras SMBios, por si la elegida no es la adecuada. Si el SSDT ha reconocido el micro y el sin ningún argumento genera el SSDT con los valores de energía, velocidad, etc. correctos se supone que estará bien generado. De todas formas, salvo por ese extraño de que debería cargar X86PlatformPlugin, todo parece ir bien. Estoy empezando a pensar seriamente en probar Clover, para ver si es más cómodo para hacer estas cosas.

 

Maniac10, me habías subido un DSDT corregido (no da un sólo error), ¿Ya tiene el parche para inyectar LPC? De todos modos si lo tuviese y se lo vuelvo a añadir no habría problema, ¿no? Tal vez sean dudas tontas, pero no sé si Maciasl y demás compiladores DSDT pueden duplicar los parches, o si ya existe el parche en el DSDT no se da ese problema.

 

 

Recibe un cordial saludo, y como siempre un millón de gracias por aguantarme y responder a mis dudas

Ya con todo esto creo que tengo suficiente para mí y adentrarme más en el tema de la activación de SpeedStep.

 

SSDT copia.aml.zip

Link to comment
Share on other sites

Ya tienes un dsdt que comprobaste que te carga AppleLPC. Por qué quieres parcharlo de nuevo?

Para usar X86PlatformPlugin debes usar la smbios que te recomendó Maniac.

El ssdt que usas está mal generado, lee el post # 15

Link to comment
Share on other sites

El DSDT que subí ya tiene el parche para LPC, y como te hemos dicho debes cambiar el smbios a algún modelo de Mac que use Ivy y generar el SSDT nuevamente con el workaround (-w 3). Una vez que hagas estos cambios sube otro DarwinDumper para verificar que este todo correcto.

Link to comment
Share on other sites

Había entendido algunas cosas mal. No me había dado cuenta de que el fichero que me subiste ya estaba listo para usar, (y tanto) y estaba un poco liado con la generación del SSDT. Ahora Al menos todo carga, el equipo se mueve rápido y el micro se ve con buena temperatura. Carga el plugin y lpc, espero que todo esté correcto. 

 

DarwinDumper_2.7.8_Chameleon_2.3_Mav_jaimealonso.zip

 

 

Saludos cordiales

Link to comment
Share on other sites

 Share

×
×
  • Create New...