Speed up the iPhone 4

By | August 18, 2010
I take no responsibility if you destroy your phone, it explodes or your arm falls off.

So you’re probably thinking the iPhone 4 is fast enough already, right? Well if there is any bit of performance you can squeeze out of a device then why not? After doing all this I get around 360MB – 370MB of available memory after a reboot.

First things first, you need to JailBreak which is simple as going to JailBreakMe in Safari on the iPhone. You can either download limera1n or greenpois0n to JailBreak.

What I did was download and run langdel.sh which deletes all language packs except English and Japanese (chmod it to 755 and run as root from MobileTerminal). If you want to remove all except just English, you can run langdelen.sh which is what I did.

Next I deleted the following Launch Daemons from /System/Library/LaunchDaemons/.

– com.apple.Dump* – 2 daemons to disable purpose is to dump the crash for apple evaluation.
– com.apple.Report* – 6 daemons to make reports about what caused the crash/what were running e.t.c.
– com.apple.CrashHouseKeeping.plist – Also deals with crashes.
– com.apple.VoiceOverTouch – Another Voice Control daemon.
– com.apple.aslmanager.plist – This daemon manages system logs.
– com.apple.awd_ice2.plist – Apparently only affects the iPhone 3G and 3GS. It’s not known what its function is on those devices, however, so remove this daemon at your own risk.
– com.apple.datamigrator.plist – Used to transfer contacts from SIM card to phone. iPod touch users can delete this.
– com.apple.marcoagent.plist – Logs errors with WiFi connections (failed to connect).
– com.apple.marco.tcpdump.en0.plist – Logs errors with WiFi connections (failed to connect).
– com.apple.mediaremoted.plist – Backend for AirTunes.
– com.apple.scrod.plist – This daemon deals with Voice Control. If you don’t use Voice Control, you can delete this daemon.
– com.apple.voiced – Yet another Voice Control daemon.
– com.apple.syslogd.plist – Logs system events.
– com.apple.powerlog.plist – This is used to monitor any incompatibilities with 3rd party chargers.
– com.apple.tcpdump.server.plist – This daemon is apparently used to dump traffic on a network. Removing this daemon has no adverse effects on one’s device.
– com.apple.mobile.profile_janitor.plist – This daemon’s function is currently unknown, but removing it has no adverse effects on one’s device.
– com.apple.searchd.plist – Disables Spotlight search if removed. The Spotlight page will still be there, but nothing will show up when you start typing. Disable this daemon if you don’t use Spotlight.
– com.apple.chud.chum.plist – This daemon is thought to relate to Apple’s CHUD (Computer Hardware Understanding Developer) tools. Removing this daemon will have no adverse effects on your device, unless you are a developer.
– com.apple.racoon.plist – Used for Virtual Private Networks. Disable this daemon if you do not use any VPNs.
– com.apple.chud.pilotfish.plist – This daemon is also thought to relate to Apple’s CHUD tools. Removing this daemon will have no adverse effects on your device, unless you are a developer.
– com.apple.AOSNotification.plist – This daemon deals with MobileMe syncing. If you do not use the MobileMe service, you can disable this.
– com.apple.AdminLite.plist – This daemon tries to return control of your device to you if it thinks that you are waiting for a lengthy process to respond. It does this by force-quitting the process, so if you’re tired of your apps crashing and you would rather wait a few seconds for them to finish what they’re doing, disable this daemon.

The next thing I did was edit com.apple.locationd.plist which makes locationd run when needed and not at startup.

Change:

<key>RunAtLoad</key><true/>

to

<key>RunAtLoad</key><false/>

The other thing I did was delete the following files from /System/Library/CoreServices/SpringBoard.app/ which removes shadows from the icons on the SpringBoard.

– FolderShadowBottom.png
– FolderShadowBottom@2x.png
– FolderShadowBottomNotch.png
– FolderShadowBottomNotch@2x.png
– FolderShadowTop.png
– FolderShadowTop@2x.png
– FolderShadowTopNotch.png
– FolderShadowTopNotch@2x.png
– WallpaperIconDockShadow.png
– WallpaperIconDockShadow@2x.png
– WallpaperIconDockShadowT.png
– WallpaperIconShadow.png
– WallpaperIconShadow@2x.png
– WallpaperIconShadowT.png

Another thing I have done is in /System/Library/Frameworks/UIKit.framework/ I deleted all the Keyboard*.plist except for Keyboard-default.plist, Keyboard-en.plist and Keyboard-en_AU.plist. You’re setup may vary though. I also deleted Keyboard-Emoji.artwork and Keyboard-Emoji@2x.artwork since I don’t use Emoji.

  • Faran

    Have you noticed any improvements, more RAM? Speed? Battery life?

    Definitely interested in this if it makes a different. Thanks!

    • I get average of 360 – 390MB of available memory. Speed seems great (it is an iPhone 4, so already fast). Battery life is about the same, maybe a little longer.

      It can’t hurt doing it, unless you do something wrong. ;-)

      • Faran

        Thanks Justyn,
        I deleted most of the daemons you listed, didn’t delete any language packs. Haven’t noticed any difference yet but hopefully removing those background processes increases battery life a little.

  • Joan

    Thanks!

    But, how do i use the .sh file? I know the lang pack do alot of diffrent, but I dont want to delete everything manual.

    I have download it to the phone and edit it with iFile to fit my lang. (as you probably can see, i’m not a english speaking person)

    Or, do i need at computer?

    Please, help!

    • To use the .sh file just use MobileTerminal, chmod it to 755 and then run it with ./langdel.sh

  • Max

    Not very good in SH scripting. This script doesn’t tell us what directories its deleting the files from. However I do see the languages files in (/System/Library/CoreServices/SpringBoard.app) or (cd /System/Library/PreferenceBundles/)

    How can I add these folders to script. need your opinion.

    Thanks
    Max

    • It’s not my script, I found it on the internet. Do you need to know which directories it is deleting files from?

      It basically is running “updatedb && locate lproj | grep -E lproj$ | grep -v -i English | grep -v -i \/en” so it should search the whole filesystem and remove everything except any English.lproj and en.lproj. Not sure why it isn’t deleting any from /System/Library/CoreServices/SpringBoard.app or /System/Library/PreferenceBundles/.

      I modified the original to delete ALL except English (so Japanese gets removed too). I ran it over my iPhone 4, and I only have English.lproj and en_GB.lproj – maybe you can try it? http://justynsmith.info/langdelen.sh – if it breaks your phone I’m not responsible though. :p

      The only other thing I can think of is you may need to run it a couple times (it may not be updating the whole db on first run).

      Since I’m not very good in SH scripting, maybe you can fix it up and comment your fix?

  • thierry

    Hi,
    I just deleted most of the daemons you describe.
    I now have about free 320mb instead of 250mb. (I have many daemons running because of jailbreak apps)

    Awesome !!! Thanks

    • No worries. Glad I could help. :-)

  • Dave

    Hey man, thanks for the info and the script. I ran them both last night. Didn’t really make much difference to my memory or speed (still showing around 320mb) but now I’ve noticed that the lowercase letters don’t appear on my keyboard when I input text. Do you know how I can get that back? I tried restoring all the keyboard-en*.plist files but still no dice.

    Any ideas? Thanks.

    • That’s strange. The script wouldn’t have done that as it only removed the .lproj folders. I’ve ran the script on atleast 5 different devices and worked a charm (as has many others).

      The only thing I can think of is you may have deleted Keyboard-default.plist or one of the .artwork files somewhere. If it doesn’t fix it the only thing would be a restore unfortunately.