Jailbreaking the iPhone for the benefit of science is a lofty task, especially for people who have too much time in their hand to tinker with new technology. When it first came out in 2007, the first thing I did was immerse myself in firmwares and basebands and scripts until I got familiar with its file system. Now two generations later, Apple still makes incredible attempts to plug holes and stop people from messing up with their systems.
Currently I’m on 3.1.2 and the latest firmware as of writing is 3.1.3. With the release of the iPad and the 4.0 SDK, another upgrade is imminent. To preserve the status quo on my present setup, I sync with iTunes regularly to backup my files and keep a handy set of utilities.
One pitfall I always find myself in is the endless loop of apple logo display that does not proceed to boot up. I also encounter the dreaded iTunes 16xx or 20xx errors when I try to restore to custom firmware. This usually happens when I’m doing a lot of surfing or launching games that connects to the Internet. My phone works fine while I’m doing all those stuff but when I put it down and maybe leave it overnight, or put it in airplane mode while I’m in transit (usually for an hour or so), I find that upon waking it from sleep mode, it suddenly couldn’t connect to my wireless routers anymore.
I then do the customary shutdown and startup just in case there are some background processes hogging the cpu or something, but this often triggers the endless loop problem. In case it does boot up properly and still can’t connect to the wireless server, I then continue with resettting the network settings, which might actually fix the issue if it can bypass the endless loop syndrome.
After much hands-on experience with phenomenon, I’ve devised ways to prepare myself for the impending doom and I’ve amassed a collection of nifty implements to get me out of jeopardy and back into the almost perfectly working world of fw 3.1.2. What can I say, I don’t want to upgrade until I’ve figured out all the nooks of the current release.
Here are some points to remember:
1. Apple has stopped signing fw 3.1.2 so restoring back to it through the usual Option + Restore method in iTunes will result to 16xx or 20xx errors.
2. It’s important to have a copy of your iPhone’s ECID and SHSH files.
3. Have a handy copy of your custom restore file.
4. Sync with iTunes everyday to have a backup of your files and settings.
5. Don’t jailbreak unless you want your life to be complicated.
6. Panic count: 0.
These days, when my iPhone starts acting up like taking too long to respond after I’ve opened a hundred tabs on Safari or suddenly disconnects from my router or couldn’t search available wireless networks, the first thing I do is plug it on my Mac and sync with iTunes. I am already preparing myself for the inevitable restore so I need the freshest backup possible. Then I try the following and see if any of them works:
2. Hard reset.
3. Reset network settings.
If it was some stray process, any of the three would solve the problem but if its some weird stuff you were not supposed to install then never, I mean never jailbreak your iPhone again unless you can get yourself out of this. This reminded me of all the ROM flashing I’ve done with my Palm devices back when CLIEs still roamed the earth. You don’t have business messing up the low level stuff if you don’t understand a single line of code. Better stick with the stock options.
Anyway, assuming that you know your stuff well, then you really don’t need to read this. I’m just writing notes in case someone asks me how and I’m too busy to explain in detail. This morning I woke up and checked the weather forecast on my iPhone but found that it couldn’t connect to the server. Could it be all those threads I opened last night to simulate multitasking? I don’t know for sure so I just plugged it into iTunes and started syncing. I then tried the quick fixes mentioned above but none of them worked and step 3 brought me to endless apple logo loop.
Without delving too much into the technical explanation of each step, here’s the rest of the procedure that resurrected my device:
1. Put the iPhone in Recovery mode.
2. Modify the host file to intercept iTunes
3. Fire up TinyTSS and run your own signature server using your backup SHSH file
4. Run iTunes and plug in your iPhone
5. Once iTunes recognizes the device in recovery mode, restore to the custom firmware and load your settings back.
As I’m writing this I’ve just finished doing all the steps above and my iPhone is in happy working state again. Thank you Apple for giving me an education.