OpenCore 0.6.3: nueva sección Memory

En Opencore (OC) 0.6.3, todavía en fase beta, se ha introducido un cambio en el archivo SampleCustom.plist, se ha añadido una nueva sección Memory dentro de PlatformInfo, en ella se describen una serie de parámetros de la memoria RAM tal como están definidos en la especificación SMBIOS.

Nota: artículo importante solamente para aquellos casos en que la memoria tiene errores en SMBIOS y es conveniente definir sus parámetros manualmente. La mayoría de los usuarios parten del archivo Sample.plist (en vez del archivo SampleCustom.plist) y en él está ausente la sección Memory y para ellos este artículo no es necesario. La diferencia está en la nueva clave CustomMemory que, si está en true, requiere rellenar la sección Memory pero, si está en false, permite omitir completamente esa sección.

Cambios en config.plist de OC 0.6.3

OC 0.6.3 presenta cambios significativos en sus características de funcionamiento, varios de ellos dirigidos a mejorar su integración con Big Sur. También presenta cambios en la estructura de SampleCustom.plist. Todos estos cambios están dentro de PlatformInfo.

  • Eliminada la clave SMBIOS – MemoryFormFactor
  • Añadida una clave nueva de tipo booleano llamada CustomMemory
  • Añadida una clave nueva llamada PlatformNVRAM con 5 subclaves: BID, FirmwareFeatures, FirmwareMask, MLB y ROM, algunas de estas claves continúan presentes en la sección SMBIOS
  • Añadida una clave nueva llamada Memory con varias subclaves relacionadas con la memoria RAM:
    • DataWidth: ancho de banda en bits del bus, suele tener el valor de 64
    • ErrorConnection: método primario de detección o corrección de errores (ninguno, paridad, ECC…)
    • FormFactor: el tipo de módulo empleado (DIMM, SODIMM…)
    • MaxCapacity: capacidad máxima de memoria, en bytes, soportada por la placa base
    • TotalWidth: valor total del ancho del bus, en bits, incluidos los canales de corrección de errores si los hay; si no existen, el valor de TotalWidth es idéntico a DataWidth
    • Type: tipo de memoria (DDR3, DDR4…)
    • TypeDetail: información adicional sobre la memoria (Synchronous, Buffered, Unbuffered…)
    • Devices: en esta sección se describen los bancos de memoria, ocupados o no, y se especifican características de cada uno de ellos.
      • AssetTag: etiqueta de propiedad del módulo de memoria
      • BankLocator: nombre del banco de memoria en que se aloja el módulo
      • DeviceLocator: descripción de la posición del banco en la placa base
      • Manufacturer: fabricante de la memoria
      • PartNumber: código correspondiente al modelo de memoria
      • SerialNumber: número de serie de cada módulo
      • Size: tamaño en MB, 0 indica que está vacío
      • Speed: velocidad máxima de la memoria en MT/s (megatransfers por segundo).

¿Cómo saber las características de la memoria?

En el mundo Linux existe desde hace tiempo una herramienta llamada dmidecode que proporciona información sobre el hardware tal como está descrito en la BIOS según el estándar SMBIOS / DMI. Acidanthera tiene una versión específica para macOS, la versión actual es 3.2c (dmidecode-mac-3.2c.zip). Se descarga como un archivo ejecutable dmidecode que conviene copiar a la carpeta / usr / local / bin para que esté accesible en la variable PATH. Con esta herramienta obtenemos información de los parámetros SMBIOS del ordenador a través de I/O Registry. En este caso nos interesa la sección de la memoria, en concreto lo relativo a los 4 dispositivos (slots) de memoria. Para ello empleamos dmidecode con el modificador -t memory. Este código, por ejemplo, es de mi PC (se muestran solamente los datos del primer banco de memoria):

> dmidecode -t memory
# dmidecode 3.2c
Scanning I/O Registry for entry point.
SMBIOS 3.2 present.

Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 0 kB
	Error Information Handle: No Error
	Number Of Devices: 4

