Apple Made Me Jailbreak My iPod Touch

Yes… it’s true… after 2.5 years of being legit, Apple forced me to jailbreak my device.  Why?  Because I had no other option to test my new game on iOS 3.1.3.

A few months ago I successfully (and legitimately) rolled my iPod Touch back from iOS 4.2.1 to 3.0.  But as much as I tried I could not do the same with 3.1.2 or 3.1.3.  I even tried to roll back to 3.0 (and even 2.2.1) and then upgrade to 3.1.3 to no avail.  So I’ve had my iPod Touch at 3.0 and that’s what I’ve been targeting all my builds with.  But then I uncovered an issue with my latest game that uses cocos2d.  It was not running smoothly.  On 3.0 devices cocos2d does not use CADisplayLink, which gives a much more consistent frame rate.  I wanted to test my suspicion that if I used CADisplayLink it would work.  Of course I could have just tested on a 4.2.1 device, but then I’d have no idea if it was CADisplayLink or some newer functionality and I really want to target the oldest iOS I can.  So I spent the last 24 hours trying various options but couldn’t get my device to 3.1.3 (plus I almost bricked it a couple of times).

So… even though I wouldn’t recommend it, if you find yourself in the same position and really need to test on an older iOS, here’s the steps I took.  Again… I would have loved to do this the legit way and it would be nice if Apple had a way for developers to downgrade, especially since we don’t have the luxury of multiple simulator versions anymore.  I’m not including any links to these images or utilities.  I’ll leave it up to you to do the research.

  • Download the appropriate 3.1.3 image for your device.  In my case iPod2,1_3.1.3_7E18_Restore.ipsw for a 2nd gen iPod Touch.
  • Create a jailbroken image using PwnageTool 3.1.5 which is designed to work with the 3.1.3 image.
  • Use iREB-r4 on Windows (I did this in a VM) to put your device into pwned DFU mode.  This probably isn’t necessary if you can get the timing right on the button pushes. But I did notice on VirtualBox that the USB indicator showed if it was in DFU or RESTORE mode, which made it easier to tell when I was successful (other than the black screen v.s. iTunes connection screen).
  • Use TinyUmbrella to spoof the servers to allow the image to be validated and upgraded.  I couldn’t get the host file change wouldn’t work for me.
  • Use iTunes to downgrade the image (option-restore) and selected the jailbroken custom image.

So now I have a 3.1.3 device to test on.  I guess I also get to see what’s going on with the jailbreaking community, something I haven’t payed any attention to.  It was pretty cool to SSH into my device and poke around the directory structure.  I think it’s at least educational to see how your app is deployed to the device.  I would have to believe that Apple developers get an environment more like this when they are working on iOS or iOS apps.  It’d be kind of cool if we could too.

In my next article I’m hoping to write about cocos2d and my experience with using it over my own framework that I’ve been using over the last 2 years.  I’m also hoping to discuss my solution for getting it all to play nicely in a Universal app.

P.S. Jiggle Balls HD is FREE all this weekend (assuming the change I made 6 hours ago ever takes affect — something’s up with the app store)



2 Responses to “Apple Made Me Jailbreak My iPod Touch”

  1. Luke on April 24th, 2011 10:06 pm

    Do you have a large number of iOS 3.x users? I’m just wondering if it’s worth the effort. Figures from March ( ) put iOS 4.x on iPhone / iPod touch at 91% marketshare. The 9% iOS 3.x users may not even be big app buyers.

    But I do not think ignoring potentially 9% of your audience is smart. I think a better solution would be to keep a dedicated test device on an old OS version whenever Apple drops support of new iterations for older hardware.

  2. Doug on April 24th, 2011 10:51 pm

    @Luke You bring up a good point. I don’t know the exact percentage of 3.x users. I’ve just always gone with the opinion that *if* Apple is still supporting a version I’ll support it as well. As soon as Apple takes away my ability to target 3.x or I need a 4.x feature, then I’ll drop it.

    Ya, my mistake of even upgrading my iPod Touch. What happened is my girlfriend kept hers at 3.x, but finally had the need to update, so I lost her test device.

    Thanks for the comments.

Leave a Reply