Skip to main content

Cambiar el plan de CPU según enchufe o batería


Introducción

Apunte para automatizar el cambio de plan de energía (governor) en un portátil según si está enchufado o funcionando con batería. La idea es olvidarse de cambiarlo manualmente y que se ajuste solo.


Características

  • Detecta si el portátil está en corriente o en batería.
  • Cambia el governor de CPU automáticamente.
  • Funciona como servicio systemd para que siempre esté activo.

Requisitos previos

  • Linux (probado en distros con /sys/class/power_supply, funciona bien en Fedora 42).
  • Tener sudo configurado para poder escribir en scaling_governor sin pedir contraseña (o configurar sudoers).
  • Acceso root para instalar y habilitar servicios.

Script principal

📁 Puedes consultarlo en Gitea

  • Se revisa cada 3 minutos (sleep 180).
  • Modificar los governors según preferencias.

Servicio systemd

Archivo en /etc/systemd/system/power_manager.service:

[Unit]
Description=Power Manager Script
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash -c "sudo /home/usuario/Documentos/Scripts/power_manager.sh"
Restart=always
User=usuario
Environment=DISPLAY=:0
Environment=HOME=/home/usuario

[Install]
WantedBy=multi-user.target
  • Cambiar usuario por el nombre real si se copia literal.
  • Importante revisar permisos y rutas.

Configuración en sudoers

Añadir al archivo sudoers (con visudo) para permitir ejecutar el script sin contraseña:

# Custom
usuario ALL=(ALL) NOPASSWD: /home/usuario/Documentos/Scripts/power_manager.sh

Errores comunes o decisiones importantes

  • Permisos sudo: hay que permitir sudo tee sin contraseña para que funcione sin bloqueo.
  • Ruta AC0: depende del hardware, a veces es AC, ACAD, etc. Verificar en /sys/class/power_supply/.
  • Intervalo: se podría reducir el tiempo de espera (sleep), pero puede consumir más recursos.

Resumen breve

  • Script en bash que revisa si está enchufado.
  • Cambia automáticamente el governor de CPU.
  • Servicio systemd para que se inicie solo.
  • Configurar sudoers para no pedir contraseña.
  • Revisar nombre del adaptador AC.

Notas personales

Quizá se podría mejorar para no usar un bucle infinito y en su lugar usar udev o eventos ACPI, pero el loop es más sencillo y robusto para no complicarse.