[MOD] Übertaktungs-Modul für das Defy Mini (Overclocking)

  • 10 Antworten
  • Letztes Antwortdatum
B

Bernd.Defy

Fortgeschrittenes Mitglied
25
Hallo zusammen,

ich habe mein Übertaktungs-Modul mal fertiggestellt und stelle es hier zur Verfügung. Mit dem Tool könnt ihr die Multiplikatoren der drei taktgebenden PLLs des Mini manipulieren. Gaaanz kurzer Ausflug in die Technik:

Basistakt eines jeden der drei PLLs ist 19.2 MHz. Mit der Multiplikatoren werden die PLLs getaktet, in der Mini-Stadardausführung sind das
* PLL_0 --> Multi 50 ==> 960 MHz
* PLL_1 --> Multi 12 ==> 245 MHz
* PLL_2 --> Multi 62 ==> 1200 MHz

Die Frequenz der CPU wird nun über den PLL und einen Divisor gebildet. Für 600 MHz wird z.B. PLL2 mit Divisor 2 genutzt.

Die übertaktete Frequenz ist die 600 MHz-Frequenz. Mit Standard-Governor ("performance") kommt ohnehin nur die in Frage. Da meine Experimente ergeben haben, dass die Anpassung des Divisors oder die Umstellung des steuernden PLL nicht klappen (zb. PLL0 mit divisor 1 würde 960MHz CPU bedeuten), bleibt einzig die Übertaktung des PLL2. Der läuft bei mir mit Multiplikator 68 (68*19,2 / 2 = 652 MHz) absolut stabil und ohne signifikante Auswirkung auf die Laufzeit. Bis 70 klappte es bei mir auch ohne Probleme.

Genug der Vorrede, hier die Kurzanleitung. ACHTUNG! Ihr seid mit dem Kernel-Modul in der Lage, Euer Defy zu schrotten. Sobald das Handy mit Reboots reagiert oder sich irgendwie komisch verhält, nachdem ihr einen der Taktgeber geändert habt - Batterie raus. Warten. Batterie rein. Hoffen. :)

