Aller au contenu

[TUTO] Utiliser et configurer OC Daemon + scripts UV/UC CPU/GPU


-iNSiGhT-

Recommended Posts

Hello tous!

Etant sous ROM et Kernel custom depuis l'acquisition de mon SGSII, et pratiquant l'underClocking/Volting. J'utilisais jusqu'ici le très connu SetCPU qui vous permet d'imposer un profil principal ("main") à la gestion des fréquences du CPU (Under ou OverClocking), des tensions inférieures pour chaque fréquence gérée par le kernel (UnderVolting), et d'autres profils de fréquences bien plus ciblés comme "écran éteint", "batterie inférieure à un certain pourcentage", "température du CPU supérieure à une valeur donnée"...

Le "léger" souci de SetCPU, c'est que c'est une application qui doit donc tourner en tâche de fond (quoique, on en voit aucune trace dans le gestionnaire de tâches), et qu'il présente un léger décalage entre la survenue d'un profil et l'application du dit profil par SetCPU ; par exemple, avec un profil "écran éteint", SetCPU va mettre un court instant pour sortir de ce profil au moment où vous sortirez de veille...d'où parfois quelques lags...

C'est là que OC Daemon et les scripts 96undervolt (tensions CPU) et 99gpuv (frequences et tensions du GPU : processeur graphique) font leur entrée... Enfin, c'est surtout à la lecture de l'explication de leur fonctionnement par Shinfei ;) (forumeur) qu'on leur trouve certains avantages...

OC Daemon gère la fréquence du CPU et fonctionne à base de scripts qui se lancent au démarrage du téléphone, ce qui signifie qu'une fois allumé, la gestion des fréquences du CPU est assurée par le système, non par une application (possible économie par rapport à SetCPU qui fonctionne en tâche de fond).

L'inconvénient d'OC Daemon par rapport à SetCPU est l'impossibilité de créer toutes sortes de profil que je vous ai exposé dans le 1er paragraphe... Avec OC Daemon, on se limite à un profil "écran allumé" et un profil "écran éteint".

Et c'est la même chose avec les scripts 96undervolt et 99gpuv, les tensions du CPU et fréquences/tensions du GPU sont gérées par le système...

Note : OC Daemon est utilisable sans les scripts 96undervolt et 99gpuv... Et inversement... Vous pouvez n'utiliser que OC Daemon, ou OC Daemon et 96undervolt (sans toucher au GPU), ou juste 96undervolt sans OC Daemon, etc.... Utilisez ce que vous voulez...

Pré-requis à l'utilisation d'OC Daemon :

- Avoir un téléphone rooté (pour accéder à la partie système de votre carte SD, et pour utiliser "Daemon Controller")

- Avoir installé un kernel compatible avec OC Daemon (notre tuto se basera sur l'utilisation du Kernel Siyah v2.1 DarkKnight de la CheckROM RevolutionHD)

- Connaître les limites d'UnderVolting de votre processeur (chaque processeur est unique et réagit différemment aux changements de voltages), car OC Daemon étant basé sur des scripts se lançant au démarrage, si vous dépassez les limites basses de tensions supportées par votre processeur, vous aurez reboot sur reboot et le seul moyen d'en sortir sera de reflasher le zip de Shinfei contenant les scripts avec des valeurs Stock... mais si on peut éviter... ^_^

--> Pour connaître les voltages supportés par votre processeur, je vous conseille de passer par....SetCPU, oui, oui.... :ph34r:

Cherchez des valeurs d'undervolting assez sobres et testez les (sans cocher "Set on Boot" sinon, on revient au même souci qu'avec OC Daemon), vous pouvez ensuite baisser les valeurs de tensions par palier de 25mV...et ce jusqu'à ce que votre SGSII bug/freeze/reboot, vous avez alors dépassé les limites d'undervolting de votre processeur...

Quand vous connaissez les limites pour chaque fréquence, je vous conseille de les utiliser un ou deux jours pour être sur que cela fonctionne dans toutes les situations...

- Avant d'installer OC Daemon, désinstallez toute application gérant les fréquences/tensions du CPU (comme SetCPU) car ils ne font pas bon ménage avec OC Daemon et le désactive tout simplement...

