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.

  1. Preparación
  2. Instalación de acpi_call
  3. Configuración del modo de arranque del equipo
  4. Notas y observaciones
  5. 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.

  1. Activar dkms
    systemctl enable dkms
  2. 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
  3. 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"
  4. Registramos en dkms el nuevo módulo:
    dkms add -m acpi_call -v git
  5. Compilamos e instalamos el módulo con estos comandos:
    dkms build -m acpi_call -v git
    dkms install -m acpi_call -v git
  6. Cargamos en caliente el módulo
    modprobe acpi_call
  7. 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!
  8. 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

ASUS_Eee_PC_1015PN_Red_1015PN-2