Android es un sistema operativo muy personalizable,una de tantas que nos permite hacer es jugar con la frecuencia del reloj de su procesador y voltajes, a esto se le conoce como overclock y undervolt. Es importante destacar que para hacer esto, necesitas tener tu dispositivo Android rooteado y con un kernel o ROM que permita realizar este tipo de personalizaciones. Esta demás decir que este procedimiento no lo debe de hacer un usuario común
Comencemos con SetCPU
El SetCPU es un programa que uso desde hace bastante tiempo y siempre he intentado estar informado sobre él, sus opciones, etc. Además, como supongo que mucha más gente, he hecho innumerables pruebas con él. Debés tener el cuenta que para poder usarlo hay que tener permisos de SuperUsuario en el terminal (es decir, hay que ser "root".
Bueno, pues al final me he decidido a hacer un tutorial basado en mi experiencia personal y en la información que he ido aprendiendo de otras páginas web, ya que hay mucha gente que pregunta por el foro porque no sabe bien qué es cada cosa o cómo utilizarlo correctamente (además me se de uno que va a decir: Ya era hora, en español!!! O algo similar. Por otro lado el 90% de la información que hay por internet está en inglés y el traductor de Google, como todos sabemos, sirve para lo que sirve…
Otra cosa a tener en cuenta a la hora de leer este tutorial es que, aunque funciona de forma similar en todos los terminales, yo tengo un Galaxy S captivate y cuando haga mención a mis configuraciones o valores, lo haré en base a este mod
Al final del post esta la APK
¿Qué es y para qué sirve SetCPU?
Pues es un programa que básicamente cambia la frecuencia y el comportamiento del procesador del teléfono. Dependiendo de algunos factores que podemos especificar nos va a servir para ganar rendimiento, ahorrar batería, ganar estabilidad… O para todo lo contrario si no vamos con un poco de cuidado!
Al tema:
Importante: Antes de modificar ningún valor en la aplicación, lo primero que debemos hacer al iniciarla es conceder permisos root a la aplicación cuando se nos pregunte y pulsar la tecla menú (si no sale directamente) para después tocar en “Device Selection” y terminar seleccionando “Autodetect Speeds” (a no ser que hayamos instalado un kernel o una ROM que den algún tipo de problema a la hora de hacerlo, en cuyo caso lo normal es que el creador nos proporcione un txt que se guarda normalmente en la raíz de la tarjeta SD y que ya tiene especificadas las distintas frecuencias*).
*Para que la aplicación coja los valores de dicho txt, tendremos que tocar en “Show Other Frequencies Set” y ahí en la última opción.
Una vez hecho esto, dentro de la misma pestaña en la que estamos (Main) podremos modificar los siguientes valores:
Max: Frecuencia máxima (en MHz) que permitimos alcanzar al procesador (esto es especialmente útil para marcar una frecuencia un poco más alta y ganar fluidez en los juegos y en los menús, o para marcar un valor moderado y así alargar la vida de nuestra sufrida batería).
Importante: Leer el apartado de overclocking hacia la final del tutorial para evitar posibles problemas. Overclockear un procesador puede provocar inestabilidades, bloqueos o incluso acortar su vida útil.
Min: Todo lo contrario. Aquí marcamos la frecuencia mínima a la que queremos trabajar, de forma que podemos evitar lags (retrasos) a la hora de usar ciertas aplicaciones, desbloquear la pantalla, etc.
Scaling o Governor: Es la forma en la que la aplicación subirá o bajará las frecuencias. Las hay que mejoran el rendimiento, la vida de la batería, que son muy flexibles con las frecuencias o que no. El valor que escojamos aquí dependerá de nuestras necesidades y del uso que le demos al terminal (juegos, teléfono…) y hay que tener en cuenta que no todas las ROMs o los kernels soportan todos los modos.
Interactive: Es un modo con una respuesta muy rápida y un consumo de batería relativamente moderado. Escala a frecuencias altas casi instantáneamente y, en cambio, baja de frecuencia de forma escalonada. Es el que yo suelo usar.
Conservative: Es todo lo contrario que el modo anterior. Sube de frecuencia paso a paso, pero baja instantáneamente en base a la necesidad de cada momento. Consumo de batería bajo.
Userspace: No le he encontrado ninguna utilidad. En principio se pensó para indicar de forma manual una frecuencia de trabajo y para que otras aplicaciones pudiesen cambiar de forma dinámica a otras frecuencias (y así evitar problemas de compatibilidad con SetCPU).
Powersave: Da prioridad a las frecuencias bajas, de forma que la aplicación cambiará a la mínima frecuencia posible en base a la necesidad. Es el mejor si queremos ahorrar algo de batería. De todas formas este Scaling conserva casi todo el tiempo la frecuencia más baja, por lo que normalmente no será válido para usarlo como Scaling por defecto.
Ondemand: Es el método usado por defecto por Android (y por lo tanto el más estable de todos). Escala las frecuencias según la necesidad de cada momento, pero no sube tan rápidamente como el modo interactive. Aunque es muy parecido a este último modo, es más equilibrado, ya que a costa de un mínimo rendimiento consume también algo menos de batería.
Performance: Conserva la frecuencia del procesador en el valor máximo indicado siempre. Ideal para hacer benchmarks o para usar en momentos en los que necesitemos el mejor rendimiento. Es el que consume más batería.
Minmax: Scaling que he visto hace poco en algunos kernels. Escala a los valores absolutos que hayamos puesto en Max y Min sin frecuencias intermedias. Esto quiere decir que cuando el terminal está en reposo, estará a la mínima frecuencia pero que en cuanto una aplicación necesite recursos, subirá al máximo. Proporciona un buen rendimiento sin que la batería se resienta demasiado.
Smartass: Otro modo que he visto poquitas veces. Responde de forma más rápida que el anterior (minmax) y teóricamente incorpora una directriz para que el procesador baje la frecuencia de forma automática al apagar la pantalla. No lo recomiendo ya que el mismo SetCPU incorpora una opción (ver “Perfiles” más adelante) mucho más flexible para cuando la pantalla está apagada.
Pestaña profiles
En esta pantalla podremos indicar los valores de SetCPU para distintas circunstancias (cuando está cargando, cuando la pantalla está apagada, cuando el nivel de batería está bajo…)
Todos son útiles en base a la necesidad. Especialmente interesantes son:
Screen Off: Para ahorrar batería cuando la pantalla está apagada. Yo lo tengo en 245 Min 460 Max, Scaling Interactive y prioridad 100. De esta forma se ahorra la batería pero el teléfono responde más rápidamente al desbloquear la pantalla, ya que sube rápidamente de frecuencia.
Battery<: útil para cuando no tenemos casi batería. Marcamos frecuencias bajas de forma que podemos alargar su vida. En mi caso tengo que cuando la batería esté por debajo del 25% las frecuencias sean 245MHz - 576MHz en modo Powersave.
Temp >: Nunca es necesario, pero si alguna vez lo es, nos puede salvar la vida del teléfono. Sirve para especificar frecuencias bajas si el procesador se calienta demasiado. Lo tengo configurado exactamente como el anterior y el límite de temperatura a 50 grados centígrados.
Pestaña Advanced
En esta pestaña podremos configurar algunos patrones de comportamiento para ciertos métodos de escalado (el Scaling de la pestaña Main). Debéis tener en cuenta que dependiendo del Scaling que tengamos en ese momento, podrán no estar disponibles todos los valores o incluso ninguno. Hay Scalings como Ondemand o Conservative que permiten modificar varios valores, y otros como Performance o Userspace que no permiten modificar ninguno.
Sampling Rate: Es el tiempo que pasa entre lectura y lectura de la carga del procesador. Cuanto más bajo mejor rendimiento, ya que la frecuencia de trabajo cambia más rápidamente.
Up Threshold: Es un porcentaje que indica el nivel de carga en el que el procesador dará el salto de frecuencia. Cuanto más bajo antes subirá de frecuencia (por lo tanto mejor rendimiento) y al contrario.
Down Threshold (sólo Conservative): Lo contrario que el modo anterior. Marca a qué porcentaje de carga se debe bajar la frecuencia de trabajo. Un valor bajo hará que el procesador esté más tiempo en frecuencias altas, con el consecuente aumento de consumo y de rendimiento. Un valor alto baja la frecuencia más rápidamente.
Freq Step (sólo Conservative): Indica el porcentaje que sube la frecuencia (en base al valor en MHz que hayamos puesto en Max) cada vez que procesador alcanza el valor "Up threshold". Por ejemplo, si en Up Threshold tenemos un 20%, en Max 800MHz y en Freq Step tenemos un 10% lo que pasará es que cuando el procesador esté en un 20% de carga, subirá 80MHz (el 10% de 800MHz).
Powersave BIAS (sólo Ondemand): También es un porcentaje, aunque en este caso un valor de cero es un 0%, un valor de 500 es un 50% y un valor de 1000 es un 100%. Lo que este valor indica, es que cuando el procesador tiene que subir la frecuencia, en vez de hacerlo al valor que lo haría normalmente lo hará a ese valor menos el porcentaje aquí especificado. Ejemplo: Si el procesador debería subir a 500MHz y aquí tenemos especificado un 10%, subirá ese 10% menos de forma que sólo llegará a 450% (10% de 500). Como es un poco lioso de comprender, baste decir que a valores más bajos se gana batería y se sacrifica rendimiento, y cuanto más alta es la cantidad aquí especificada el procesador responde y sube de frecuencia más rápidamente repercutiendo en la batería negativamente (aunque casi ni se nota).
Ignore Nice Load: La verdad es que no tengo muy claro qué tipo de carga ignora la aplicación a la hora de hacer los cambios de frecuencia, así que no puedo explicar mucho. Pero en lo que todo el mundo parece estar de acuerdo (yo incluido) es que este valor debe estar siempre a cero.
Configuración de ejemplo
Estas opciones son personales, cada uno que las regule como convenga. Yo les recomiendo estas:
Temp > 50º: 460max- 245min Priority 100 powersave
Charging/Full: 998max- 245min Priority 99 performance (powersave para una carga más rápida)
Con este no es necesario los 2 de abajo, los engloba a los dos, los de abajo es por si queremos reglas diferentes y entonces sobraría este.
Charging AC/Full: 998max- 245min Priority 99 performance (powersave para una carga más rápida)
Charging USB/Full: 768max- 245min Priority 99 performance (powersave para una carga más rápida)
Screen Off: 245max- 245min Priority 98 ondemand o interactive (se puede poner 460 en max para una respuesta más rápida al desbloquear)
Battery < 30%: 460max- 245min Priority 97 powersave
Battery < 50%: 499max- 245min Priority 96 powersave
Battery < 75%: 768max- 245min Priority 95 powersave
Overclock
El overclock es una técnica que consiste en hacer funcionar un chip electrónico a una velocidad/frecuencia de reloj mayor de la que viene en sus especificaciones. Velocidad y frecuencia de reloj son dos términos que podemos usar indistintamente.
Para conseguir el overclock en nuestro dispositivo no tenemos muchas opciones, no es como en un PC, aquí sólo vamos a poder jugar con 2 parámetros para lograr la frecuencia de reloj estable más alta posible, la frecuencia de reloj en sí y el voltaje de alimentación de la CPU. En un PC, y dependiendo del micro y la placa base usados, podríamos estar modificando más de 20 parámetros distintos sólo en la BIOS para hacer lo mismo.
Riesgo
En principio no, ya que la capacidad de overclock es limitada. De hecho, al menos en los android que conozco, el procesador, según los detalles propios de él, puede funcionar a más potencia, pero se reduce por motivos de consumo de batería sobretodo. El único riesgo que puedes tener es que se te reinicie el móvil si lo configuras mal. Por supuesto, funcionar con el teléfono a mas potencia aumentará el consumo de bateria.
Undervolt
El undervolt consiste en suministrarle a un chip un voltaje de alimentación menor del marcado en sus especificaciones para conseguir un menor consumo y una menor temperatura de trabajo.
El underclock consiste en hacer funcionar un micro a una velocidad/frecuencia de reloj más baja de la que viene en sus especificaciones. El underclock se usa para bajar el consumo del procesador. A menor frecuencia, menor consumo. Y a menor frecuencia, el voltaje de alimentación del micro se puede reducir para disminuir aun más el consumo. Los fundamentos son exactamente los mismos que en el overclock.
El reloj es una señal a la que se ajusta el hardware de nuestro sistema y todo en el sistema ocurre de forma sincronizada con la señal de reloj, así por ejemplo, podemos decir que una operación de suma de datos consume X ciclos de reloj y un acceso a memoria consume Y ciclos de reloj. Esto será siempre así, no importa lo largo o corto que sea el ciclo de reloj. La frecuencia de reloj nos indica cuantos ciclos de reloj ocurren en un segundo. Cuando decimos que un chip funciona a 1 Mhz, lo que decimos es que el reloj de ese chip tiene un millón de ciclos por segundo, si decimos 1 Ghz estamos hablando de 1000 millones de ciclos de reloj por segundo. Mientras más subamos la frecuencia del reloj, más ciclos habrá por segundo y más rápido será el chip. Con el aumento de frecuencia también aumentaremos el consumo y la temperatura de trabajo del chip.
El voltaje de alimentación de la CPU es un valor muy importante para nosotros no sólo por el ahorro en batería, sino porque de su valor dependerá el overclock posible a nuestro terminal. La teoría es la siguiente, a mayor voltaje de alimentación, la frecuencia de trabajo estable máxima del micro es mayor. El aumento de voltaje de la CPU se transmite en mayor consumo y temperatura. Lo ideal es trabajar siempre al menor voltaje estable para la frecuencia de reloj que estamos usando, así reducimos consumo y temperatura manteniendo la velocidad.
dijo:Llamamos undervolt a utilizar un voltaje de alimentación del chip por debajo del valor marcado en las especificaciones del fabricante.[/quote]
Los factores limitantes a la hora de hacer overclock a un chip son varios. Si subimos el voltaje de alimentación demasiado acabamos fundiendo el chip, sólo podremos subir el voltaje hasta un punto, a partir de ahí no nos dará más estabilidad al subir la frecuencia de reloj sino al revés, porque generará un exceso de calor y el aumento de temperatura bajará la estabilidad del sistema. Otro factor es la temperatura, la regla es que a menor temperatura, mayor estabilidad en el chip. Como estamos en un sistema que funciona con batería, afortunadamente al buscar el voltaje mínimo estable para una frecuencia de reloj estaremos haciendo todo lo que podemos hacer para mantener el consumo al mínimo y la temperatura más baja a esa frecuencia de reloj, lo que simplifica mucho las cosas.
Governors
Los “governors” de la CPU son las directrices que tiene el kernel del sistema operativo para cambiar de frecuencia la CPU. Los más usados son Ondemand y Smartass. La principal diferencia entre ambos es que Ondemand cambia la frecuencia de reloj del micro a la máxima en cuanto hay una carga predeterminada de trabajo en la CPU, mientras que Smartass no la sube tan rápido y utiliza más las frecuencias intermedias antes de subir el micro al máximo. En teoría con Ondemand tendremos un equipo un poco más fluido y con Smartass ahorraremos un poco de batería. El governor Performance nos pone el micro siempre a la máxima velocidad, es adecuado para testeos pero no lo recomiendo a nadie para usarlo de forma habitual en el terminal. Aunque existen otros governors distintos, la mayoría no funcionan bien en sistemas de doble nucleo y muchos kernels custom ni siquiera los implementan, estos son algunos o la mayoría:
ONDEMAND: Es la opción por defecto usado por Android y escala la velocidad de la CPU entre las velocidades mínimas y máximas en función de la carga de la CPU. Si el sistema necesita más velocidad, el núcleo rápidamente amplia la velocidad de la CPU.
CONSERVATIVE: Establece la velocidad de la CPU de una manera similar a la del gobernador ondemand, pero las escalas de la CPU van a un ritmo mucho menor. En teoría, esto podría ahorrar energía de la batería, pero puede suponer una menor capacidad de respuesta., es decir menos perfomance (ideal para ahorrar batería)
USERSPACE: Es actualmente inútil. Es otra manera en el que las aplicaciones establecen la velocidad de la CPU que SetCPU no utiliza.
POWERSAVE: Es aquel que siempre mantiene la CPU a la mínima ajustada frecuencia
PERFOMANCE: Siempre mantiene la CPU a la frecuencia ajustada máximo. Es decir, para aprovechar todas las bondades del equipo, pero reduce batería
SMARTASS: Se basa en el concepto de el gobernador interactivo, pero su codigo fue reescrito y mejorado ademas de usar una especie de perfil en donde mantiene en Off la frecuencia minima (puede ajustarse)
SMARTASSV2: Es usado en los nuevos Kernels, como el de Franco o Zacks, y le da mas perfomance, rápidez y estabilidad al equipo, es una versión mejorada de “smartass”
INTERACTIVE: Tiene un enfoque diferente. En lugar de muestreo de la CPU a una velocidad especificada, el gobernador usa la escala de la frecuencia de la CPU cuando viene de inactividad. Cuando la CPU sale de reposo, un temporizador está configurado para disparar dentro de 1-2 ticks. Si la CPU está ocupada al 100% la salida de inactividad asume poca potencia y la rampa de velocidad pasa a MAX. Si la CPU no estaba ocupada al 100%, entonces el gobernador evalúa la carga de la CPU durante el pasado min_sample_rate ‘ (por defecto 50000 uS) para determinar la velocidad de la CPU.
SMOOTHASS: Es el intermedio entre Interactive y Smartass.
INTERACTIVE-X: Versión modificada del interactive con sleep + código de raíz . Esto permite que usted obtenga un completo sistema dinámico de frecuencia de la CPU.
LIGHTASSV2: Es un nuevo governor, ideal para ahorrar batería, controla los procesos adecuadamente y ayuda a tener una mejor autonomía de batería. Lo ideal en este governor es usar las frecuencias Stock,
SAVAGEDZEN: Ajusta la frecuencia de sleep a 384 MHz sin tener en cuenta lo definido, a excepción de “Userspace” no importa el gobernador que se establece, la CPU siempre se mantendrán dentro de los límites de las velocidades máxima y mínima que se establecen.

