FS#10714 - iPod Nano 2G battery life improvements, clock scaling and undervolting

Attached to Project: Rockbox
Opened by Michael Sparmann (TheSeven) - Saturday, 24 October 2009, 00:42 GMT
Last edited by Michael Sparmann (TheSeven) - Thursday, 11 March 2010, 02:30 GMT
Task Type Patches
Category Battery/Charging
Status Closed
Assigned To Michael Sparmann (TheSeven)
Operating System iPod Nano 2G
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Here is a patch that tries to reach Apple's battery runtime...
It's scaling the clock from 47923200Hz to 191692800Hz (yes, these frequencies are weird, but they are correct!) and undervolt the CPU core to 1.000V at the high and 0.900V at the low freq.

There are some known issues:
- After USB was connected, you'll need to reboot your ipod, or it will keep the USB controller enabled, which sucks far more current than the backlight.
- Battery_bench is currently broken for Nano2G, I'm looking into fixing this.
- On my iPod, the CPU core could be undervolted to at least 0.800V, but the main system clock started to get unstable at 0.875V, with a significant frequency drop. This results in clearly noticable pitch changes while playing music, when it's boosting/unboosting. Please watch out for this and report it if you have an iPod that is still doing such things at 0.900V.
- I'm also not sure about the upper voltage, my CPU seemed to work fine at 0.975V at the high freq, but I added a small safety margin here.

Please test this and report any instabilites, crashes or other weird behavior, that does only turn up if this patch is applied.
This task depends upon

Closed by  Michael Sparmann (TheSeven)
Thursday, 11 March 2010, 02:30 GMT
Reason for closing:  Fixed
Additional comments about closing:  A different approach has been committed
Comment by Michael Sparmann (TheSeven) - Saturday, 24 October 2009, 11:32 GMT
Fixed some bugs.
Comment by Michael Sparmann (TheSeven) - Sunday, 25 October 2009, 00:13 GMT
rebase to current SVN, and I set the voltage to constant 1.000V now to avoid trouble with the PMU not being able to raise it quick enough. This also avoids talking to I2C and generally needing to wait for anything in set_cpu_frequency.
Comment by Aaron Thompson (reydarz) - Sunday, 25 October 2009, 03:58 GMT
Working for me
Comment by Michael Marley (mamarley) - Thursday, 19 November 2009, 14:10 GMT
This seems to work for me too, but only partially. Running some of the more CPU-intensive Demos, like Cube and Plasma, does not make the CPU boost, so the demos run quite slowly.
Comment by Juliusz Chroboczek (jch) - Friday, 04 December 2009, 00:56 GMT
Failure here.

It initially works fine, but after a few minutes, the pitch of the playback becomes too long by two octaves (playing Ogg). I've checked that reverting this patch fixes the issue on the very same files.
Comment by Alex (Darkknight512) - Saturday, 12 December 2009, 01:31 GMT
Excuse me if I sound noobish but I though the original ARM core clock speed was 200 mhz, I'm wondering why you have 479 mhz on the list. I though this was to save battery life not to overclock the chip in the Nano 2g.
Comment by Michael Marley (mamarley) - Saturday, 12 December 2009, 10:50 GMT
You messed up your conversion.

47923200Hz = 47.92mHz
191692800Hz = 191.69mHz
Comment by Piotrek Marciniak (piotrekm) - Friday, 12 February 2010, 18:39 GMT
Works great for me.
The only inconvenience I noticed is that plugins load longer, and some of them (e.g. plasma) work slowly for the first second or so.
Comment by Michael Sparmann (TheSeven) - Friday, 12 February 2010, 18:45 GMT
Hm, with current HEAD I have severe trouble when I have that patch applied. I have found a solution to this (by switching to FASTBUS mode), and will make a patch with this soon.
That "pitch issue" reported by jch points towards the voltage being to low for his iPod. On mine, this starts at 900mV and below