Me gustaría deshabilitar la GPU NVidia GTX 750M en mi MacBook Pro 15" (Retina, mediados de 2014, Mac OS X 10.10 Yosemite). Sé que puedo usar GfxCardStatus pero leí que podría tener una solución más permanente cambiando algunos EFI bandera.
Mi pregunta es:
¿Cómo puedo deshabilitar la GPU discreta de EFI?
Supongo que esto es persistente en múltiples reinicios. También me gustaría saber cómo deshacerlo si es necesario.
Actualizar:
La pregunta es básicamente si el comando mencionado en el comentario de problema de GfxCardStatus github aquí es correcto o no, y cómo deshacerlo si no funciona.
.
Una respuesta a esto por sí sola es una respuesta correcta, pero sería genial si también pudieras decirme:
Si fuerza los gráficos integrados en GfxCardStatus, Mac OS X (hasta Yosemite al menos) no le permite usar múltiples monitores (aunque el Iris Pro incorporado puede hacerlo).
Si desactivo la GPU discreta de EFI, ¿macOS pensará que la GPU integrada es la que está instalada y me permitirá usar varios monitores con ella?
Escuché que la misma configuración de EFI es responsable de ni siquiera mostrar la GPU integrada a otros sistemas operativos que no sean macOS y tienes que engañarlo de alguna manera para pensar que es macOS.
¿Es eso cierto? Y si es así, ¿cómo hacer eso?
Puede deshabilitar permanentemente la tarjeta gráfica discreta siguiendo los siguientes pasos:
El procedimiento descrito en los pasos 1-3 me funcionó hasta macOS Sierra, pero con la actualización a High Sierra, comencé a ver una pantalla rosada/rojiza y no pude ingresar al modo de recuperación para repetir el paso 3 como tenía que hacer en actualizaciones anteriores. Buscando en Internet, entré en este problema de GitHub explicando que es posible que pueda reemplazar los pasos 1 y 2 con el siguiente comando, que puede ejecutar en modo de usuario único (arranque presionando cmd+ s):
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
1.1 Descargar ArchLinux ISO
1.2 Creando el USB booteable con el .iso
Abra /Aplicaciones/Utilidades/Terminal en MacOS y enumere todos los dispositivos de almacenamiento:
diskutil list
Su dispositivo USB aparecerá como algo así como /dev/disk2 (external, physical)
. Verifique que este es el dispositivo que desea borrar al verificar su nombre y tamaño y luego use su identificador para los comandos a continuación en lugar de /dev/diskX
.
Un dispositivo USB normalmente se monta automáticamente en macOS, y debe desmontarlo (no expulsarlo) antes de bloquearlo con dd:
diskutil unmountDisk /dev/diskX
Ahora copie el archivo de imagen ISO al dispositivo. El comando dd es similar a su contraparte de Linux, pero observe la 'r' antes de 'disco' para el modo sin formato, lo que hace que la transferencia sea mucho más rápida:
sudo dd if=path/to/arch.iso of=/dev/rdiskX bs=1m
Una vez finalizado, macOS puede quejarse de que "esta computadora no puede leer el disco que insertó". Seleccione 'Expulsar'. El dispositivo USB será de arranque.
2.1 Arrancarlo
nomodeset
al final de esta línea y presione Entrar.2.2 Borrar variables EFI existentes
¡Parece que el sistema de archivos efivarfs está montado de forma predeterminada! Entonces ya puede cd /sys/firmware/efi/efivars
explorar ls
este directorio y ver si hay una gpu-power-prefs-...
variable (donde ... es el UUID de esta variable).
Si existe tal variable, es mejor eliminarla con rm.
rm gpu-power-prefs-…
Si recibe el mensaje "operación no permitida" mientras intenta rm
, significa que efivarfs se ha montado como de solo lectura y necesita volver a montarlo con permisos de lectura y escritura e intentarlo de nuevo:
cd /
umount /sys/firmware/efi/efivars/
mount -t efivarfs rw /sys/firmware/efi/efivars/
cd /sys/firmware/efi/efivars/
rm gpu-power-prefs-…
Si esto también falla (todavía no puede borrar el archivo), use chattr
el comando para deshabilitar la inmutabilidad del archivo y luego borre el archivo:
chattr -i "gpu-power-prefs-…”
rm gpu-power-prefs-…
2.3 Crear un nuevo archivo gpu-power-prefs-…
printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
2.4 Agregar inmutabilidad al archivo gpu-power-prefs-…
Se supone que este chattr
comando bloquea un archivo para que solo sea accesible por "superusuario", y para que, durante el arranque, su EFI no tenga posibilidad de arruinar su variable gpu-power-prefs-... bajo ninguna circunstancia.
chattr +i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9"
2.5 Desmontar efivars y reiniciar
Cambie al directorio raíz para desmontar efivars:
cd /
umount /sys/firmware/efi/efivars/
Garantiza que sus variables EFI se vacían en el sistema de archivos efivarfs. Desmóntelo de forma segura antes de reiniciar.
reboot
Nota : es posible que deba hacer esto cada vez que actualice su sistema operativo, ya que normalmente regenera estos kexts. Es posible que desee marcar esta respuesta como favorita como referencia para que sea accesible desde otro dispositivo cuando la necesite.
Después de deshabilitar la dGPU usando Arch, el arranque normal se colgaría a la mitad, pero el arranque seguro funcionará.
3.1 Mover archivos kext de AMD/NVIDIA a un directorio de respaldo
Elimine todos los archivos kext de AMD (o NVIDIA, según su tarjeta) en la Terminal en la Consola de recuperación. Intentar eliminarlos en el modo de usuario único solo genera errores de sandbox, ¡así que no lo hagas en el modo de usuario único! (el que arrancas con cmd+ s).
Inicie Terminal (Estos comandos son para AMD. Si tiene NVIDIA, cambie en consecuencia)
diskutil cs list
(busque el UUID del volumen lógico: último elemento)
diskutil coreStorage unlockVolume UUID
(UUID: del comando anterior)
cd /Volumes/Macintosh\ HD
mkdir AMD_Kexts
mv System/Library/Extensions/AMD*.* AMD_Kexts/
reboot
Encontré el procedimiento en este enlace , donde se puede leer la atribución de las diferentes secciones y un hilo de discusión sobre el tema.
Lo probé yo mismo en una MacBook Pro de principios de 2011 con una tarjeta gráfica discreta defectuosa, que no pudo arrancar incluso con el truco del sobrecalentamiento, ¡y terminé con una computadora completamente funcional!
diskutil cs list
, regresa No CoreStorage logical volume groups found
. La GPU discreta permanece habilitada. ¿Alguna idea?diskutil
comandos y logré eliminar los archivos de AMD. Desafortunadamente, la gpu discreta todavía se usa...chattr -i
el archivo (si no, no puedo rm
), pero no puedo recrear el archivo. ¿Debo chattr -i
el directorio contenedor? (No se menciona en los pasos anteriores)chattr -i .
, dice: "chattr: ioctl inapropiado para el dispositivo al leer indicadores en". -- Usar la ruta absoluta tampoco funciona. FYI, el archivo se crea, pero el tamaño es 0./System/Library/Caches/com.apple.kext.caches
, luego reconstruí los cachés con touch /System/Library/Extensions
. Con SIP deshabilitado y siguiendo las instrucciones en pantalla para montar /
como lectura y escritura, pude hacer todo desde el modo de usuario único: mover archivos kext y configurar la gpu-power-prefs
variable nvram. Muchas gracias por este método, deshabilitó con éxito dGPU en los arranques, sin problemas con el sueño, el brillo, etc. MacBook Pro (Retina, mediados de 2012); 10.12.6Estoy totalmente de acuerdo con su deseo de "ahorrar batería y reducir el calor, sin pagar el costo del ruido" de usar la tarjeta gráfica discreta dentro de una MacBook Pro.
Antes de hacer algo que deshabilite su pantalla, asegúrese de poder iniciar sesión en su MacBook Pro usando SSH para que pueda deshacer su trabajo manual. Si bien el uso compartido de pantalla con todas las tarjetas gráficas desactivadas probablemente funcionará con alguna resolución predeterminada, no apostaría mi computadora a ello.
¿Qué sucederá si desactivo de forma permanente la tarjeta gráfica discreta nVidia de EFI? ¿Mac OS pensará que la GPU integrada es la que está instalada y me permitirá usar varios monitores con ella?
Perderá la capacidad de usar un monitor externo (en cualquier sistema operativo). Los puertos de gráficos externos están conectados al chip de gráficos discretos.
Mi propia MacBook Pro 2011 funciona a 60 grados estables incluso bajo carga con un ruido de ventilador mínimo cuando uso los gráficos integrados de Intel y se dispara a los ventiladores completos (en el rango de 4000 a 6000 RPM) cuando está bajo carga con el discreto 6750. El problema es real. Yo también quería poder usar solo los gráficos integrados y manejar un monitor externo.
De ninguna manera, de ninguna manera.
¿Es cierto que el mismo EFI ni siquiera muestra la GPU integrada a otros sistemas operativos que no sean Mac OS y tienes que engañarlo de alguna manera para pensar que es Mac OS?
Sí, es verdad. El EFI de la MacBook Pro 11,3 apaga la GPU Intel si arranca cualquier cosa que no sea Mac OS X. Tiene cuatro opciones si desea utilizar el chip Intel integrado en un sistema operativo alternativo:
- REFInd versión 0.10.0 o superior (recomendado): http://www.rodsbooks.com/refind
Las versiones recientes de rEFInd tienen incorporado el truco "apple_set_os". Puede habilitarlo configurando la opción spoof_osx_version en su refind.conf.
apple_set_os.efi: https://github.com/0xbb/apple_set_os.efi
un GRUB parcheado: https://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html https://wiki.archlinux.org/index.php/MacBookPro11,x#Getting_the_integrated_intel_card_to_work_on_11.2C3
un Kernel parcheado: https://www.marc.info/?l=grub-deavel&m=141586614924917&w=2
Tenga cuidado de planificar con anticipación. Si no se prepara, se enfrentará a una tarjeta gráfica integrada apagada y una pantalla en negro. Por supuesto, siempre puede regresar y arrancar Mac OS X y comenzar de nuevo.
La más simple de las opciones anteriores sería la número dos: reemplazar Apple EFI. Desafortunadamente, es el que podría dejarlo incapaz de iniciar en el futuro. A Apple no le gusta que la gente juegue con EFI y se reserva el derecho de bloquear su dispositivo por hacerlo. Si tenía Apple Care y todavía estaba en el período de garantía, es posible que encuentre un hombro en algún lugar para llorar. Podrían. Cuando cambia EFI, también asume riesgos de seguridad , es decir, puede facilitar el pirateo de su máquina. Debe poder actualizar a la última EFI que eliminaría su parche.
La opción uno, rEFInd se coloca entre el arranque y EFI, lo que deja un margen considerable para que algo salga mal y para que usted se quede con un ladrillo y un camino largo y difícil de regreso a una computadora que funcione. ¿Qué tan serios son estos problemas? Muchos propietarios de MacBook Pro han perdido su disco duro para REFInd:
Numerosos informes de errores de rEFIt indican problemas de corrupción de disco en discos de más de 500 GiB.... Le recomiendo enfáticamente que no escriba
sudo bless --info
para verificar el estado de su instalación si tiene dicho disco, o incluso si sospecha que podría tener dicho disco. . (He visto discos de formato avanzado tan pequeños como 320 GB).
La opción tres es relativamente fácil. La aplicación de parches a grub es un proceso con el que cualquier antiguo propietario de Hackintosh está bastante familiarizado. Patching Grub funciona y se puede deshacer fácilmente ya que los cambios no se realizan a nivel de firmware. Si parchea grub de forma conservadora, el código grub adicional solo se habilita manteniendo presionada la opción/alt en el arranque .
Si prefiere usar su computadora en lugar de repararla, el gfxCardStatus de Cody Krieger en su configuración lista para usar se ve cada vez más atractivo. Si realmente quiere forzar a gfxCardStatus para que se ejecute al inicio, el Sr. Krieger ha participado en una conversación esclarecedora , que ha llevado a switchGPU. switchGPU preestablece gfxCardStatus en gráficos discretos o integrados lo suficientemente pronto como para que pueda ejecutar gráficos integrados cuando su GPU discreta se sobrecalentaría y fallaría. gfxCardStatus sigue funcionando con normalidad (es decir, puede volver a GPU discreta después del arranque utilizando el elemento de menú gfxCardStatus). No hay razón para instalar switchGPU a menos que tenga problemas serios de hardwarecon su GPU discreta, lo que significa que debe mantenerla apagada todo el tiempo.
Pensándolo bien, mi propia situación con el AMD 6750 integrado es lo suficientemente mala (tan caliente y ruidosa incluso después del repasado térmico) que aprovecharé el programa de reparación de garantía extendida de Apple para MacBook Pro 2011 con gráficos AMD. Marco Arment probablemente tenía razón al cambiar su MBP de 2,2 GHz de 2011 con 6750 por la versión de 2,0 GHz con 6490 . Si bien consideré hacer lo mismo en ese momento, habría tenido que enviar mi MBP al extranjero para cambiarlo. Lamentablemente, los MacBook Pro Retina parecen seguir sufriendo los mismos problemas de calor y ruido . El MacBook Pro 2013 de mi novia con solo gráficos integrados se comporta mucho mejor.
Por problemas de calor y ruido con estaciones de trabajo MBP de cuatro núcleos, me rendí y compré dos Mac Pro (2006 y 2009), actualicé las CPU a ocho núcleos y seis núcleos respectivamente. El 2006 con Apple AMD 5870 instalado es casi silencioso (mucho más silencioso que el 2009) y realiza múltiples tareas mejor que el MBP 15". Las dos torres plateadas (hogar y oficina) cuestan menos combinadas que una sola MacBook Pro nueva. Por ahora estoy ejecutando el MBP 2011 de 15 "en gráficos integrados solo como transporte (sin monitor externo).
Esta solución apunta al modelo Retina MBP 15" 2014. Mi propio interés en deshabilitar la GPU discreta fue para un modelo MBP 17" 2011. Como una pieza importante de software para mí requería Mojave, recientemente revisé la desactivación de la GPU discreta. gfxCardStatus no funciona en Mojave (mostrará información pero no deshabilitará de manera confiable la GPU discreta).
La configuración de una variable NVRAM funcionó ( nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
). Una variable de NVRAM también habilitó el modo de cubierta abierta en un MBP de 16" que tengo aquí para probar. Establecer una variable de NVRAM parece ser la forma mejor y más segura de resolver problemas serios de tarjetas gráficas en MacBooks.
La solución NVRAM completa para la familia MBP 2011 fue cuidadosamente investigada y documentada por Luis Puerto . He ejecutado con éxito esta solución. En caso de que el sitio de Luis no funcione, hay una publicación similar pero con más palabras en AskDifferent .
Su procedimiento planificado es posible. Su procedimiento planificado no es tan difícil. Su procedimiento planificado no es la mejor opción.
Por qué esta ruta es subóptima
Los MacBook Pro tendrán que cambiar a GPU discreta (dGPU) una vez que se conecte una pantalla externa. Por lo tanto, una dGPU instalada pero deshabilitada elimina la opción de usar un monitor externo con esa dGPU.
Ahora hay otras opciones, como usar soluciones USB o GPU externas (eGPU). Pero configurar la variable EFI que está buscando definitivamente deshabilitará la salida directa con un cable desde el puerto Thunderbolt a un monitor externo.
¿Cómo puede deshabilitar la GPU discreta de EFI?
El comando que mencionaste en tu actualización es casi correcto. Simplemente pierde el identificador adecuado:
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
Esto escribe la variable EFI correspondiente en la NVRAM y obliga a la MacBook Pro a arrancar siempre directamente en la GPU integrada (iGPU). El identificador no es solo para las dGPU de AMD, sino para todas las dGPU. Se confirma que esto funciona con chips NVidia por igual. También es fácilmente reversible con un reinicio de NVRAM.
Desventajas de esta estrategia en esta situación
Y ahora la desventaja: hay potencialmente dos pequeños problemas con esto:
Después de forzar esta configuración de NVRAM, macOS podría "confundirse un poco". El chip sigue ahí, cableado y alimentado.
Para que esto arranque, es posible que deba deshabilitar los controladores de gráficos para su dGPU. O al menos el kext que gestiona el cambio de gráficos real. De lo contrario, el arranque podría bloquearse al intentar iniciar el cambio de GPU.
Ambos problemas recién surgidos se pueden solucionar moviendo todos los kexts de NVidia /System/Library/Extensions
a un lugar de respaldo seguro. Esto iniciará la máquina en modo iGPU acelerado. Pero establecer una variable EFI podría no ser suficiente para obtener una administración de energía sensata. Para eso, es probable que tengas que retroceder los kexts de NVidia, excepto los responsables del cambio de gráficos. Si no lo hace, dará lugar a una potencia innecesariamente alta en la dGPU. Al menos estará inactivo a "máxima potencia" (traducido a >~60°C).
Esta inactividad de alta potencia será potencialmente la gran derrota de su plan para reducir el ruido del ventilador y aumentar la batería. Nota al margen de la literatura: debería ser una verdad reconocida universalmente que mover kexts también requiere que desactive SIP en las versiones más nuevas de OS X/macOS siempre que mueva cosas como esta.
Estrategia general para encontrar los kexts con los que experimentar: arranque sin la variable NVRAM en un sistema de stock (con kexts de NVidia 'predeterminados'). Luego tome nota de las extensiones con las que realmente se carga su sistema kextstat
. Luego, reinicie con los kexts de NVidia/Geforce previamente cargados y el hack habilitado. Obtenga un monitor de sensor detallado (iStatMenus, TGPro, etc.) y observe la temperatura en y alrededor de la GPU. Ahora cargue uno tras otro los kexts relevantes de nuevo en el kernel con sudo kextload /path-to/NVDA***.kext
. Espere uno o dos minutos después de cada uno.
Dado que el método de esta publicación, o la forma igualmente válida pero larga: manipular EFIvars en Linux, es NVRAM, se revertirá limpiamente si reinicia SMC/NVRAM. Que la piratería de NVRAM es en realidad la única parte de esta publicación que seguramente no le causará muchos problemas.
Al hacer este restablecimiento de NVRAM, se restaura un conjunto mínimo de configuraciones de fábrica a las variables EFI/NVRAM. Esa configuración de fábrica no se modificará.
Esto se puede hacer con la frecuencia que desee.
En Linux, el sistema de controladores está mucho mejor documentado y, en mi humilde opinión, se implementa más limpio. Hay muchas maneras de lograr esto con o iniciando Linux. Y un Linux (ya sea respetando esta configuración de NVRAM/EFIvars oa través de otros métodos) le dará muchos menos problemas con los controladores (¿Quién lo hubiera pensado?). Para otros sistemas operativos, como Microsoft Windows, no tengo datos.
Para repetir: que el sistema operativo no reconozca correctamente la dGPU no significa que esté apagada. Eso podría conducir a efectos secundarios térmicos no deseados.
Eche un vistazo a esta guía para MacBook Pros 2011 para una solución similar y un poco más de opciones; también para deshacer y rehacer rápidamente el hack NVRAM.
Múltiples monitores y una dGPU deshabilitada
Habiendo dicho eso, todo: gfxCardStatus (o probar diferentes versiones del original, tienen diferentes opciones/capacidades...) es, en mi humilde opinión, la mejor opción si no tiene problemas reales de hardware con los que lidiar. Es mucho más flexible y aún puede volver a dGPU o monitores externos con bastante facilidad dentro de un sistema en ejecución.
Ya sea a través de EFI/NVRAM o con gfxCardStatus: obligar a una Mac con gráficos intercambiables a solo integrada deshabilitará los modos de visualización externa utilizando la salida de gráficos DisplayPort o Thunderbolt integrada. Esta es una consecuencia del diseño del hardware que enruta la señal de visualización para monitores externos a través de la dGPU. El uso de adaptadores de gráficos no discretos sino externos podría ser una solución para esa limitación.
La configuración de EFI para habilitar la integración en otros sistemas operativos
Como ya debería estar claro, la configuración de EFI para permitir que otros sistemas operativos como Linux "vean" una configuración de gráficos intercambiables es diferente de la anterior que deshabilita la dGPU. Pequeño programa EFI para desbloquear Intel IGD en Macbook Pro 11,3 para Linux y Windows:
Pequeño programa EFI para desbloquear Intel IGD en Macbook Pro 11,3 para Linux y Windows. Se ha diseñado para que se cargue fácilmente en cadena mediante un cargador de arranque EFI no modificado como Grub, rEFInd, etc.
El EFI del modelo Macbook Pro 11,3 está apagando la GPU Intel si arranca cualquier cosa que no sea Mac OS X. Por lo tanto, se requiere un pequeño truco al falsificar la identificación del sistema operativo para que todo el hardware sea accesible.
Todos los créditos pertenecen a Andreas Heider, quien originalmente descubrió este truco: https://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html
nvram
comando con su cadena que evoca a satanás debe darse cada vez que algo haya manipulado la configuración interna, lo que hace que su pantalla permanezca en blanco. Esto ya me ha sucedido tres veces, al hacer clic inocentemente en la información Acerca de esta Mac , al deshabilitar el cambio automático de la tarjeta de video en la configuración y al usar alguna herramienta compatible con OpenGL. Acceder en modo seguro y dar el comando me devolvió la mac (y mi sueño también).Respuesta tardía a una de sus preguntas secundarias: probablemente necesite la GPU discreta habilitada para usar una pantalla externa. La razón por la que debería estar en cómo se conectan las GPU y las salidas de video.
(Estoy medio suponiendo, medio extrapolando cómo funciona la tecnología de conmutación de gráficos de PC y portátiles. No es una suposición irrazonable que esas tecnologías se basan en el trabajo de los proveedores de GPU con Apple. Aún así: tome lo siguiente con una gran cantidad de sal.)
Con nVidia Optimus, la configuración es que la pantalla integrada de una computadora portátil está conectada a la GPU integrada y el puerto de pantalla externo está conectado a la GPU discreta. Si necesita renderizar cosas usando la GPU discreta en la pantalla integrada, la GPU discreta está "esclava" de la integrada. Una llamada de representación va primero a la GPU integrada, que, si la GPU discreta está habilitada, la reenvía allí y luego recupera el resultado para enviarlo a la pantalla.
Si se conecta una pantalla externa, las llamadas de representación para esa pantalla van directamente a la GPU discreta, porque esa es la GPU que puede enviar cualquier salida a esa pantalla de todos modos. La GPU integrada simplemente no puede enviar salida de video a ese puerto por sí sola. No creo que sea posible que la GPU integrada sea "esclava" de la discreta, porque, en primer lugar, no tendría sentido desde una perspectiva de diseño con respecto a los objetivos de la tecnología de conmutación de gráficos; e incluso entonces, aún requeriría que la GPU discreta esté habilitada, lo que no ayudaría a las personas cuyo chip está fallando.
Si alguien todavía está buscando formas de hacer esto, consulte esta publicación del foro de MacRumors.
Seguí los pasos mencionados en esa publicación del foro y mi MacBook Pro 2011 de 15" funciona perfectamente usando solo su gráfico integrado. La tarjeta gráfica AMD inútil se deshabilitó con éxito.
Tetsujin
meligy
xpereta
asdfqwer
currentYear
un macBook v10.15.5 de 16" con kernel panic: 1.) obtenga gfx.io 2.) configúrelo como Solo integrado 3.) compre cody@codykrieger.com un café