La familia de netbooks ASUS Eee PC alcanzó uno de sus últimos hitos con el modelo 1015PN, que integraba gráfica de NVIDIA ION para mejorar sustancialmente el rendimiento gráfico del netbook, frente a a gráfica integrada de Intel. Desgraciadamente, la utilización de esta gráfica implicó que la batería literalmente volará y la temperatura de la CPU se disparaba al entorno de los 80-90ºC. Finalmente, con el paso del tiempo puede hacer inutilizable porque la CPU se calienta tanto que se apaga continuamente.
En esta entrada se mostrará cómo desactivar en Fedora 20 la gráfica NVIDIA, de forma que el netbook funcione únicamente con la gráfica integrada de Intel, que es suficiente para la mayor parte de las cosas que normalmente se hacen con un netbook.
- Preparación
- Instalación de acpi_call
- Configuración del modo de arranque del equipo
- Notas y observaciones
- Referencias
Preparación
Deberemos instalar estos paquetes para poder realizar los pasos que se enumeran:
- lm_sensors: permite consultar los sensores de temperatura que tenga nuestro equipo, mediante el comando sensors.
- dkms, git, gcc: distintas herramientas de desarrollo de módulos del núcleo de Linux, versionado de proyectos y compilación C/C++.
- kernel-devel ó kernel-PAE-devel: se debe instalar el paquete de desarrollo del núcleo que se corresponda al que tenemos instalado: normal ó PAE. Un núcleo PAE es aquél que tiene soporte para RAM de más de 4GB. Puedes saber qué versión necesitas mirando el contenido del directorio /lib/modules. Ahí veras listados el nombre de los núcleos de tu equipo. Si incluyen la palabra PAE, necesitas la versión kernel-PAE-devel. Si no aparece, utiliza kernel-devel.
Procederemos con el siguiente comando, desde un terminal de Linux y siendo root:
yum install lm_sensors dkms git gcc kernel-PAE-devel
Podemos utilizar los siguientes comandos para ver que le pase al equipo:
sensors
para ver la temperatura de los dispositivos (entorno a 60ºC con gráfica Intel y a 85ºC con NVIDIA) y
cat /sys/class/power_supply/BAT0/current_now
para ver la corriente que se demanda de la batería (entorno a 1000 mA con Intel y 1500 mA con NVIDIA).
Instalación de acpi_call
Es necesario que el módulo acpi_call esté instalado. Desafortunadamente no viene de serie en Fedora, así que tendremos que descargarlo y compilarlo. Usaremos la herramienta dkms para tratar de recompilar este módulo cuando se actualice el núcleo de Linux.
- Activar dkms
systemctl enable dkms
- Descargamos acpi_call con los siguientes comandos:
cd /usr/src git clone http://github.com/mkottman/acpi_call.git ln -vsi acpi_call acpi_call-git cd acpi_call-git
- Creamos el fichero /usr/src/acpi_call-git/dkms.conf con este contenido:
PACKAGE_NAME="acpi_call" PACKAGE_VERSION="git" BUILD_MODULE_NAME[0]="acpi_call" DEST_MODULE_LOCATION[0]="/kernel/acpi/" AUTOINSTALL="yes"
- Registramos en dkms el nuevo módulo:
dkms add -m acpi_call -v git
- Compilamos e instalamos el módulo con estos comandos:
dkms build -m acpi_call -v git dkms install -m acpi_call -v git
- Cargamos en caliente el módulo
modprobe acpi_call
- Probamos el módulo, para ello ejecutamos estos comandos:
cd /usr/src/acpi_call-git/examples ./turn_off_gpu.sh
Aparecerá un listado con un montón de comandos ACPI que podrían servir para apagar la GPU de Nvidia. Lo normal es que todos menos uno fallen. Se debe anotar el que tengamos. En mi caso sale
Trying \_SB.PCI0.P0P4.DGPU.DOFF: works!
- Configuramos modprobe para que cargue el módulo al arrancar el equipo. Para ello creamos el fichero /etc/modules-load.d/acpi_call.conf con
#Load 'acpi_call.ko' at boot. acpi_call
Configuración del modo de arranque del equipo
Una vez que acpi_call esté operativo, se puede configurar en qué modo de funcionamiento de la gráfica arrancará la próxima vez el equipo, utilizando el método ACPI \OSGS:
- \OSGS 3 – habilita Intel + Nvidia (modo Optimus)
- \OSGS 2 (y también \OSGS 0) – habilita únicamente Nvidia.
- \OSGS 1 – habilita únicamente la gráfica Intel.
Por ejemplo, el comando
echo "\OSGS 1" > /proc/acpi/call
configura el equipo para que la próxima vez que arranque lo haga en modo de gráfica integrada.
Para asegurarnos que siempre activamos esta opción, podemos hacer que se escriba automáticamente este valor cada vez que arranque el sistema. Se hace creando el fichero /etc/tmpfiles.d/acpi_call.conf con el contenido:
w /proc/acpi/call - - - - \OSGS 0x01 w /proc/acpi/call - - - - \_SB.PCI0.P0P4.DGPU.DOFF
Observa que en la última línea está el comando ACPI que obtuvimos en el paso 7 de la instalación de acpi_call.
Notas y observaciones
- Al principio, quizá se necesiten un par de inicios del equipo para que el módulo acpi_call arranque bien al inicio.
- Cada vez que se actualice la versión del núcleo será necesario repetir el paso 5 de la instalación de acpi_call, desde el directorio /usr/src/acpi_call-git.
Referencias
- Ficha técnica: Eee PC 1015PN.
- ArchLinux Wiki: ASUS Eee PC 1015PN.
- ArchLinux Wiki: Hybrid graphics
- Fabio Alessandro Locati: Make ION work properly in Fedora 15