Error PCI configuration begin en 10.6.8-10.7

Fallo en el arranque al llegar al mensaje [PCI configuration begin] en sistemas con macOS 10.6.8 o 10.7

Nota: si usas Snow Leopard 10.6.7 o anterior no deberías tener este fallo, lee ésto antes de actualizar

Apple ha modificado algunas cosas de la capa ACPI en la actualización 10.6.8 de Snow Leopard y en 10.7 Lion. Estas modificaciones aportan mejoras en el encendido y apagado y la gestión de energía de los Macintosh pero en muchos Hackintosh causan un fallo que se puede presentar de esta manera:

  • al arrancar en modo gráfico normal, desaparece la ruedecita que gira debajo del logo de Apple
  • al arrancar en modo -v (verbose, mostrando mensajes de texto en pantalla) no se muestran más mensajes después de la línea  [ PCI configuration begin ] aunque el ordenador puede seguir trabajando y al final mostrar el escritorio
  • al arrancar en modo -s (single user, monousuario) o -x (fail safe, a prueba de fallos) el ordenador se cuelga justo después de la línea  [ PCI configuration begin ] y el arranque se interrumpe.

Numerosos usuarios utilizan el PC sin mayores inconvenientes ya que el arranque en modo gráfico parece normal salvo por la desaparición de la ruedecita que gira y macOS parece funcionar bien. Pero cuando necesitan arrancar en modo -s o -x es cuando descubren que no pueden hacerlo.

Uno de los hilos con más seguimiento de este asunto es el de la actualización a 10.6.8 en InsanelyMac, cuyo título es «10.6.8 officially released«. También es útil el titulado «A fix for [PCI Configuration begin] bug» en el foro de netkas.

Se han propuesto varias formas de solucionarlo. En principio parece estar muy relacionado con el DSDT aunque éste haya funcionado perfectamente en las versiones anteriores de Snow Leopard. La prueba está en que si se elimina el DSDT (por ej., utilizando el método EasyBeast Install de MultiBeast) este error desaparece por completo en la mayoría de los casos. Pero sin DSDT suelen perderse algunas características relacionadas con la gestión de energía, como por ej. el reposo (sleep), y otras que mejoran mucho el sistema (USB, dispositivos bien reconocidos, etc…).

npci=0x2000 / Kexts modificadas (método obsoleto)

Este error se puede evitar de 2 formas (aparte de la comentada de trabajar sin DSDT):

  • Utilizando el modificador de arranque «npci=0x2000» (sin las comillas). Se puede hacer de forma directa en el arranque de Chameleon 2 o añadiéndolo al archivo com.apple.Boot.plist (org.chameleon.Boot.plist en las últimas versiones de Chameleon). No siempre da resultado (por ej. en mi caso este modificador no corrige el error). A otros usuarios les funciona «npci=0x3000» (sin las comillas)
  • Utilizando las extensiones AppleACPIPlatform.kextIOPCIFamily.kext de la versión 10.6.7 de Snow Leopard en lugar de las equivalentes de 10.6.8 o 10.7 Lion, el inconveniente es que esto rompe el reposo en los sistemas que lo tenían bien implementado. Esta solución sí funciona en mi PC, se vuelve a mostrar la rueda que gira y se puede arrancar con -s y con -x.

Recientemente Oleg ha modificado la extensión IOPCIFamily.kext de Snow Leopard 10.6.8 con lo que ya no sería necesario usar AppleACPIPlatform.kext junto con IOPCIFamily.kext de 10.6.7, bastaría con la versión modificada por Oleg.

Modificar DSDT (método preferente)

