Rom cookers: if you include this module in your ROM, please make a link to this post in your release post, so your users can know how to work with it and update the module themselves
Intro: (dev post)
Since the X10 kernel is working, we might have a hope that someday we will have our custom kernels. If we can have custom kernels, we can do the overclocking easily.
Until that day, we will still have to overclock with modules. To make overclocking works with our current kernel, as far as I can see, we need to do the following things:
1. Patch cpufreq data to change maximum reported freq (these value will be read by Android for further controls). cpufreq will then call the low-level acpuclock functions to change real cpu freq.
2. Patch acpuclock data + code to change real cpu freq.
Right now I'm working a proof-of-concept module, with finished 1 and half of 2. I will need to patch acpuclock code in the running kernel to make the frequency applicable.
That means, right now, Android reported that I have a 800MHz MSM7227, although it's running at 600MHz, and cpufreq's governor accepts to change to the maximum 800MHz (it's 600MHz for real). We will need to patch acpuclock code to change PLL and apply the correct divisor.
Source on github : https://github.com/doixanh/X8Features
Release history
April 11. v004. Default to 691MHz. Multiple frequencies are available for SetCPU: from 614MHz to 826MHz. You can now change frequencies with SetCPU - much like with custom kernels! You can even SetCPU freq at boot.
April 07. v003. Compatible with SetCPU. Easier for code maintenance.
April 06. v002 for mini pro. x8oc module for x10 mini pro released! Be warned: I didn't have your x10mini pro hardware so I didn't test it throughoutly.
April 06. v002 for mini. x8oc module for x10 mini released! Be warned: I didn't have your x10mini hardware so I didn't test it throughoutly. 710MHz was reported not too stable. A lower freq is more stable.
April 06. v002. Experimental! It maybe very unstable! Undervoltage for all frequencies except the max freq (Reduced voltages for 128MHz, 245MHz, 320MHz, 480MHz). This can potentially save battery. I need test results for saving battery from you guys
April 05. v001. Default to 710MHz.
Requirements:
- Rooted
- Baseband x15
- xRecovery (for automatic installtation)
- Dare!
Installation:
a. Manual installation : it will be better if you can do this way.
- Download appropriate x8oc-vXXX.zip (for X8), or x8oc-vXXX-x10m.zip (for X10 mini), or x8oc-vXXX-x10mp.zip (for x10 mini pro) below, unzip
- Remount /system as rw
- Push x8oc.ko in to /system/lib/modules
- Edit /system/etc/hw_config.sh, add one line at the beginning
Code:
insmod /system/lib/modules/x8oc.ko # x8 overclock
For people who want to set specific freq at boot, write the following instead of the code above:
Code:
# x8 overclock
insmod /system/lib/modules/x8oc.ko
sleep 2
echo xAB > /proc/x8oc
Where AB is your desired code for that frequency. Test the frequency carefully before applying it at boot!
(you can edit hw_config.sh by pulling it to your PC, edit, and push it back)
- Reboot your phone
b. Automatic installation : much like x8gesture, I will have to prepare update.zip for each ROM. I'm pretty busy now, so be patient.
General instruction
- When you install x8oc, SetCPU will not recognized the new max frequency. Don't touch the slide and/or change the governor. If you do that, the new frequency will be lost. You will have to reboot your phone to get the new freq.
- For geeks only: it is possible to change maximum frequency after you install x8oc. With following command, you can replace AB to other values to change max freq:
Code:
echo xAB > /proc/x8oc
20 to change to 614MHz
21 to change to 634MHz
22 to change to 653MHz
23 to change to 672MHz
24 to change to 691MHz
25 to change to 710MHz
26 to change to 730MHz
27 to change to 749MHz
For example, set to 749MHz:
Code:
echo x27 > /proc/x8oc
This feature still works with v004
Somebody asked about the meaning of AB above. If you look at the source you will understand
In short :
- AB is stored in hexadecimal
- Max frequency = AB (in decimal) * 19.2MHz
Example:
AB = 27 means AB = 0x27 = 39 (in decimal)
Real frequency = 39*19.2 = 748.8 MHz
You can put 28, 29, for even higher frequency... but I don't recommend to do that. It was unstable for me.
x10 mini / x10 mini pro users:
Support for x10 mini / x10 mini pro has been added since 06-04-11. However, I don't have your hardware so you must test this module before install it:
- Push x8oc.ko to /system/lib/modules
- Run the following command
Code:
insmod /system/lib/modules/x8oc.ko
If the phone is still working, no crash, no black screen, then it works.
Until you're sure that it works with your hardware, don't install it to hw_config.sh or you will get boot loops and may severely damage your hardware
Disclaimer
This module is dangerous! It may cause severe damage to your hardware. I'm not responsible if this module kills your lovely phone. Use it at your own risk!
Donations are welcome
PLEASE DON'T SPAM IN THIS THREAD WITH UNCONTRIBUTED POSTS.
Can you share the source code of your module?
I was too lazy to build a separated module for OCing Everything is a mess inside my current x8gesture module
I'll try to do something more and then separate OC into a new module.
info about MSM7227 CPU:
http://pdadb.net/index.php?m=cpu&id=a7227&c=qualcomm_msm7227
Holy sh*t. They included bunches of controllers inside this MSM 7227
Max. 800MHz Qualcomm MSM7227 Turbo, Embedded 320MHz DSP (GSM, GPRS/EGPRS Multislot Class 12, EDGE, UMTS Release 6, 7.2 Mbps HSDPA, HSUPA 5.76 Mbps, MBMS baseband), 400MHz modem processor, Adreno 200, OpenGL ES 2.0, OpenGL ES 1.1, OpenVG 1.1, EGL 1.3, Direct3D Mobile, SVGT 1.2, DirectDraw,
Click to expand...
Click to collapse
Is there anyway to enable that turbo mode by moding? It must be locked somewhere, the safe clock is 600mhz, but it might run 800mhz or more stable too, might be battery draining issue, or overvoltage necessity but with scaling that should not be a real issue, if only used to extreme situations, and, for a bit of time.
f.e. Samsung Galaxy Ace has same CPU and it run at 800Mhz
This is a great project and it looks very promissing.
ZTE Blade has same cpu and they had problems overclocking just the main core, but in the end they solved it, I guess you could take a look at their solution as well.
And thanks again for the dualtouch module.
I read many overclocked kernel sources for MSM7227 in difference devices. What they did was to modify acpuclock.c :
1. add new freqs to freq_table
2. add new freqs to clkctl_acpu_speed arrays
3. modify acpuclk_set_div to set PLL for overclocked freqs
Because acpuclock is initialized very early during boot process, cpufreq (initialized much later) will read those available freqs from acpuclock to apply to its governors.
In our case, because we cannot modify acpuclock in the kernel before it's initialized, our module will be loaded much later than both acpuclock and cpufreq. Therefore, my approach is to modify (inline patch) both acpuclock and cpufreq in memory, while the kernel is running.
So far, as mentioned in OP, I modified cpufreq and acpuclock data (as in 1. and 2.), so that Android thinks that max freq is set at 800MHz. We will have to do some inline memory patches to acpuclock function to change PLL for freqs more than 600MHz during runtime. More precisely, we need to patch acpuclk_set_div function.
I did a quick study about ARM instruction set, looked for branch (and branch with links) instructions. I managed to redirect calls to acpuclk_set_div to my own function in module, so that acpuclock_set_rate calls to my function, instead of the original one. However, it seems that the param received by my function is always NULL.
Looking for reasons and solutions. Any suggestions?
@racht: no, we thank you for your hard work in your Hackdroid ROMs.
It seems that I made a mistake. acpuclk_set_div was not separated as a function. Instead, the compiler included it in the caller function (acpuclk_set_rate). This will be a big big big problem for us to hijack the call.....
Hope everything works out! 200mhz is a big jump
Can u share your sources?
Maby i can help you
Sent from my U20i using XDA Premium App
I will need to rewrite the module, because everything is placed in my x8gesture I will do it soon.
The initial commit is pushed to github at : https://github.com/doixanh/X8Overclock
All contributions are welcome.
as an example of omap3
http://code.google.com/p/milestone-overclock/
This project consists of a kernel module for OMAP3 phones with Android to unlock any processor frequency/voltage combination and a companion graphical app to ease the configuration. The phone must be rooted so that the kernel module can be loaded.
The module has an interface in /proc/overclock/* that allows enabling and disabling of overclock in runtime without rebooting. No flashing of custom roms or kernels is needed, since that is not even possible with the Milestone, Droid X and others.
andrej456 said:
as an example of omap3
http://code.google.com/p/milestone-overclock/
This project consists of a kernel module for OMAP3 phones with Android to unlock any processor frequency/voltage combination and a companion graphical app to ease the configuration. The phone must be rooted so that the kernel module can be loaded.
The module has an interface in /proc/overclock/* that allows enabling and disabling of overclock in runtime without rebooting. No flashing of custom roms or kernels is needed, since that is not even possible with the Milestone, Droid X and others.
Click to expand...
Click to collapse
Thats good idea but edit is needed because X8 does not have 1,2 processor
EDIT: With 800 processor thats so close x10 1000 processor,cant imagine how fast x8 will be
as-mario said:
Thats good idea but edit is needed because X8 does not have 1,2 processor
EDIT: With 800 processor thats so close x10 1000 processor,cant imagine how fast x8 will be
Click to expand...
Click to collapse
to not fit in the x8, but the wiki to be useful
if we take this as an example you can write a module
sorry for my english
It seems that my approach is like milestone-overclock. Their CPU is different, but we can know that we're having a good direction.
Good news: I managed to hijack calls to acpuclk_set_rate (the function contains acpuclk_set_div). This way, we can write our own set_rate and set_div function.
Destination is not too far away
YES, YES and YES! It's running at 684MHz! Will upload a screenshot soon!
This below screenshot is taken at 710MHz with only CPU test
It seems that our CPU is not stable above 748MHz.
I have a Star S9500 with MTK6589 Cortex-A7 Quad Core @ 1.2GHz with PowerVR SGX544 Single Core.
I have the Kernel Source extracted from an Acer smartphone here: https://github.com/varunchitre15/MT6589_kernel_source .
In the MT6589_kernel_source/mediatek/platform/mt6589/kernel/core/mt_cpufreq.c file, in the line 127 has the code:
Code:
static unsigned int g_max_freq_by_ptp = DVFS_F1; /* default 1.2GHz */
If I change it to:
Code:
static unsigned int g_max_freq_by_ptp = DVFS_F0_0; /* OC 1.7GHz */
it changes from 1209000 KHz to 1703000 KHz, as in the line 70:
Code:
#define DVFS_F0_0 (1703000) // KHz
#define DVFS_F0_1 (1599000) // KHz
#define DVFS_F0_2 (1508000) // KHz
#define DVFS_F0_3 (1404000) // KHz
#define DVFS_F0_4 (1300000) // KHz
#define DVFS_F1 (1209000) // KHz
#define DVFS_F2 ( 988000) // KHz
#define DVFS_F3 ( 754000) // KHz
#define DVFS_F4 ( 497250) // KHz
I think I don't need to change de voltage as it is already set to the max supported by the Kernel.
I don't have problems with overheating or extreme battery drain, as I have the CPU Master Pro app and when the screen is off or he is overheating it sets to 500MHz x4.
I want to OC the GPU too, but I can't find the line to change te clock in the MT6589_kernel_source/mediatek/platform/mt6589/kernel/core/mt_gpufreq.c file.
I already built the Kernel in Debian OS succefully, but now I don't know how to put to .img to flash it!
Anyone can build the Kernel and publish it or just tell me what must I do?
EDIT: I just want to be able to play Real Racing 3 at 960p. I only get a great performance at standard FWVGA resolution and if I set 960x1708 @ 390 DPI screen the performance is very good except in Real Racing 3 and other graphical intense games.
Best regards,
Ivan Santos.
IvanSantosPT said:
I have a Star S9500 with MTK6589 Cortex-A7 Quad Core @ 1.2GHz with PowerVR SGX544 Single Core.
I have the Kernel Source extracted from an Acer smartphone here: https://github.com/varunchitre15/MT6589_kernel_source .
In the MT6589_kernel_source/mediatek/platform/mt6589/kernel/core/mt_cpufreq.c file, in the line 127 has the code:
Code:
static unsigned int g_max_freq_by_ptp = DVFS_F1; /* default 1.2GHz */
If I change it to:
Code:
static unsigned int g_max_freq_by_ptp = DVFS_F0_0; /* OC 1.7GHz */
it changes from 1209000 KHz to 1703000 KHz, as in the line 70:
Code:
#define DVFS_F0_0 (1703000) // KHz
#define DVFS_F0_1 (1599000) // KHz
#define DVFS_F0_2 (1508000) // KHz
#define DVFS_F0_3 (1404000) // KHz
#define DVFS_F0_4 (1300000) // KHz
#define DVFS_F1 (1209000) // KHz
#define DVFS_F2 ( 988000) // KHz
#define DVFS_F3 ( 754000) // KHz
#define DVFS_F4 ( 497250) // KHz
I think I don't need to change de voltage as it is already set to the max supported by the Kernel.
I don't have problems with overheating or extreme battery drain, as I have the CPU Master Pro app and when the screen is off or he is overheating it sets to 500MHz x4.
I want to OC the GPU too, but I can't find the line to change te clock in the MT6589_kernel_source/mediatek/platform/mt6589/kernel/core/mt_gpufreq.c file.
I already built the Kernel in Debian OS succefully, but now I don't know how to put to .img to flash it!
Anyone can build the Kernel and publish it or just tell me what must I do?
EDIT: I just want to be able to play Real Racing 3 at 960p. I only get a great performance at standard FWVGA resolution and if I set 960x1708 @ 390 DPI screen the performance is very good except in Real Racing 3 and other graphical intense games.
Best regards,
Ivan Santos.
Click to expand...
Click to collapse
Why don't you try to upload and share your compiled kernel (i.e zImage) with us, we can test it, and if it's really working, we can work on overclock gpu too..
IvanSantosPT said:
I have a Star S9500 with MTK6589 Cortex-A7 Quad Core @ 1.2GHz with PowerVR SGX544 Single Core.
I have the Kernel Source extracted from an Acer smartphone here: https://github.com/varunchitre15/MT6589_kernel_source .
In the MT6589_kernel_source/mediatek/platform/mt6589/kernel/core/mt_cpufreq.c file, in the line 127 has the code:
Code:
static unsigned int g_max_freq_by_ptp = DVFS_F1; /* default 1.2GHz */
If I change it to:
Code:
static unsigned int g_max_freq_by_ptp = DVFS_F0_0; /* OC 1.7GHz */
it changes from 1209000 KHz to 1703000 KHz, as in the line 70:
Code:
#define DVFS_F0_0 (1703000) // KHz
#define DVFS_F0_1 (1599000) // KHz
#define DVFS_F0_2 (1508000) // KHz
#define DVFS_F0_3 (1404000) // KHz
#define DVFS_F0_4 (1300000) // KHz
#define DVFS_F1 (1209000) // KHz
#define DVFS_F2 ( 988000) // KHz
#define DVFS_F3 ( 754000) // KHz
#define DVFS_F4 ( 497250) // KHz
I think I don't need to change de voltage as it is already set to the max supported by the Kernel.
I don't have problems with overheating or extreme battery drain, as I have the CPU Master Pro app and when the screen is off or he is overheating it sets to 500MHz x4.
I want to OC the GPU too, but I can't find the line to change te clock in the MT6589_kernel_source/mediatek/platform/mt6589/kernel/core/mt_gpufreq.c file.
I already built the Kernel in Debian OS succefully, but now I don't know how to put to .img to flash it!
Anyone can build the Kernel and publish it or just tell me what must I do?
EDIT: I just want to be able to play Real Racing 3 at 960p. I only get a great performance at standard FWVGA resolution and if I set 960x1708 @ 390 DPI screen the performance is very good except in Real Racing 3 and other graphical intense games.
Best regards,
Ivan Santos.
Click to expand...
Click to collapse
Any news? A Kernel upload could help you and the community.
However. Read this http://forum.xda-developers.com/showthread.php?t=1748297
This helped me to recompile a GNex Kernel... added missing SmartassV2 :laugh:
IvanSantosPT said:
I only get a great performance at standard FWVGA resolution and if I set 960x1708 @ 390 DPI screen the performance is very good except in Real Racing 3 and other graphical intense games.
Best regards,
Ivan Santos.
Click to expand...
Click to collapse
Wow, how you can that? 960x1708 @390 DPI.... can you spend a little more time to explain us how we can? :fingers-crossed:
I have Wiko Stairway with this processor (MT 6589), your kernel will work with my phone ?
Maybe this will help to pack to img:
http://forum.xda-developers.com/showthread.php?t=2364271
---------- Post added at 10:26 AM ---------- Previous post was at 10:15 AM ----------
http://forum.xda-developers.com/showthread.php?t=1587411
I use Virtuous Ten Studio (VTS) you can search XDA for it. Quite popular as it unpacks boot.img, allows edits to ramdisk, and you can swap zimage and pack it back together into a new boot.img
Also, it de-compiles, de-odex, blah blah blah.... Pretty much a 1 stop shop. Runs in windows. Sure beats doing all it from a cmd window!
IvanSantosPT said:
I have a Star S9500 with MTK6589 Cortex-A7 Quad Core @ 1.2GHz with PowerVR SGX544 Single Core.
I have the Kernel Source extracted from an Acer smartphone here:
Ivan Santos.
Click to expand...
Click to collapse
Ivan, I'm curious. You have a Star S9500 device. And you're using kernel source from an Acer smartphone???
Uhm, unless I am mistaken, you really shouldn't use kernel source from a different device, as the results could be bad. Unless the devices are identical and branded under a different name.
I also am searching kernel source for my ExPlay X-Tremer which uses the MTK6589 CPU.
Am quite interested in your results.
MD
Hi
Well, sorry but you cant OC an Mediatek SoC, it doesnt use those freq-values. Its still an mystery how to do it on that brand. since they will never share the FULL sourcecode.
All you will be able to do, by changing that is to display an "value" it will be only Visual, And not actually overclocked.
So just stop wasting your time on that. Will never work
You can also ask varun his also an kernel developer with experience on the MTK platform. Still the answer will be the same.
On an side note, you just build an kernel that will only work on the original acer device, not yours. It doesn't work that way lol
Its not all JUST about having the same SoC, there are other things:
Alps, magnetic sensor, proximity, etc that you need to config on kernel boardconfig to work on your device.
For packing /unpacking, since this is an MTK device, the best tool is Bruno Martins pack and unpack scripts:
forum.xda-developers.com/showthread.php?t=1587411
B.Regards
superdragonpt said:
Hi
Well, sorry but you cant OC an Mediatek SoC, it doesnt use those freq-values. Its still an mystery how to do it on that brand. since they will never share the FULL sourcecode.
All you will be able to do, by changing that is to display an "value" it will be only Visual, And not actually overclocked.
So just stop wasting your time on that. Will never work
You can also ask varun his also an kernel developer with experience on the MTK platform. Still the answer will be the same.
On an side note, you just build an kernel that will only work on the original acer device, not yours. It doesn't work that way lol
Its not all JUST about having the same SoC, there are other things:
Alps, magnetic sensor, proximity, etc that you need to config on kernel boardconfig to work on your device.
For packing /unpacking, since this is an MTK device, the best tool is Bruno Martins pack and unpack scripts:
forum.xda-developers.com/showthread.php?t=1587411
B.Regards
Click to expand...
Click to collapse
Exactly, not to mention trying to install a kernel meant for another device could have disastrous results...
As far as Full kernel source, I'm not even sure if the device manufacturers even have it. I suppose a lot of these devices are just "re-branded" clones, as I have been getting nowhere in answer on anything from Ex-Play, even citing GPL and such. "Somebody" has it, as 2 other ROMs (MIUI and Lewa) have 2 available ROMs, but I would guess they use the same zimage, considering they run the same OS version.
With the source, could check freq tables, and see if they use a speedo id that can be faked. But without current source, just don't know.
Still searching for the elusive kernel source
Moscow Desire said:
Exactly, not to mention trying to install a kernel meant for another device could have disastrous results...
As far as Full kernel source, I'm not even sure if the device manufacturers even have it. I suppose a lot of these devices are just "re-branded" clones, as I have been getting nowhere in answer on anything from Ex-Play, even citing GPL and such. "Somebody" has it, as 2 other ROMs (MIUI and Lewa) have 2 available ROMs, but I would guess they use the same zimage, considering they run the same OS version.
With the source, could check freq tables, and see if they use a speedo id that can be faked. But without current source, just don't know.
Still searching for the elusive kernel source
Click to expand...
Click to collapse
All the available kernel sources for the MTK platform can be found on my git:
https://github.com/dragonpt
And from varunchitre15 git:
https://github.com/varunchitre15?tab=repositories
As for OC, it was already tried in the past, yes after moding the kernel freq it shows OC values, but they are only Visual, MTK code is really weird.
About sourcecode, only some OEM's have release those, and it tooked ALOT of efforts for it (Petitions and so on), and all we got was the kernel source of course, and most of it it's NOT buildable (needs some fixs to compile).
As for my OEM, they said, they never got it, lol funny no?
This is one of the most ANTI-GPL, Closed Source Company i ever saw, in these last years...
Also Mediatek uses alot of Hacks on their code, i.e: the compiled zlmage needs an patch on kernel header to boot.
regards
superdragonpt said:
Also Mediatek uses alot of Hacks on their code, i.e: the compiled zlmage needs an patch on kernel header to boot.
regards
Click to expand...
Click to collapse
Thanks Mate. Yeah, looking over the sources, it's quite a mess in there! Tegra3 is so much more in order.
Will have to check my proc, and see which defconfig I use. Seems like a logical place to start. And talk about strange, they use only the Hotpug governor, although it seems several are available, but clearly they aren't set up for the device correctly as only Hotplug works, and the other configs have horrible performance.
Cheers
Moscow Desire said:
Thanks Mate. Yeah, looking over the sources, it's quite a mess in there! Tegra3 is so much more in order.
Will have to check my proc, and see which defconfig I use. Seems like a logical place to start. And talk about strange, they use only the Hotpug governor, although it seems several are available, but clearly they aren't set up for the device correctly as only Hotplug works, and the other configs have horrible performance.
Cheers
Click to expand...
Click to collapse
If you wanna start kernel compiling in this platform, the usuall config.gz wont work, if you are lucky enought you may find some old configs on kernel source code, then the "make oldconfig" should work, if the source doesnt have it then it will be an pain in the a## to compile.
Also some tips:
MTK kernels usually compile only with linaro toolchain 4.6.x or less, higher that this and its gonna be an mess with alot of compiler errors.
About the govs, yes on my tab(6589 soc) seems that the hotplug is the only one working ok, the other 2 govs seems that are only using the first 2 cores.
On the boardconfig, you can add several other govs, and IO,s, but i never add those, i may try that in the future and check if those extra govs work ok.
Regards
superdragonpt said:
If you wanna start kernel compiling in this platform, the usuall config.gz wont work, if you are lucky enought you may find some old configs on kernel source code, then the "make oldconfig" should work, if the source doesnt have it then it will be an pain in the a## to compile.
Also some tips:
MTK kernels usually compile only with linaro toolchain 4.6.x or less, higher that this and its gonna be an mess with alot of compiler errors.
About the govs, yes on my tab(6589 soc) seems that the hotplug is the only one working ok, the other 2 govs seems that are only using the first 2 cores.
On the boardconfig, you can add several other govs, and IO,s, but i never add those, i may try that in the future and check if those extra govs work ok.
Regards
Click to expand...
Click to collapse
Thanks for the tip on the toolchain. I usually use Google's latest. Never installed linaro as I really haven't seen a lot of difference in other testing comparisons. Generates a bunch of errors, but usually on things not specific to my device. Sloppy programming I guess.My guess is it's up to the device manufaturers responsibility to clean up the code.
Cheers
i am interested in under-voltage! very useful for battery time
I will be really happy is someone explains to me how can i overclock my mt6589?
chenrp said:
i am interested in under-voltage! very useful for battery time
Click to expand...
Click to collapse
Check Varun's Git sources, it's there...
rdlegy said:
I will be really happy is someone explains to me how can i overclock my mt6589?
Click to expand...
Click to collapse
There's nothing to explain at this point. It simply CAN'T be Overclocked, Mediatek Code isn't the same as (i.e)Qualcomm ...
(It's so Messy --...)
Regards
mtk and spd are the two biggest chinese chip companies that don't provide source code, you won't be able to modify your device except root it for some work