Undervolting the dragon - experiences and settings - Oppo Find 5
Hey, if anyone is is interested in undervolting the CPU please post your experiences here.
I have collected some basic data on my phone using maxwens kernel (version 201306252333) and XenonHD ROM (first release). My CPU is marked as faster.
Tried to undervolt the device as much as possible, while still maintaining stability under full load. Full load being wifi, bluetooth and GPS all running, CPU @ 100% load, minimal GPU load (ran at 325MHz most of the time) and screen brightness at ~33%.
The data I was most interested in was the temperature difference between running stock and undervolted settings at all frequencies. This is presented further down in the post.
The tools I used were Trickster MOD (works only with maxwells kernel):
monitoring CPU temperature
quickly changing voltage levels
forcing CPU frequency to stay locked, to ensure I achive maximum undervolt at each frequency step
and StabilityTest to fully load all cores.
A few tips for those who will attempt this.
Thermal throttling starts to kick in at 60+C and kicks down your clock (even when min and max are locked into one frequency) to keep temperatures in check. This can be disabled, but do be careful if you decide to do that.
Have Wifi, bluetooth enabled, when testing for stability also turn GPS on and try to get a lock. Doing this with full load will crash the device, where as only full load without GPS locking it would have passed. You don't want your Oppo to reset on you when you need it most would you?
Do note, I did not let the device cool down for each frequency. I started at the maximum to warm up the whole phone. After that I started at the highest frequency and worked my way down continuously while giving it a minute to stabilize, ensuring that the device is thermally saturated (e.g. the whole phone kept warm). Since the temperature should only get lower, I figure this is the most correct way to collect the temperature data and compare results. The device layed on a wooden desk, so no heatsinks were involved, not even my hands
As for the raw numbers, here they are.
With a hot device, going from maximum frequency to lowest frequency
Code:
╔═══════════╦════════════════╦═════════════════╦════════════════════╦═════════════════╗
║ Frequency ║ Undervolt (mV) ║ Temperature (C) ║ Stock voltage (mV) ║ Temperature (C) ║
╠═══════════╬════════════════╬═════════════════╬════════════════════╬═════════════════╣
║ 1512 ║ 1025 ║ 76 ║ 1125 ║ 79 ║
║ 1458 ║ 1000 ║ 74 ║ 1112 ║ 79 ║
║ 1350 ║ 950 ║ 71 ║ 1100 ║ 78 ║
║ 1242 ║ 925 ║ 69 ║ 1075 ║ 77 ║
║ 1134 ║ 900 ║ 66 ║ 1050 ║ 75 ║
║ 1026 ║ 750 ║ 61 ║ 1000 ║ 68 ║
║ 918 ║ 725 ║ 59 ║ 975 ║ 64 ║
║ 810 ║ 700 ║ 58 ║ 962 ║ 62 ║
║ 702 ║ 700 ║ 56 ║ 925 ║ 61 ║
║ 594 ║ 700 ║ 55 ║ 900 ║ 58 ║
║ 486 ║ 700 ║ 54 ║ 875 ║ 56 ║
║ 384 ║ 700 ║ 51 ║ 850 ║ 54 ║
║ 270 ║ 700 ║ 50 ║ 850 ║ 52 ║
║ 162 ║ 700 ║ 50 ║ 850 ║ 51 ║
╚═══════════╩════════════════╩═════════════════╩════════════════════╩═════════════════╝
And a quick chart
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
With a cold device, going from minimum frequency to maximum frequency
Code:
╔═══════════╦════════════════╦═════════════════╦════════════════════╦═════════════════╗
║ Frequency ║ Undervolt (mV) ║ Temperature (C) ║ Stock voltage (mV) ║ Temperature (C) ║
╠═══════════╬════════════════╬═════════════════╬════════════════════╬═════════════════╣
║ 162 ║ 700 ║ 38 ║ 850 ║ 39 ║
║ 270 ║ 700 ║ 38.5 ║ 850 ║ 40 ║
║ 384 ║ 700 ║ 39 ║ 850 ║ 40 ║
║ 486 ║ 700 ║ 42 ║ 875 ║ 43 ║
║ 594 ║ 700 ║ 44 ║ 900 ║ 45 ║
║ 702 ║ 700 ║ 45.5 ║ 925 ║ 46 ║
║ 810 ║ 700 ║ 46 ║ 962 ║ 48 ║
║ 918 ║ 725 ║ 48 ║ 975 ║ 50 ║
║ 1026 ║ 750 ║ 50 ║ 1000 ║ 53 ║
║ 1134 ║ 900 ║ 56 ║ 1050 ║ 59 ║
║ 1242 ║ 925 ║ 58 ║ 1075 ║ 64 ║
║ 1350 ║ 950 ║ 60 ║ 1100 ║ 68 ║
║ 1458 ║ 1000 ║ 65 ║ 1112 ║ 71 ║
║ 1512 ║ 1025 ║ 69 ║ 1125 ║ 75 ║
╚═══════════╩════════════════╩═════════════════╩════════════════════╩═════════════════╝
I will update OP with a table and chart of what the situation looks like when I start with a cold device from the lowest frequency and work my way up to the highest (have a few datapoint already, it looks more or less the same, temperatures are lower though since the device is never fully saturated with heat).
All in all, undervolting does seem to have a positive effect on temperature. :victory:
Whats most interesting from this experiment is that the CPU cools off a lot faster when undervolted compared to stock voltage. which is a huge boon.
By cooling off faster, I mean the temperature CPU reaches when it goes to a lower frequency under full load. I did not include time measurements, I should have though :\ Alas, it was 1 to 2 minutes each time I lowered the frequency to let the CPU/phone shake off some heat.
Again, the reason as far as I can conclude, when not undervolted the temperature stays up so high (on higher frequencies and also lower) is that the CPU is producing the same amount of heat that is getting radiated away from the phone. By undervolting CPU produces less heat, the radiated heat stays the same and as a consequence the CPU cools down faster. I should definitely try the same test in different ambient temperature environments, since that should play a huge factor. Also a pretty big factor should be sun exposure, not sure how to procede with that. I'll try to mimic GPS dashboard usage in a car, e.g. the backside gets partial sun exposure.
TODO:
✓ Post data when starting from a cold device and ramping the frequency from low to high. Not sure if this represents any kind of device use though. More data is always nice.
Repeat measurements @ different ambient temperatures (also humidity?)
And ideas or tests of your own are most welcomed!
Edit 30.6.2013:
Added cold device test.
I'll just reserve a few posts, just in case.
A one.
And a two.
And a three.
Thanks for this post-
Unfortunately I have a a Slow binned CPU (for those who don't know what this means, check this out) and my default voltages are very high (1250 @ 1512MHz. 950 @ 162MHz). I can attest that my device can get quite hot (60+°C)
Running JellyBeer v4.31 with maxwen's 6/30 kernel. Will give undervolting an extended look and report back- mine can act as a "worst case scenario" as it seems less than 2% of the 8064s are binned as slow... just my luck :silly:
The binning process is irrelevant. To be sure, you have to try to undervolt, it could be better then Fast version AFAIK, though it is a long shot.
I can UV lower 25mv than you with XenonHD and maxwen kernel. I believe the temperature is much lower .
Zanr Zij said:
I can UV lower 25mv than you with XenonHD and maxwen kernel. I believe the temperature is much lower .
Click to expand...
Click to collapse
How, maxwens kernel will not allow me to go under 700mV. The setting shows that it is lower, but in reality it is stuck at a minimum of 700.
honf said:
How, maxwens kernel will not allow me to go under 700mV. The setting shows that it is lower, but in reality it is stuck at a minimum of 700.
Click to expand...
Click to collapse
correct
there is a hard limit for now
Sent from my Find 5 using xda app-developers app
honf said:
How, maxwens kernel will not allow me to go under 700mV. The setting shows that it is lower, but in reality it is stuck at a minimum of 700.
Click to expand...
Click to collapse
I'm talking about higher clock. Voltage of tops clock speed will be the most important effect to temperature . At 1512MHz I set 1000mv with maxwen kernel, 987mv with faux kernel.
Sent from Oppo Find [email protected]
Zanr Zij said:
I'm talking about higher clock. Voltage of tops clock speed will be the most important effect to temperature . At 1512MHz I set 1000mv with maxwen kernel, 987mv with faux kernel.
Sent from Oppo Find [email protected]
Click to expand...
Click to collapse
Ah! Good undervolt on that I can't push it lower without it reseting under load.
honf said:
Ah! Good undervolt on that I can't push it lower without it reseting under load.
Click to expand...
Click to collapse
Maybe because I have faster chip!
Sent from Oppo Find [email protected]
Related
[Q] Default (stock) frequency/voltage table?
Hi! Please help me clarify what the stock Nexus 7 CPU frequencies and voltages are. I tried a few kernels, and each of them seems to have its own set of frequencies and voltages, often differentiated by ~50 mV. For example, franco r23 kernel has the following (I took just a few values): 100 MHz = 850 mV, 1 GHz = 1025 mV, 1.3 GHz = 1125 mV motley 4.1.2 classic kernel (updated by Metallice): 520 MHz (lowest) = 800 mV, 1.05 (doesn't have 1.00) GHz = 975 mV, 1.3 GHz = 1075 mV M-kernel a2 by Metallice: same as above faux b8es: 550 MHz (lowest) = 800 mV, 1.15 (doesn't have 1.00) = 975 mV, 1.3 GHz = 1100 mV So what is the stock frequency/voltage table? Could someone please post it here or let me know how to get if from my device? Thanks in advance!
[Q] franco r41-42 cannot change voltage of individual frequencies?
Hello xda forums. I've recently come into posession of a Nexus 7 (C80) and beside from a slight lift on the left that gets a little worse from heat and the screen flicker issue, it works fine. I've been trying to undervolt this thing using franco's kernel (tried r41 and r42) but noticed a very peculiar issue apparent in Trickster Mod (which what I was using). It seems that changing the voltage for a single frequency has no effect, while applying a global offset seems to take effect. Let me try to explain this further... Let's say I want to undervolt the 1300 MHz frequency, and want to try 975 mV. So I run Stability Test app in the background and set performance governor. This pretty much ensures the tegra 3 is running at 1.3 GHz. So I go in trickster mod, "Specific" tab, and I tap 1300 Mhz and I set 975 mV and press the tick mark at the top to apply... It says "Applied". No crash... Then I try 950 mV... still no crash, 925, 900, 700 (!), no crash... so I reboot the n7 and try to reach 975 mV by applying a global offset of -150 (stock is 1125 mV for 1.3 GHz as it appears to me). Immediately after I tick apply, I get freeze / reboot, meaning it worked. Using the global offset method, I can get stable UV by a global offset of -75 mV (ie: 1050 mV for 1.3 GHz) on my N7. In both cases, I verified that changing 1 frequency or changing all of them does apply correctly, I opened a terminal and su'd and I did a: cat /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table it shows the expected results, but it doesn't seem to actually take effect when changing 1 frequency only (otherwise it would have froze by now). Am I the only one missing this ? Is this a bug in trickster ? Is there a hidden catch ? ROM: SmoothROM 4.3 Kernel: Franco Kernel r41 and r42 (tested this behavior on both).
First, your post is very difficult to read. You are using "MHz" for both frequency and voltage (in mV). I can't speak to the kernel you're using, but 1300mhz is one of the frequencies that is not "directly" supported as a voltage set point on the Tegra 3, as far as I can tell. Per my understanding of the chip, the voltage set points are separate from the frequency set points, and it uses the "closest" one. At least with the M-Kernel (somewhat overclocked), I have the following frequency steps (in mhz): 51, 102, 204, 340, 475, 666, 860, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700 However, the frequency set points are: (LP core) 204, 342, 475, 555, 666 (G core) 550, 770, 910, 1050, 1230, 1280, 1330, 1370, 1400, 1500, 1600, 1700 As the chip picks the "closest" voltage, what this means is that for the 1300mhz frequency, the 1280mhz slot is the one selecting the voltage. This also means that you cannot set the voltage for each frequency step in some cases, as multiple frequencies may share a slot. You may have to look at the kernel settings directly through the exported variables if TricksterMod is not displaying the correct data. For me, I can only get down to 1005-1000mv at 1300mhz. What do you get when you cat /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table ? On M-Kernel a33, I get: Code: 1600mhz: 1095 mV 1500mhz: 1040 mV 1400mhz: 1000 mV 1370mhz: 1000 mV 1330mhz: 1005 mV 1280mhz: 1005 mV 1230mhz: 1005 mV 1150mhz: 965 mV 910mhz: 915 mV 910mhz: 915 mV 770mhz: 850 mV 770mhz: 850 mV 550mhz: 800 mV 550mhz: 800 mV
I apologize for the difficulty of reading my post. The issue is difficult to explain precisely and I was in haste. I've edited my post to fix some mistakes, thanks for the feedback. on Franco Kernel (r41), I get the following table on reading the table directly (without any UV applied). Trickster is displaying the same readings. Code: 1300 1125 1200 1100 1100 1075 1000 1050 900 1025 800 1000 700 975 600 950 500 925 400 900 300 875 200 850 100 825
Very interesting. That doesn't map with what I've seen of the Tegra3 documentation elsewhere. I wonder if the kernel is setting values that the hardware doesn't support.
[Q] What is Best UnderVolt Table for Power Save
iam want to know what is the best Note 3 Eynos UV Table for Power Save and best Battery iam using GoodHannry Kernel V3-A may you share ur Table to find out best Battery and Power Saving and say ur Kernel Version My Table is Very Stable For CA7 250 Mhz - 825 300 Mhz - 825 350 Mhz - 862 400 Mhz - 900 450 Mhz - 937 500 Mhz - 975 550 Mhz - 1025 600 Mhz - 1075 650 Mhz - 1137 For CA15 800 Mhz - 750 900 Mhz - 775 1000 Mhz 825 1100 Mhz - 850 1200 Mhz - 875 1300 Mhz - 900 1400 Mhz - 925 1500 Mhz - 950 1600 Mhz - 987 1700 Mhz - 1025 1800 Mhz - 1087 1900 Mhz - 1137
Finally: Underclocked and much cooler GPAD
At first... sorry for my english. Standard disclaimer. I am not responsible for any damage or problems you may have! Use at your own risk. Any try to underclock in the past with many apps get failed for Qualcomm mpdecision control of cpu frequency... ONLY 1st core are underclockable, disabling mpdecision with trickster mod give some results... randomly. Running antutu many times we get worst results when cpu is hot. It's the Thermald that scale the frequency according to a table in respect of the temperature... A simple idea... a simple trick... edit thermald! edit the file: /system/etc/thermald-8064.conf and reboot. original: Code: [pa_therm0] sampling 5000 thresholds 44 47 50 53 57 60 70 thresholds_clr 40 45 48 51 55 58 61 actions cpu+gpu+battery+hotplugcpu+lcd+fps cpu+gpu+battery+hotplugcpu+lcd+fps cpu+gpu+battery+hotplugcpu+lcd+fps cpu+gpu+battery+hotplugcpu+lcd cpu+gpu+battery+hotplugcpu+lcd cpu+gpu+battery+hotplugcpu+lcd cpu+gpu+battery+hotplugcpu+lcd action_info 1728000+400000000+1+0+255+60 1512000+400000000+2+2+231+60 1242000+400000000+3+2+219+54 1242000+320000000+3+2+200 1134000+320000000+3+2+185 1134000+200000000+4+2+185 1134000+128000000+4+3+145 [batt_therm] sampling 5000 thresholds 350 380 410 440 470 thresholds_clr 340 370 400 430 460 actions cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu action_info 1728000+218+400000000+0+0 1728000+180+320000000+0+0 1134000+180+320000000+1+0 1134000+180+200000000+2+0 1134000+128+200000000+2+2 modified: (you can edit the values according to your needs, for me this is the best performance/cooling) Code: [pa_therm0] sampling 5000 thresholds 14 44 47 50 53 57 60 70 thresholds_clr 10 40 45 48 51 55 58 61 actions cpu+gpu cpu+gpu+battery+hotplugcpu+lcd+fps cpu+gpu+battery+hotplugcpu+lcd+fps cpu+gpu+battery+hotplugcpu+lcd+fps cpu+gpu+battery+hotplugcpu+lcd cpu+gpu+battery+hotplugcpu+lcd cpu+gpu+battery+hotplugcpu+lcd cpu+gpu+battery+hotplugcpu+lcd action_info 1350000+320000000 1350000+320000000+1+0+255+60 1350000+320000000+2+2+231+60 1242000+320000000+3+2+219+54 1242000+320000000+3+2+200 1134000+320000000+3+2+185 1134000+200000000+4+2+185 1134000+128000000+4+3+145 [batt_therm] sampling 5000 thresholds 350 380 410 440 470 thresholds_clr 340 370 400 430 460 actions cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu cpu+lcd+gpu+battery+hotplugcpu action_info 1350000+218+320000000+0+0 1350000+180+320000000+0+0 1134000+180+320000000+1+0 1134000+180+200000000+2+0 1134000+128+200000000+2+2
Very nice, will have to give this a go!
So to convert this to human, both stock and mod throttles down to cpu 1.13ghz cpu and 128mhz gpu at 70c and act about the same till 50c. below 50c the mod throttles down to 1.35ghz, while stock goes to 1.7ghz. That seem about right?
you can check CPU states with perfmon http://forum.xda-developers.com/showthread.php?t=1933284 CPU temp with xposed module gpu with trickster mod
nightanole said: So to convert this to human, both stock and mod throttles down to cpu 1.13ghz cpu and 128mhz gpu at 70c and act about the same till 50c. below 50c the mod throttles down to 1.35ghz, while stock goes to 1.7ghz. That seem about right? Click to expand... Click to collapse they throttle also lcd, fps, battery i've introduced a step at 14 to lock the freq at a cooler temp. throttle are commanded by thresholds and thresholds_clr value. in original at first step: "thresholds" 44 when temp raise 44 then throttle by "actions" value "thresholds_clr" when temp below 40 then reset value (clear). and so on 44 -> 47 -> 50 -> and 40 <- 45 <- 48 <-
First, great finding dude! But, you have to change the "holes" in your temps, the temperatures are a range, like 10-14 and 44-10, you have a hole in 15 to 43, you have to change to 10-43 for it to work like you want. And not leave any hole in the other temps too. And not forget that the file need to be rw-r-r.
[Not a GUIDE, just a tribute] How I undervolted my Note 8.0
Hi all, I've made a video about undervolting following the guide that omniwolf made. It's nothing more than me talking (too much) about it and actually doing it, I'm really not adding anything to the guide itself besides the fact that you can watch me making a fool of myself, think that if I can do it, anybody can... So it's more an encouragement than anything else The voltages I got are: 100 MHz - 675 mV 200 MHz - 700 mV 300 MHz - 725 mV 400 MHz - 750 mV 500 MHz - 800 mV 600 MHz - 825 mV 700 MHz - 850 mV 800 MHz - 900 mV 900 MHz - 925 mV 1000 MHz - 950 mV 1.1 GHz - 950 mV 1.2 GHz - 950 mV 1.3 GHz - 1000 mV 1.4 GHz - 1050 mV 1.5 GHz - 1075 mV 1.6 GHz - 1150 mV Please don't just copy them, every CPU is different and they may not work for you. I also raised them all by 25 mV to avoid instabilities. I don't have results and probably I will never have them... So I can't actually tell how much this affects battery life and temperature. I'm not convinced it makes a lot of sense to undervolt a tablet, since the screen is pretty much going to be the main drainer anyway, that's why I'm not focusing on collecting data to support the usefulness of the process Did anyone else try undervolting the Note 8 (old thread about it here)? Also I'd be glad to hear the opinion of someone who's more qualified than me (basically anybody) about the subject in general and about undervolting this specific device Cheers