Memory Device
	Array Handle: 0x009D
	Error Information Handle: No Error
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8 GB
	Form Factor: DIMM
	Locator: ChannelA-DIMM0
	Bank Locator: BANK 0
	Type: DDR4
	Type Detail: Synchronous
	Speed: 3200 MT/s
	Manufacturer: Corsair
	Serial Number: 200400138487908
	Asset Tag: 9876543210
	Part Number: CMK16GX4M2B3200C16
	
(sigue con la descripción de los otros 3 bancos de memoria).

Con dmidecode podemos averiguar algunos de los datos que hay que escribir en config.plist: DataWidth, ErrorConnection, FormFactor, TotalWidth, Type, TypeDetail, BankLocator, DeviceLocator, Speed, PartNumber, AssetTag y Manufacturer. El valor de MaxCapacity lo especifica el fabricante de la placa base. SerialNumber se puede ver en la etiqueta adherida a cada módulo de memoria.

Rellenar los datos de config.plist

Con los datos obtenidos desde dmidecode, las especificaciones de la placa base y la etiqueta de los módulos de memoria, se pueden rellenar correctamente los campos de config.plist. Estos serían los datos de mi sistema, has de cambiarlos por los tuyos si son diferentes.

  • DataWidth: 64 (muchas de las memorias RAM actuales son de 64 bits)
  • ErrorCorrection: 3 (ninguno)
  • FormFactor: 9 (DIMM)
  • MaxCapacity: 128 GB (137438953472 bytes)
  • TotalWidth: 64 (coincide con DataWidth)
  • Type: 26 (DDR4)
  • TypeDetail: 128 (Synchronous, bit 7)
  • AssetTag: 9876543210 (dmidecode)
  • BankLocator: BANK 0 /BANK 1 / BANK 2 / BANK 3
  • DeviceLocator: ChannelA-DIMM0 / ChannelA-DIMM1 / ChannelB-DIMM0 / ChannelB-DIMM
  • Manufacturer: Corsair
  • PartNumber: CMK16GX4M2B3200C16 (etiqueta del fabricante)
  • SerialNumber: 200400138487908 (etiqueta del fabricante)
  • Size: 8 Gb por módulo (8000 MB)
  • Speed: 3200 MT/s.

Nota: en OpenCore Reference Manual (0.6.3) [2020.10.24] están los valores que puedes emplear en estas claves.