- Et bien entendu, ni moi, ni le forum ne pourrions être tenu pour responsable de tout problème survenant à votre téléphone lors du flashage ou de la modification des fréquences/tensions de vos CPU/GPU...

Utilisation d'OC Daemon et des scripts 96undervolt et 99gpuv :

1°) Installation d'OC Daemon et personnalisation du script de base :

Pour les utilisateurs de la CheckROM RevolutionHD, OC Daemon est disponible via l'apllication "Kitchen Pro". Ce zip vous installera le script de base (gestion des 2 profils "Wake State" et "Sleep State") et l'application "Daemon Controller".

Shinfei nous a préparé un zip flashable via CWM/Recovery comprenant le pack OC Daemon ainsi que les 2 scripts pour gérer les tensions du CPU et les fréquences/tensions du GPU : http://www.multiupload.com/6V6VBJDOL3

Même si vous ne souhaitez utiliser que OC Daemon, il n'y a aucun souci à installer ce pack car les scripts 96undervolt et 99gpuv sont configurés avec les valeurs Stock (c'est donc comme si vous ne touchiez à rien aux tensions GPU et fréquences/tensions GPU)...

Une fois installé, lancez l'application "Daemon Controller" :

sc20111104211858.png

Vous arrivez sur cet écran :

sc20111104211908.png

Dans cette application, vous allez régler les fréquences minimum et maximum ainsi que le gouverneur de votre CPU quand il est en utilisation "Wake State Settings" et quand il est en veille "Sleep State Settings".

Les fréquences par défaut (avec kernel Samsung) du processeur du SGSII sont de 200MHz/1200MHz (1,2GHz). Au premier démarrage, OC Controller vous montrera les fréquences et le gouverneur par défaut du kernel utilisé.

L'application doit vous indiquer "Active Daemon=Virtuous_oc". Si ce n'est pas le cas (indication "Active Daemon=None"), c'est qu'OC Daemon n'est pas actif (cela arrive par exemple quand on installe et utilise SetCPU après installation d'OC Daemon)

Le bouton "Switch" vous permet de passer de virtuous_oc à andrev_oc et inversement... Je ne sais pas quelles sont les différences entre ces scipts, j'utilise par défaut le virtuous_oc.

Pour les valeurs de la photo ci-dessus, je suis en UnderClocking en limitant la fréquence maxi du CPU à 1GHz (1 000 000) et la mini à 100MHz (100 000) quand le téléphone est en éveil avec le gouverneur "OnDemand" (je vous laisse chercher comment fonctionne chaque gouverneur, il s'agit en fait de stratégies différentes réactivité/consommation).

Et lorsque le téléphone est en veille, il ne peut être qu'entre 100MHz et 200MHz.

A vous de choisir vos fréquences... Stock, UnderClocking ou OverClocking... et appuyez sur "Apply".

L'option "Bypass" permet de ne choisir qu'un seul profil de fréquences (pas de différenciation Wake/Sleep)

Pour les curieux, OC Controller ne fait que modifier les scripts placés dans le dossier /system/etc/virtuous_oc, mais avec une joli interface qui rend les choses bien plus simples...que la personnalisation des scripts 96undervolt et 99gpuv...quoique, avec ce tuto, vous serez incollable... :P

2°) Installation et personnalisation des scripts de tensions CPU (96undervolt) et fréquences/tensions GPU (99gpuv) :

2 possibilités :

- vous avez flashé le fichier zip de Shinfei, les 2 fichiers 96undervolt et 99gpuv se trouvent déjà à leur place.