Noch ein Hinweis: Das Modul modifiziert zur Laufzeit Kernel-Variablen, indem es direkt in Speicherbereiche schreibt, in die eigentlich niemand schrieben soll. Dies ist notwendig, um die Frequenz in die Frequenzlisten aufzunehmen. Wenn dies bei Euch nicht klappt, sind die Firmwareversionen zu verschieden. Das ist nicht schlimm, die Modifikation ist leicht anpassbar.

  1. Download Modul
    Das Kernelmodul ist im Anhang dieses Posts. Kopiert es in ein beliebiges Verzeichnis.
  2. Kopie des Moduls auf das Telefon
    Zum Testen empfehle ich, das Modul auf die SD-Karte (im Beispiel: Verzeichnis TEMP) zu kopieren. Später könnt ihr es noch in den internen Speicher kopieren.
    Ich nutze adb:
    Code:
    adb push d:VMsSharedFolderdefymini_oc.ko /sdcard/temp
  3. Ermittlung der Speicheradressen der CPU-Frequenztabelle und Der Time-In-State-Tabelle
    Beide genannten Tabellen sorgen dafür, dass die neue Frequenz sowohl in der Time-In-State-Tabelle (genutzt z.B. von CPU-Spy) und in Tools wie SetCPU richtig angezeigt werden. Diese Tabellen werden vom Modul modifiziert, deshalb ist die richtige Speicheradresse wichtig. Tests anderer User haben ergeben, dass die Adressen in ihrer Firmware abweichen.

    Zuerst ermitteln wir die Adresse der Frequenztabelle. Dazu in ADB folgendes eingeben (natürlich als SU):
    Code:
    cat /proc/kallsyms | grep -A 1 pll0_960_pll1_245_pll2_1200_pll4_800_25a
    Ihr solltet dann die Speicheradresse als Output erhalten, so wie in diesem Bild hier. Zieladresse ist also 0xc0755bdc:

    185570d1364415725-mod-ubertaktungs-modul-fuer-das-defy-mini-overclocking-cpu-frequenztabelle.png


    Nun noch die Time-In-State-Tabelle. Die Adresse ermittelt man ähnlich:
    Code:
    cat /proc/kallsyms | grep -A 1 cpufreq_stats_table
    Auch hier steht die Speicheradresse im Output, in diesem Fall 0xc0789134:

    attachment.php


    Diese beiden Werte merken - wir brauchen Sie dann, wenn das Modul bei Euch nicht funktioniert.
  4. Nun wird's spannend! Laden des Kernel-Moduls
    Startet eine adb-shell und gebt, nachdem ihr root-zugriff habt (su), den Befehl
    Code:
    insmod /sdcard/temp/defymini_oc.ko pll2_l_val=68
    ein.
    Update: Das originäre insmod ignoriert (zumindest bei mir) alle Parameter nach dem ersten. Doof. Nach Installation von busybox (Play Store) kann man aber die busybox-version nutzen.:

    Code:
    busybox insmod /sdcard/temp/defymini_oc.ko pll2_l_val=68

    183468d1363905939-mod-ubertaktungs-modul-fuer-das-defy-mini-zwischenablage01.png


    [*] Troubleshooting
    Wenn der erste Anlauf nicht geklappt hat, dann müssen die ermittelten Adressen als Parameter übergeben werden. Das sieht dann so aus (hier mit meinen Adressen, hier müssen später Eure rein!):

    Code:
    busybox insmod /sdcard/temp/defymini_oc.ko pll2_l_val=63 acpu_freq_tbl_addr=0xc0755bdc cpufreq_stats_tbl_addr=0xc0789134
    Code:
    attachment.php


  5. Prüfen, ob's geklappt hat
    Ihr habt - wenn alles ok ist und Euer Kernel dem meinen halbwegs entspricht - den PLL2 nun übertaktet. Prüft die Kernel-Messages, ob alles geklappt hat. Wenn Euer Telefon bereits einen Reboot hingelegt hat, hat's wohl nicht geklappt. Falls nicht, hier der Befehl, die shell ist ja noch offen:
    Code:
    dmesg
    Wenn alles gut lief, müsstet ihr jetzt sowas ähnliches in der Ausgabe sehen:
    attachment.php


    CPU-Spy sollte die neue Frequenz nun auch kennen:
    attachment.php

  6. Modul wieder entfernen
    Mit
    Code:
    rmmod defymini_oc.ko
    könnt ihr das Modul wieder aus dem Speicher entfernen. Achtung: Die Änderungen werden nicht rückgängig gemacht! Nach dem nächsten Reboot ist aber alles wieder beim alten.

CREDITS
Dieses Modul basiert auf hervorragender Vorarbeit von1000 Dank an die beiden!


--
Updates
2013-04-01: v0.3 hochgeladen, neuer Parameter für Kernspannung der höchsten Frequenz (vdd, Werte zwischen 1(niedrig) und 7 (hoch), default: 6
2013-03-27: v0.2 hochgeladen mit Parametern für Frequenztabellen-Adressen, Troubleshooting-Kapitel
 

Anhänge

  • Zwischenablage01.png
    Zwischenablage01.png
    473 Bytes · Aufrufe: 1.278
  • Zwischenablage02.png
    Zwischenablage02.png
    1,7 KB · Aufrufe: 1.333
  • 2013-03-21-23-19-18.png
    2013-03-21-23-19-18.png
    9,3 KB · Aufrufe: 1.284
  • cpu-frequenztabelle.png
    cpu-frequenztabelle.png
    1,4 KB · Aufrufe: 1.095
  • cpu-time-in-state.png
    cpu-time-in-state.png
    1,3 KB · Aufrufe: 1.125
  • insmod.png
    insmod.png
    1,3 KB · Aufrufe: 1.147
  • defymini_oc_v0.2.zip
    2,5 KB · Aufrufe: 141
  • defymini_oc_v0.3.zip
    3,5 KB · Aufrufe: 160
Zuletzt bearbeitet:
So, erste Erfahrungen mit anderen FWs habe ich schon erhalten, ich passe das Modul weiter an. Wenn es Abstürze gibt, dann weil die Speicheradressen der Strukturen für die Frequenztabelle und die CPU-In-State-Tabellen in den anderen Firmwares von denen meiner FW abweichen. Da gibt's zwei Möglichkeiten - adresse mitliefern oder die Modifikation dieser Tabellen deaktivieren. Das eigentliche Übertakten benötigt diese Datenstrukturen nicht, nur die "GUI" braucht die zur Darstellung. Wem also ein reines Übertakten reicht, ohne dass die Frequenzen in CPUSpy und Co. angepasst werden, der melde sich.

Viele Grüße!
 
Huhu :)

