Friday, February 19, 2010

Idea: Editing firmware to load onto the device

Seeing as it seems impossible to run this command at startup, it seems like the only option is to edit a firmware file, and then load it onto your device. This, to my understanding, would require somehow making the oid hw.cpufrequency writable. This seems to entail editing the kernel, though I am not sure on that, as information on this is hard to find

I plan to do some reading up on linux, to see if I can somehow do this.

Myth: SystemPowerProfileDefaults.plist

A number of people suggest that replacing this file with one from a newer device will speed up their processor. There is in fact nothing inside this file that dictates clock speed. The misconception often comes when a user installs this with iPhoneVM at the same time, which would account for a marginal speedup.

Attempt: Launchdaemon

Changing the clock speed was possible back in the 1.x firmwares. Entering sysctl -w hw.cpufrequency=?, where ? is your required clock speed, did work. However, come 2.0, this was somehow locked off. Now, if you try this command, you'll get a error which says something like "oid hw.cpufrequency is read only".

We also know it's possible to set the clock speed while changing firmware. The 1st generation iPod Touch was clocked up to 412mhz in the 1.1.4 update. This means it could well be possible to do something similar with current firmwares.

My personal idea is to somehow make hw.cpufrequency writable again. This would allow you to set your clock speed at any time. If you found that your device was heating up too much, you could quickly set it back to your original clock speed.

What I tried was spawned from some info I found here: http://www.freebsd.org/doc/handbook/configtuning-sysctl.html

That page basically says that you can override the oid being read only if you do the command at startup. As the iphone doesn't have a loaders.conf file, I tried a launchdaemon.

http://pastie.org/833896


This bore no fruit, and neither did placing the command in the launchdaemon itself.