- vous avez juste flashé OC Daemon via la Kitchen, dans ce cas, reflashez le zip de Shinfei par dessus pour installer les 2 scripts (attention, reflasher le zip remettra les valeurs de réglages des fréquences du CPU aux valeurs par défaut, il vous faudra recommencer l'étape 1° si vous l'avez déjà faite, l'histoire de 5 minutes).

Voici les fichiers quand ils sont en place :

sc20111104212500.png

Ne vous inquiétez pas pour la mise en place de ces scripts avant même d'avoir choisi vos fréquences/tensions, car comme je vous le précisez plus haut, Shinfei les a configurés avec les valeurs Stock, donc aucun risque... Sauf celui inhérent au flash de tout zip....

# Personnalisation de 96undervolt (gestion des tensions du CPU) :

- Ouvrir avec un éditeur de texte ce fichier (ES Explorer dispose d'un tel éditeur), voici le contenu du script :


#!/system/bin/sh
#customize voltages to you values
#All Steps in MHz
#Steps are: 1400 1200 1000 800 500 200
NORMAL_STEPS="1325 1275 1175 1075 975 950"
#Added Step is for max_step higher than 1400Mhz
HIGHER_STEP="1425"
#Added Step is for min_step lower than 200Mhz
LOWER_STEP="950"
echo "kwerdenkers kernel adaptive UV init-script active. Checking kernel for UV support..."
#Checking stuff
if [[ -e /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table ]]; then
echo "Kernel supports undervolting! Checking frequencies table for number of speed steps..."
UV_COUNT=$(cat /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table | wc -l)

case $UV_COUNT in
6)
echo "6 speed steppings found"
echo $NORMAL_STEPS > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
;;
7)
echo "7 speed steppings found"
echo $HIGHER_STEP" "$NORMAL_STEPS > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
;;
8)
echo "8 speed steps found. Checking for Siyah kernel..."
if [[ $(uname -r | grep Siyah -) ]]; then
echo "Kernel found. Safe to use 8 step UV settings."
echo $HIGHER_STEP" "$NORMAL_STEPS" "$LOWER_STEP > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
else
echo "Other 8 step kernel found. Skipping UV for now for security reasons."
fi
;;
*)
echo "[!!] Found number of steppings with no correlating UV settings: "$UV_COUNT". No UV will be used! Please repot your kernel and the steppings to the author of this script."
;;
esac
else
echo "Kernel does not seem to support UV settings. Skipping UV."
fi

- Les seules lignes que vous devez modifier sont, au début du script :

NORMAL_STEPS="1325 1275 1175 1075 975 950"

HIGHER_STEP="1425"

LOWER_STEP="950"

Les valeurs NORMAL_STEPS correspondent aux tensions des fréquences 1400MHz, 1200MHz, 1000MHz, 800MHz, 500MHz et 200MHz, soit 6 valeurs.

Si votre kernel gère plus de 6 fréquences (le kernel Siyah en gère 8, de 100MHz à 1600MHz), HIGHER_STEP correspond à la tension de la fréquence 1600MHz et LOWER_STEP correspond à la tension de la fréquence 100MHz.

Il vous reste donc ici à modifier à votre gré les tensions pour chacune des 6, 7 ou 8 fréquences (selon votre kernel).

Pour information (et juste pour information, utilisation à vos risques et périls :D ), voici mes valeurs :

NORMAL_STEPS="1250 1200 1075 975 875 850"

HIGHER_STEP="1325"

LOWER_STEP="825"

Ou celles de Shinfei (encore plus basses) :

NORMAL_STEPS="1250 1150 1050 950 850 800"

HIGHER_STEP="1250"

LOWER_STEP="800"

- Enregistrez votre fichier modifié.