habe auch unter anderem ein defy mini, und habe versucht mithilfe von deinem mod ein paar mhz raus zu kitzeln. jedoch startet es direkt neu...

habe auch versucht mithilfe von cat /proc/kallsyms | grep -A 1 pll0_960_pll1_245_pll2_1200_pll4_800_25a daten zu bekommen, jedoch bekomme ich als antwort folgendes:

# cat /proc/kallsyms | grep -A 1 pll0_960_pll1_245_pll2_1200_pll4_800_25a
cat /proc/kallsyms | grep -A 1 pll0_960_pll1_245_pll2_1200_pll4_800_25a
grep: not found
write: Broken pipe

was mache ich falsch? sorry bin in solchen sachen ein echter noob. (habe schon geflasht und gemodded jedoch habe ich von der adb schnittstelle keine ahnung...

wäre für hilfe sehr dankbar!

liebe grüsse

peter

edit: habs doch noch mithilfe eines anderen geschafft :) nun sind es 662 mhz

die adresse war anders:

# busybox insmod /system/defymini_oc.ko pll2_l_val=69 acpu_freq_tbl_addr=0xc0755
bdc cpufreq_stats_tbl_addr=0xc0789124
busybox insmod /system/defymini_oc.ko pll2_l_val=69 acpu_freq_tbl_addr=0xc0755bd
c cpufreq_stats_tbl_addr=0xc0789124

nun ist alles in butter :) danke :D

P.S.: wie hoch kann ich eigentlich gehen? bis auf die original 800 mhz? hab bis val=70 getestet also 672 mhz...
 
Zuletzt bearbeitet:
Zieh dir doch mal busybox aus dem PlayStore. Dann sollte ein grep dabeisein. Welche Firmwareversion hast Du im Einsatz?

Gesendet von meinem Genio mit der Android-Hilfe.de App
 
nun ist alles tutti :) hab die 0A.1F.0E
TNBST_4_0A.1F.0ERPS

schon rückmeldungen wie hoch man gehen kann? :D

EDIT: bei mir ist bei 76 definitiv schluss... irgend ein weg das nach einem reboot automatisch zu laden?

grüsse
 

Anhänge

  • shot_000001.jpg
    shot_000001.jpg
    28,7 KB · Aufrufe: 406
Zuletzt bearbeitet:
69 läuft bei mir ganz gut, absolut stabil.

Zum Thema autostart: im xda-Thread zu diesem Modul wurde dazu schon etwas gepostet.

Gesendet von meinem Genio mit der Android-Hilfe.de App
 
Zuletzt bearbeitet:
hatte die gar nicht ermittelt sondern ergoogled...

TNBST_4_0A.1F.10RPS_flex_WE_Retail_CEE_v2:

0xc0755bdc 0xc0789124

also bei mir siehts dann so aus:

busybox insmod /system/defymini_oc.ko pll2_l_val=76 acpu_freq_tbl_addr=0xc0755bdc cpufreq_stats_tbl_addr=0xc0789124

würde ja nen link posten aber :D denke das das nicht so erwünscht ist
 
Neee, passt schon. Ich kann mir fast vorstellen, wo Du die Adressen gefunden hast... :)
 
...neue Version online. Jetzt mit Spannungs-Regelung per Parameter. Siehe Post #1.

Viele Grüße!
 
Scheint so das 700 Mhz dann das Maximum ist...oder?^^ Trotzdem tolle Arbeit!
 
Ja, schneller geht's wohl leider nicht. Wobei ich immer noch versuche, Divisor 1 für PLL0 nutzen zu können (960 / 1 = 960 MHz). Das Problem scheint mir nämlich nicht der zu hohe CPU-Takt zu sein, sondern die extreme Übertaktung des PLL2.
 
Zurück
Oben Unten