We've shared lots of tips on getting iOS 4 to work better on older iPhones, ranging from deleting text messages to disabling Spotlight or trying different operating systems entirely. Reader Stuart Bowden has been doing his own testing to get iOS 4 running on his iPhone 3G, and shares his approach to making it usable here. Thanks Stuart!
I had tried all the options suggested for getting iOS 4 working, even going as far as restoring my phone to a clean backup in iTunes, but at best my iPhone 3G would return to its slow state after a week, and at worst I would see no noticeable change.
Then I recalled an article I'd read about how flash memory performance can degrade, and tried a different approach. It turns out that saving data to flash memory is two operations: a read to determine if there is something there then a write operation. When you delete something, the value isn't actually deleted, it's just marked as empty. That means that to save over a memory location that already contains data, even if it has been marked as empty, requires the read, then an intense erase operation, and finally a write operations.
So my theory is that three main factors contribute to iPhone 3G slowness: the natural limitation of flash memory; file fragmentation; and the extra logging features built into iOS 4 that were added for our convenience.
This article is aimed at showing you how to clear the iPhone completely, and only put back onto it the things you actually require. It takes a sacrifice of convenience in order to get your phone back to a state of being a *phone* again.
Note that this method is severe and takes a number of hours to complete. Also, your phone will be erased; make sure you understand this and take the backup process seriously.
Also note that after a week of using the phone since following this method I have found that my phone is starting to slow down again, but it's not nearly as bad as before.
First stage: Backup
1. Backup the iPhone using iTunes. 2. Check that the backup happened by going to Preferences > Devices and note the time of the last backup: it should correspond with "a few minutes ago". If it doesn't, fully close iTunes, disconnect the iPhone, reopen iTunes and reconnect. Repeat from step 1. 3. Copy your photos off the phone - if you're using Windows you'll find your iPhone as a disk in My Computer. Just copy/cut the photo files from there and paste them into a folder in your My Pictures folder 4. Examine each app on your iPhone's home screen, and check inside all the folders too. Do they store information that you need to save? If they do there will usually be a way to copy the data out and onto your computer to allow it to be imported again later. Follow those steps. 5. Consider which apps need passwords. If you're using Google 2-way synchronisation you will need to take extra steps in order to be able to access your accounts after the reinstall of your iPhone and Google Authenticator.
Second stage: Erase the phone
1. Eject the phone from your computer in iTunes. 2. Connect the iPhone to your mains power charger. 3. On the iPhone open Settings > General > Reset > Erase All Content And Settings 4. Wait 2-5 hours for the iPhone to clean the memory - in my case I waited 2.5 hours and noted that the phone kept rebooting so I left it overnight. 5. After the erase procedure, your iPhone 3G will be as close to the state as when you bought it as is possible.
Third stage: Reinstall the bare minimum
8. Connect the iPhone 3G to iTunes 9. DO NOT recover from the backup: set it up as a brand new device. 10. Once you've selected to set up as a new device, click on the phone. In each iTunes section tell iTunes not to synchronise anything: no contacts, no calendars, no apps, and definitely no music or videos
Yes, that's right. Obviously you've already tried everything else which is why you're still reading. We are trying to get the leanest install of iOS 4, and if you restore from the backup you'll just be loading ALL of the stuff back on that was slowing it down.
The thing to note in iOS is, every app you install and every album you put onto the iPhone will degrade its performance to a degree. Sure, you're not running all the apps all the time, and you definitely aren't loading up and listening to all the songs all the time, but by them being on your device they occupy space and this will impact on data fragmentation.
Fragmentation on your iPhone, just like on your computer, is unavoidable and happens without you knowing, causing tiny delays at an increasing rate as the device works hard to record everything and serve you. Fragmentation is not caused by your app or media files moving around (how could they, and what would cause them to move?) in your iPhone it's caused by new events.
Every time you make or receive a call or SMS that event is recorded into a database on the phone. Similarly every time you open an app it saves settings, and every time you browse the web it keeps a history.
To reduce the impact of fragmentation, don't put anything onto the iPhone that you don't need.
In iTunes you can select which apps you want to have sync'd to your phone. I'd recommend sorting them by name and unticking them all, then go through the list one by one and pick the apps you actually use.
You should do the same with your music and your ringtones, and keep the size they occupy to a bare minimum by using the "automatically convert to 128kbps" when syncing option.
If you sync your contacts to your Mac or PC you should probably put them on first; I have mine sync'd with MobileMe so I didn't do this step since they get downloaded when you add the MobileMe account to your phone.
After completing these steps and ejecting the phone it's possible you will experience what I did: for the next 7 hours the phone was almost unresponsive. It lagged even worse than before, and I was very tempted to throw it out and replace it there and then. However after it finished doing whatever big processing it was doing, the phone went back to being as responsive as in the iOS 2.x.x days. I don't know what caused this lag but it did pass!
Finally, today I have found another factor which I completely overlooked.
I had a screen protector on my iPhone and yesterday it lifted so far that I just pulled it off. Since then I've noted a significant increase in the responsiveness of screen interaction. Hopefully this can help someone else in this situation. I guess if my iPhone starts misbehaving again I could always try out the officially unsupported whited00r firmware as suggested recently by Lifehacker.