- Vérifiez ses paramètres en lecture, écriture et exécution. Pour ma part, 96undervolt est en rwx r-x r-x (il faut qu'il soit exécutable au démarrage...)

- Redémarrez votre téléphone pour que vos réglages se mettent en place.

Pour vérifier le bon fonctionnement de votre script, vous pouvez voir si les tensions de votre CPU correspondent aux données inscrites dans votre script en ouvrant avec un éditeur de texte le fichier /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

# Personnalisation de 99gpuv (gestion des fréquences et tensions du GPU) :

- Ouvrir avec un éditeur de texte ce fichier, voici le contenu du script :


#!/system/bin/sh
# Customize the following four lines
GPU_STEP_LOW=160
GPU_STEP_HIGH=267
GPU_VOLTAGE_STEP_LOW=950
GPU_VOLTAGE_STEP_HIGH=1000
# CLOCK INFO:
# 100 114 133 160 200 267 400 are valid frequencies
# 160 267 are stock/default
# VOLTAGE INFO:
# 800 min / 1200 max
# 950 1000 are stock default
# Voltage control is capable of 50mV steps only
# Kernel must support modification to buck3_init for values under 900mV to work
#
# ##############################################################################
#
if [ `expr $GPU_VOLTAGE_STEP_LOW % 50` -gt 0 ];
then
GPU_VOLTAGE_STEP_LOW=$(( $GPU_VOLTAGE_STEP_LOW + 50 - $GPU_VOLTAGE_STEP_LOW % 50))
fi;
if [ `expr $GPU_VOLTAGE_STEP_HIGH % 50` -gt 0 ];
then
GPU_VOLTAGE_STEP_HIGH=$(( $GPU_VOLTAGE_STEP_HIGH + 50 - $GPU_VOLTAGE_STEP_HIGH % 50))
fi;
GPU_VOLTAGE_STEP_HIGH=`expr $GPU_VOLTAGE_STEP_HIGH \* 1000`
GPU_VOLTAGE_STEP_LOW=`expr $GPU_VOLTAGE_STEP_LOW \* 1000`
if [ -e /sys/class/misc/gpu_clock_control/gpu_control ];
then
echo "Previous clock settings:"
cat /sys/class/misc/gpu_clock_control/gpu_control
echo "$GPU_STEP_LOW $GPU_STEP_HIGH" > /sys/class/misc/gpu_clock_control/gpu_control
echo "New clock settings:"
cat /sys/class/misc/gpu_clock_control/gpu_control
fi;
if [ -e /sys/class/misc/gpu_voltage_control/gpu_control ];
then
echo "Previous voltage settings:"
cat /sys/class/misc/gpu_voltage_control/gpu_control
echo "$GPU_VOLTAGE_STEP_LOW $GPU_VOLTAGE_STEP_HIGH" > /sys/class/misc/gpu_voltage_control/gpu_control
echo "New voltage settings:"
cat /sys/class/misc/gpu_voltage_control/gpu_control
fi;

- Les seules lignes que vous devez modifier sont, comme indiqué, les 4 lignes au début du script :

GPU_STEP_LOW=160

GPU_STEP_HIGH=267

GPU_VOLTAGE_STEP_LOW=950

GPU_VOLTAGE_STEP_HIGH=1000

Ces valeurs sont les valeurs par défaut du SGSII.

Pour les fréquences du GPU, vous avez le choix parmi ces valeurs : 100 114 133 160 200 267 400, 160/267 étant donc les fréquences mini et maxi par défaut (valeurs stock).

Pour les tensions du GPU, vous avez le choix parmi ces valeurs : 800 850 900 950 1000 1050 1100 1150 1200, 950/1000 étant les tensions mini/maxi par défaut (valeurs stock).

A vous de choisir vos valeurs...en pensant bien que moins le GPU tourne vite (en fréquence), plus vous avez de chance de pouvoir baisser les tensions...

- Enregistrez votre fichier modifié.

- Vérifiez ses paramètres en lecture, écriture et exécution, en rwx r-x r-x (il faut qu'il soit exécutable au démarrage...)

- Redémarrez votre téléphone pour que vos réglages se mettent en place.

Et voilà, vous savez utiliser OC Daemon et les scripts d'Over/UnderClocking et Over/UnderVolting.........enfin j'espère....

Un dernier conseil : conservez toujours le zip de Shinfei dans votre carte SD, ainsi, si vous entrez des valeurs de tensions trop basses et que votre SGSII ne sait plus booter correctement, vous pourrez toujours reflasher ce zip, qui vous remettra les scripts avec les valeurs stock...afin de tout régler à nouveau...

Merci à Shinfei de m'avoir expliqué le fonctionnement d'OC Daemon et de nous avoir préparé ce joli zip flashable via CWM.

Modifié par -iNSiGhT-
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

J'ai détaillé pour que ce soit accessible au plus grand nombre Neutre0 (déformation professionnelle sans doute... ^_^ ), en lisant bien le tuto, y'en a même pas pour 5 minutes pour OC Daemon et 1/4h pour prendre son temps et bien modifier les scripts 96undervolt et 99gpuv...

Le tout, c'est de vérifier qu'on a tout ce qu'il faut (pré-requis), après, c'est pas bien compliqué... ;)

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...