10 respuestas a «OpenCore 0.6.3: nueva sección Memory»

  1. Hola, muy buenas de nuevo!!

    Escribí hace unos días sólo para saludar y ahora me gustaría que me echaras un cable si puedes, para terminar de configurar mi carpeta EFI para este equipo, creo que solo me faltan los USBs de la placa y la nvram.
    No tengo mucha idea pero algo me voy defendiendo, o eso creo, fuí siguiendo la guía Getting started with OpenCore y un vídeo que vi sobre la configuración del i9 en cuanto a los SSDT pero yo creo que es imposible que la tenga toda bien. Muchas gracias!!

    Te dejo el enlace de mi carpeta efi:

    https://mega.nz/file/QCp2yQ4I#mDPb2TlsPYyQTkAP0pRXyi3prHDeNQcE2kmfRnTkfyo

    Intel i9 9900k 3,6 Ghz
    GigaByte Z390 Aorus Pro
    Sapphire Pulse Radeon RX 580 8GB GDDR5
    M.2 WD-SN750 1 TB
    Kingston HyperX Fury Black DDR4 3200Mhz 4x32GB CL16
    Corsair RM750X V2 750W 80 Plus Gold
    NZXT Kraken X73 Refrigeración

    1. Hola, Ricardo, ya he visto tu carpeta EFI.

      Para los USB has de probar la extensión USBMap.kext (ver enlace al final) que está hecha por el usuario AudioGod para una placa como la tuya, la pones junto a las demás kexts en Other, está diseñada para SMBIOS de iMac19,1. Quitando por supuesto USBInjectAll.kext y desmarcando la opción XhciPortLimit en config.plist.

      Para NVRAM, con el archivo SSDT-PMC.aml ha de ser suficiente, no sé por qué no funciona, por si acaso, si en el pasado has usado NVRAM emulada con Clover, borra los restos que puedan quedar de los scripts que ahora no hacen falta. Hay que borrar estos archivos (algunos pueden no existir en tu sistema):
      /Volumes/EFI/EFI/CLOVER/drivers/UEFI/EmuVariableUefi-64.efi
      /Volumes/EFI/nvram.plist
      /etc/rc.clover.lib
      /etc/rc.boot.d/10.save_and_rotate_boot_log.local
      /etc/rc.boot.d/20.mount_ESP.local
      /etc/rc.boot.d/70.disable_sleep_proxy_client.local.disabled
      /etc/rc.shutdown.d/80.save_nvram_plist.local

      En caso de duda, aquí tienes un artículo ideal para tu placa base:
      AudioGod’s Aorus Z390 Pro Patched DSDT Mini Guide and Discussion

      Descarga tu archivo desde aquí.

  2. Hola!
    Muchas gracias por contestar, pol, pues la verdad es que estoy en un mar de dudas, porque me bajé la EFI de ese articulo de Audiogods, pero por lo que veo tengo bastantes errores y no controlo mucho para subsanarlos sabiendo lo que hago, lo bueno es que es la misma placa y procesador y aunque él tiene una gráfica vega, dice que esa configuración tb sirve para la mía.
    Aún no tengo el equipo completo, lo termino de comprar estos días, pero así ya voy adelantando todo lo relacionado a la instalación, entonces lo que voy hacer es copiar la EFI literalmente y probar a ver si me sirve, porque otras opciones me es muy complicado entenderlas, como por ejemplo lo que me dices de que el archivo SSDT-PMC.aml no me funciona, ni idea de cómo se mira, aunque claro te agradezco que me des la solución.
    Por cierto, la carpeta la estoy creando desde un MacBook Air, o sea, que estoy haciendo todo desde un mac original, no tengo ni Clover ni nada anterior.
    Saludos y muchas gracias, pol 🙂

    1. Empiezo por el final. No entiendo bien lo del Macbook Air. Estás creando la carpeta EFI en él? Eso no es problema, el ordenador en el que se crea la carpeta EFI es indiferente pero esa EFI ha de tener OpenCore o Clover, uno de los 2 boot-loaders, sin ese requisito no puede arrancar en un hackintosh. Una vez que tienes la EFI en el Air, has de llevarla al USB de instalación o al disco del hackintosh, y copiarla tal cual en la partición EFI (del USB o del disco). Esto seguro que ya lo sabes.
      De la NVRAM: Poco tienes que hacer aparte de copiar SSDT-PMC.aml a la carpeta de los SSDT de Clover o de OC. Y si en ese disco has usado Clover antes, borrar los archivos que te puse en el mensaje anterior, esos archivos son para usar NVRAM emulada, no nativa como pasa con ese SSDT. Por supuesto que si instalas Clover de nuevas con SSDT-PMC.aml NO has de elegir ninguna de las opciones de scripts de arranque.
      Cómo probar NVRAM nativa? Sencillo. En terminal puedes ver las claves NVRAM con el comando nvram -p. Puedes crear una nueva que puedes llamar ricardo o como quieras y darle el valor que desees, por ejemplo con el comando sudo nvram fakesmc-ricardo=yo creas la clave fakesmc-ricardo cuyo valor es yo. Reinicias. Vuelves al comando nvram -p y, si ves fakesmc-ricardo yo en la lista de claves, tienes NVRAM nativa.
      Respecto a la gráfica, entre la Vega y la RX 580 sólo hay diferencia en los boot-args, con RX no hace falta ninguno y con Vega hay que usar agdpmod=pikera, si Audiogod lo tiene en su config.plist, quítalo que te dará error.

  3. Muchísimas gracias por la ayuda, en serio, no sabes lo que significa para mi.
    Vale, sí, lo del primer párrafo sin problema, llevo un rato volviendo a mirar las guías de Audiogod y glasgood y creo que lo tengo casi todo preparado.
    Pero de todas maneras lo voy a dejar para mañana para hacerlo tranquilamente durante el día, y por último supongo que la comprobación de la nvram lo tenga que hacer una vez instalado macOS en el hackintosh.
    Muchas gracias de nuevo, te agradezco en el alma toda la ayuda.

    1. La comprobación de NVRAM por supuesto hay que hacerla con macOS ya instalado. Cuando lo tengas en marcha, me comentas si va todo bien.

  4. Hola de nuevo, pol.
    Vale, lo de la NVRAM cuando tenga todo ya te comento.
    Llevo un rato configurando otra vez desde 0 el pendrive y estoy atascado en el apartado de configurar el SSDT-PLUG.aml, más que atascado, no me queda claro lo que tengo que hacer exactamente, me refiero, en el vídeo que estoy viendo, donde copia el código de OpenCorePkg / Docs / AcpiSamples / SSDT-PLUG.dsl en GitHub, para crear el archivo y después guardarlo compilado, ese código no tiene nada que ver con el que tiene Audiogod en su EFI / OC / ACPI de su sistema, y leyendo en OpenCore Install Guide resulta que, para los procesadores Coffe Lake, no hace falta este SSDT.-PLUG.aml. Un lío, vamos…
    Espero haberme explicado bien.
    Muchas gracias, te mando lo que pone en los archivos.
    shorturl.at/jlIQW

    1. Este mensaje no lo había visto, se me había pasado.
      No hagas mucho caso a lo que has leído sobre SSDT.PLUG, en las guías de Opencore en Dortania también pone «SSDT-PLUG: Allows for native CPU power management on Haswell and newer», es decir que en Coffee Lake también es útil.
      Te has complicado con este archivo, su función es aplicar un parche sobre el primer núcleo del micro para que el procesador esté bien reconocido a nivel de la gestión de la energía. En vez de cogerlo en formato DSL, cógelo en formato AML ya compilado y lo colocas tal cual en la carpeta de los SSDT, no te molestes en modificarlo, tal cual.
      Descárgalo desde aquí
      https://github.com/dortania/Getting-Started-With-ACPI/raw/master/extra-files/compiled/SSDT-PLUG-DRTNIA.aml
      Aunque se llame SSDT-PLUG-DRTNIA no hagas caso, es el mismo, pero tampoco le cambies el nombre porque ha de coincidir con el nombre interno. Este está hecho por los autores de OpenCore.
      Aunque Audiogod lo tenga diferente, por ahora no te preocupes, usa este junto con los otros SSDT.
      En Coffee Lake necesitas estos SSDT: SSDT-PLUG, SSDT-EC-USBX, SSDT-AWAC (puede no ser necesario, lo puedes saber así), SSDT-PMC (nvram nativa) y los que sean específicos de tu placa base.

  5. Hola de nuevo.
    Acabo de encontrar que Audiogod en su artículo modifica SSDT-Plug y SSDT-PMC para la última versión de Bios con nombre F12K, pero lo está haciendo en Catalina y dejándolo preparado para Big Sur.
    Una cosa que no te escribí es que el hackintosh lo quiero para audio, así que mi intención es quedarme en Mojave, y no sé si esa configuración me sirve también a mi para la 10.14.6.
    Muchas gracias.

    1. Yo creo que sirva igual para Mojave y Catalina, no veo diferencias significativas entre ambos sistemas para que la EFI de Catalina no vaya bien en Mojave.

Deja una respuesta

(La dirección de email no es necesaria)