Se ha propuesto también un arreglo realizando una pequeña modificación en el DSDT, yo creo que fue Oleg el primero que la propuso pero no estoy seguro. Se trata de localizar el dispositivo (PCI0) y allí:

  • la línea Name (_UID... ha de quedar así: Name (_UID, Zero)
  • la línea Name (_ADR, Zero) ha de ser borrada.

La entrada Device (PCI0) quedaría así (puede ser diferente en tu PC):

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

En mi sistema este arreglo (sin ningún otro) funciona bien, soluciona el error y no se estropea el modo de reposo. Es la solución más recomendable.

AVISO: las 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.

12 comentarios en «Error PCI configuration begin en 10.6.8-10.7»

  1. Gracias, Eduardo, pero mi artículo es un recopilatorio, el mérito lo tiene/n quien/es descubre/n las causas del problema, en este caso Oleg y algunos otros.
    No he probado Mountain Lion pero ya supongo que habrá diferencias en algunas cosas, yo en mi máquina con placa P55-USB3 tampoco uso npci=0×2000 (de hecho arranca mal con ese modificador), probaré en ML a ver qué pasa.
    Y aunque el SO en nuestros Hackintosh puede ser verdaderamente un sistema X por los «misterios» que a veces vemos, no olvides que muchos de ellos no tienen lugar en los Mac «de verdad», al fin y al cabo usamos un SO modificado en un hardware en el que en teoría no se podría instalar.

  2. Hola, Miliuco, acabo de darle este enlace a un usuario de Insanely por el PCI configuration begin, desde luego tienes la mejor explicacion y solución al tema y encima en castellano, por otro lado el caso de npci=0x2000 es curioso en mi máquina, en Lion ni lo uso ya que Juanerson me retocó el DSDT en su día y me lo dejó fino, fino, pero en ML si no uso el flag me quedo sin wifi, reconoce la tarjeta, reconoce el slot en el que está pinchada pero me dice que no hay driver instalado, si ejecuto el flag en el inicio el driver (kext) vuelve a funcionar… ya se por qué le llamaron OS X (expediente X).

  3. Actualmente no tendría ninguna ventaja porque no estamos usando el DVD de Lion para instalarlo, usamos métodos que emplean una memoria USB o una partición extra en el disco duro.

    Lo que sí se hace es incluir el DSDT que tú desees en ambos métodos, lee los textos y verás cómo hacerlo, así que sí es posible usar el DSDT modificado pero no incluyéndolo directamente en el DVD de Lion.

  4. Hola, ¿sabes si es posible modificar el DVD de instalación de Lion para meterle directamente el DSDT modificado?
    Un saludo.

  5. Aaron, no dices qué equipo tienes o si usas SL o Lion.

    Si es SL, lo primero es ver si puedes arrancar el ordenador con ayuda del CD de iBoot, de tonymacx86, y con el sistema arrancado haces las modificaciones.

    Si usas Lion, iBoot no te sirve, pero sí podría servir rBoot, también de tonymacx86, que no lleva kernel incorporado y lo que intenta es arrancar el sistema que tienes instalado, sea 10.6 o 10.7.

    Si no arranca bien con rBoot entonces parece que puede haber algún problema mayor que el error PCI.

  6. Hola a todos, tengo claro los métodos de solución del problema, pero ¿cómo los pongo en práctica si no puedo iniciar el ordenador? Si se queda bloqueado ¿cómo entro en modo a prueba de emergencia o algo así para poder modificar el DSDT y reiniciar de nuevo?
    Gracias.

  7. Si te entiendo bien, puedes arrancar con hasta 8gb (4x2gb) pero al poner 10 o 12gb aparece el error ¿no? No eres el primero que tiene problemas para poner más de 8gb de RAM en el Hackintosh.

    Poco te puedo decir sobre ésto salvo la pregunta obligada: ¿has hecho en DSDT la modificación «Name (_UID, Zero)» ya comentada? Teniendo en cuenta que aún con ella es posible que no puedas usar más de 8gb de RAM.

  8. Hola a todos,
    Tengo corriendo perfectamente la versión 1.6.8 desde hace tiempo con una Nvidia GTS 250, placa Asrock X58 Extreme y 6Gb de RAM (2xGb). El problema me ha venido cuando he intentado subir la memoria a 12Gb (6x2Gb). Por cierto, todos los módulos son iguales. La placa funciona en triplechanel y tiene 6 slot para memoria.
    Con tres módulos de 2GB todo perfecto. Cuando amplío, sólo me arranca con un módulo más (en cualquiera de los slot libres). Arranca y me sale un mensaje de que la memoria se ha instalado correctamente (8Gb).
    Si le pongo uno o dos de los restantes me aparece el famoso «PCI configuration begin». No sé a qué puede deberse. He comprobado las memorias que no me acepta y están bien.
    ¿Alguna idea?

  9. Posiblemente es por el modelo de placa base. La solución que empleas puede servir bien, esas 2 extensiones modificadas por nawcom evitan tener que cambiar alguna de las originales de Apple en /S/L/E.

    La única pega es que el modo de reposo no suele funcionar.

    En mi caso npci tampoco soluciona este fallo.

  10. En mi caso el único método que funciona es el de utilizar en /E/E EvilAppleACPIPlatform.kext y EvilIOPCIFamily.kext.
    Agregar npci como parámetro de booteo o hacer la modificación en el DSDT de UID o ADR lamentablemente no me hace salir del problema.
    Mi motherboard es un Asus P5LD2-VM SE.

    Karina

  11. Adrián, es un tema que se escapa por completo de este artículo en el que se da por sentado una serie de cosas como que el usuario sabe instalar extensiones (kexts), reparar permisos, editar el DSDT, etc.

    Por si te ayuda en algo, de forma resumida te diré que la forma más sencilla de hacerlo es con el programa DSDTEditor que se obtiene en el hilo titulado «DSDT editor and patcher», iniciado por oldnapalm en InsanelyMac:

    – arrancas DSDTEditor
    – menú Open y abres tu DSDT.aml que debería estar en Extra
    – en la ventana de la izda. buscas «Device PCI0» dentro de la sección «Scope _SB»
    – en la ventana de la dcha, modificas lo necesario según las instrucciones del artículo
    – la principal es dejar esta línea así: Name (_UID, Zero)
    – la otra es borrar la línea Name (_ADR, Zero)
    – menú IASL y Compile y ves si hay errores (si los hay pulsas Fix Errors)
    – menú IASL y Save AML As y guardas el DSDT.aml nuevo en el escritorio, después has de cambiarlo por el que tienes en /Extra y reiniciar el PC.

    Como medida de seguridad, guarda el DSDT.aml actual en algún sitio por si acaso.

Los comentarios están cerrados.