|
Edited by bronco at 2015-11-28 16:03
I don't know the 'history' of the dvfs settings, just by looking into different sources here and there it seems like it's possible to get a clue who started overclocking/overvolting when.
1) Sane settings in the beginning
According to the linux-sunxi wiki this is somewhat 'Allwinner's SDK' (provided by Tronsmart for their Draco H3 TV box).
Settings therein: (no overclocking and no overvolting, just sane settings that could probably be a bit lower but are OK):
- boot_clock = 1008
- max_freq = 1200000000
- min_freq = 480000000
- boot_freq = 1008000000
- LV_count = 8
- LV1_freq = 1200000000
- LV1_volt = 1300
- LV2_freq = 1008000000
- LV2_volt = 1200
- [no more working entries]
Copy code
2) Overvolting/overclocking done by Xunlong
Again according to the linux-sunxi wiki when Xunlong started it was already overclocked and massively overvolted. BTW: This is really just copy&paste from the fex file inside Xunlong's Android image, the commented values are not from me but are an indication that the person adjusting that increased the values already present in the fex file:
- #boot_clock = 1008
- boot_clock = 1200
- #max_freq = 1200000000
- max_freq = 1536000000
- min_freq = 480000000
- LV_count = 8
- #LV1_freq = 1200000000
- LV1_freq = 1536000000
- #LV1_volt = 1300
- LV1_volt = 1500
- #LV2_freq = 1008000000
- LV2_freq = 1200000000
- #LV2_volt = 1200
- LV2_volt = 1300
- [no more working entries]
Copy code
3) Even more overclocking?
The only difference with loboris' settings is that he also again increased boot_clock, defines also extremity_freq for the CPU cores and added a MALI section with extreme values:- #boot_clock = 1008
- #boot_clock = 1200
- boot_clock = 1536
- extremity_freq = 1536000000
- [mali_para]
- mali_used = 1
- mali_clkdiv = 1
- mali_extreme_freq = 600
- mali_extreme_vol = 1400
Copy code
That means only 2 OPPs are defined with one above 1.2 GHz using the extreme voltage of 1.5V and the other with 1.3V that might be used for all lower clockspeeds. And in my tests it made exactly no difference regarding temperature (again: temperature depends on core voltage) when the H3 idled at 1.2 GHz or 480 MHz --> same voltage for those cpufreqs. When you use the performance governor then it idles at 1.53 GHz and therefore 1.5V will be used (0.1V more than recommended/allowed!). And the temperature of a completely idle SoC increases by more than 10°C compared to reasonable settings (without heatsink it would be even more!). In this state the CPU cores do NOTHING. There is no need to fry a chip that's doing nothing. It's just moronic to do it this way.
4) Possible solutions?
4.1) Boot clock
I've no idea why one would like to adjust this value. The SY8106A voltage regulator is set to 1.2V at boot which should be safe to deal with 1008 MHz.
4.2) Defining a dvfs table providing more and especially better entries
Using a dvfs table that contains more values (and not illegal ones above the upper recommended limit but reasonable ones -- that means "voltage as less as possible until stability is concerned") then most of the thermal issues would automagically disappear. Simply by using a cpufreq governor != performance and adding a few lower values to the table. People could still use peak performance at 1.53 GHz but could start to throw away their fans. But it seems no one likes the idea since 'overclocking is cool'?
I've no idea why nobody chose to add more sane dvfs entries so far. Ok, I've two assumptions:
- Normally it's the device's manufacturer that walks through this stuffs and provides a tested dvfs table containing the lowest voltage values possible. But since Xunlong decided to advertise a 1.2 GHz SoC as being capable of "up to 1.6 GHz" (maybe only to justify the "plus" in the name of the first H3 based OPi?) and therefore needed insane overvolting this was obviously neither the case nor the intention.
- The code responsible for parsing the dvfs table in the old Allwinner kernel seems to be broken somewhat. I tried different settings with more than 8 entries that all failed more or less. Now I have a working table ready to be optimised in an automatic fashion (a script will start with my master table and then walks through every possible setting and decreases voltage unless the first error occurs -- that might take a few days but when my 2nd OPi PC arrives it's his job to do this unattended on its own)
4.3) Who should care?
That some people like the impression running an "up to 1.6 GHz" SBC is one thing. But the other is that due to those weird dvfs settings this is the root cause not just for the thermal issues most users have but also again and again stability issues as described here: http://www.orangepi.org/orangepi ... age=2&fromuid=29411
I'm perfectly fine with people trying to waste energy as much as possible and fry their devices even when idle. But since this is nothing for me or others that don't want to use the H3 the 'pimp my ride' style but let it do some work in an energy efficient way, I provide some little insights and a probably helpful tool to get the idea what's wrong with all H3 OS images: Wrong/missing dvfs table entries leading to heat/stability problems especially when used together with wrong cpufreq governors (performance in this case -- with sane dvfs table entries always a good idea, with the entries currently used a nightmare).
|
|