воскресенье, 2 августа 2015 г.

Уменьшение частоты процессора на смартфоне под управлением Cyanogenmod

Так случилось, что несколько лет назад я стал владельцем смартфона Samsung S4 Active. Всем смартфон хорош, вот только производитель в погоне за обывательскими «попугаями» разогнал процессор Snapdragon 600 APQ8064T до частоты 1.9 ГГц, что превратило его в печку, приводя в лучшем случае быстрому разряду аккумулятора, а в худшем — его вздутие с одновременным выдавливанием экрана или же выходом из строя звукового чипа.

На стоковой прошивке частота процессора регулировке не поддавалась даже из под консоли. Вернее регулировка носила очень непродолжительный характер, после чего сбрасывалась на максимальное значение. На CyanogenMod 12.X все наконец-то заработало.

Внимание, все дальнейшие телодвижения вы делаете на свой страх и риск.

Изначально нужно иметь смартфон с установленным CyanogenMod`ом, мозги и прямые руки.

Итак начнем.

Активируем root на смартфоне:
1. «Настройки» → «О телефоне», тыкаем много раз пальцем в «Номер сборки».
2. «Настройки» → «Для разработчиков» → «Режим суперпользователя»

Параметр ядра отвечающий за максимальную частоту процессора:

/sys/power/cpufreq_max_limit

Возможные значения частоты:

/sys/power/cpufreq_table

Для автоматической установки частоты при запуске в /etc/init.d обнаруживаем:

/etc/init.d/90userinit

В котором содержится фрагмент кода для запуска файла:

/data/local/userinit.sh

Данного файла не оказалось, поэтому создадем его. В консоли он создается так:

touch /data/local/userinit.sh

Открываем его в штатном редакторе Cyanogenmod`а и пишем в него:

#!/system/bin/sh
echo 1242000 > /sys/power/cpufreq_max_limit

Где 1242000 — частота процессора для моего смартфона, свои частоты смотрите в /sys/power/cpufreq_table

Выключаем root: «Настройки» → «Для разработчиков» → «ВЫКЛ»

Перезагружаем смартфон и радуемся.


Файл userinit.sh лучше сохранить на карте памяти смартфона, вы тем самым после обновления прошивки избавите себя от массы описанных выше телодвижений. Всего-то придется скопировать userinit.sh в /data/local и перезагрузить смартфон.