I recently decided to upgrade my iPhone 3G again, because I really like playing Words With Friends and some other apps now will only work on the new iOS versions. iOS 4.2.1 was the last available update for the old iPhone 3G, so that’s what I went for.
Similar to using iPhone OS 3.1.3 (which works better on the earlier device), any app that was designed for later iOS’s simply aren’t backwards compatible and won’t normally install on the device. For the ones that do install (for example, Cycorder and most other video recorders for iPhone 3G), they normally crash/exit right after launch. Once most developers have decided to update their tools to later versions, there is no going back to support earlier iPhoneOS builds, indeed even among iOS developers, once they get to a certain build of tool compatibility, the option of doing cross development or testing on older versions is usually beyond their resources or desire to accomplish.
Anyhoo, it was very easy for me to launch iTunes and go to iOS 4.2.1, however, due to my unique circumstances I eventually ended up with Bootloader 05.08 [G2M3S2] and Baseband ICE2-06.15.00 (right, that’s an iPad baseband), only so that I could later unlock it.
Let me give a brief overview how I ended up there.
First problem for me was, the update process via iTunes. For the most part, updating your iPhone via iTunes effectively locks it to whichever carrier is activated with the device (for USA based iPhone, this was AT&T), even if you had it previously unlocked. That means if you stick a SIM card from another phone company in there, it won’t work. Period. Unlocking the phone is the only way to have it recognize the other SIM chip, and so for each firmware update, you must also unlock the phone again. Folks who aren’t savvy enough to do this themselves or get their carrier to do it can, on average, pay $30 for each unlock.
I guess the logic here is that people normally stick with the same phone company, right, but in this case I moved out of the country, and had already paid off the phone carrier to unlock the phone for me once, totally legit, so that I could continue to use the phone elsewhere. Once the phone is unlocked and your contract paid off, you are essentially on your own to keep it that way.
Yes, I wanted to keep using my $499 iPhone 3G as more than a glorified iPod. I didn’t want to upgrade it to a iPhone 3GS in exchange for a 1 or 2 year contract, I liked the freedom of my month-to-month plan.
Well, thanks to Apple and iTunes, going from iPhone OS 3.1.3 to the newer iOS 4.x, I now needed to re-unlock my no-contract iPhone AGAIN. Thats a bit of a SNAFU eh? Sure, sure, stop your bitching and just do it..
Since I was living in Canada at the time, and my cellphone carrier was now Telus, there was no way to reactivate it on the AT&T network. But, at the time there was also no way to carrier unlock the phone once it was upgraded past iOS 4.1, this has to do with a thing called baseband, which gets updated along with the other OS firmware.
You see, when Apple changed from iPhoneOS 3.x.x to iOS 4.0.x, doing carrier unlocks with baseband 05.13.04 wasn’t really an issue. You updated your firmware, unlocked it, and you were good to go — no need to jailbreak the device, for the most part.
It was only with subsequent versions of iOS 4.1.x and 4.2.x that they decided to make things more difficult for world travelers, by forcing the phone to lock itself once again PLUS giving you a baseband version 05.14.02 or 05.15.04 respectively, which were specifically designed to prevent people from unlocking their phones! You can imagine the upheaval this caused for international travelers, or those whose cellphone carrier was other AT&T (or others who had specific contracts with Apple). It’s probably enough of an inconvenience for people to run out and buy an Android or Blackberry instead.
Well, people will always find ways around such nonsense, and since Apple iTunes doesn’t like you to go down in baseband version, folks found that doing a silly workaround to “fool” the iPhone into going UP to a newer baseband version (which could also be unlocked) was the way to go.
Yep, someone figured out that the iPad baseband version numbers were greater than the iPhone, yet that modem firmware could be put into the iPhone anyway, so that’s what I ended up doing as well.
Naturally, It’s like taking parts from one car and installing them into a different one, sometimes they work, and sometimes the hack breaks something else in the process.
So, the caveat with taking a baseband for the iPad and slapping it onto an older iPhone 3G, is that your psuedo-GPS doesn’t realize it isn’t an iPad, and thus becomes completely worthless. Not only that, you wouldn’t be able to update the baseband until a successive new version came out, and since iOS 4.2.1 was the last available version for the iPhone 3G, you were essentially stuck with what you got.
Why, you ask? Well, the earlier iPhones didn’t have a true GPS, but instead, they used an old cellphone trick of triangulating your position based on the location of nearby cellphone towers, which was sort of accurate, not bad actually, but, if you were ever out of range enough, the tech behind the thing fails and there you are, lost. The iPad and newer devices have more-so a real GPS, but I’m not going into the details over this, simply put the code used by the iPad, iPhone 3GS/4/4S is kinda different. Different enough anyway that the iPad modem baseband breaks on the earlier iPhone 3G.
Having WiFi to aid the GPS in this case didn’t help, because it can only get you into the vicinity based upon your IP address and such things from your currently connected Internet provider. (I thought maybe I could get away with using WiFi and the Maps app, but it didn’t work because it wasn’t written to function that way).
So, what is a guy to do? Well, downgrade the baseband back to 5.13.xx! But how? iTunes only lets you upgrade basebands. Sure, you can downgrade firmware, but the baseband stays the same. I found this out when trying to downgrade from 4.2.1 to 4.1, to 4.0, to 3.1.3, no matter what I did, that baseband stuck at 6.15.00!
I installed then watched this little app do its magic on my iPhone. The process was fairly easy for me because I already had OpenSSH installed (for logging in via SSH or SFTP) and iExplorer (for accessing over USB), yeah that’s right, I don’t have afc2add on my iPhone!
Sure, the process is a bit klunky, since iOS 4.2.1 is now considered old, even though that’s the last officially supported version for my aged iPhone 3G. But it still works today, so I am posting it for anyone who may find themselves in a similar predicament.
I must thank Haras Mhmud over at Redmond Pie for posting the earlier article over a year ago, that I used as a base for my modification procedure. That, and lucky my bootloader was the right version. If you have the iPhone 3G and the wrong (or newer) one, I don’t think this is going to work for you, but YMMV as they say.
I’m not going to cover unlocking or jailbreaking the device, there’s enough posts about that here as well all over the internet, and many people don’t want the advantages of jailbreaking to Linux on their iOS (or running Android on it for that matter) so we’ll skip all of that..
Other than the obvious advantage of getting your location services to work again, you are now able to restore your device to stock firmware using iTunes again. Yeah, remember that 05.13.04 was unlockable, but they made 05.14.02 and 05.15.04 rather unfriendly. As you get beyond the downgrade barrier, good things happen.
By the way, if you aren’t savvy enough to pull this off then you probably shouldn’t even try, but who am I to say? You can brick your phone if you like. Do it at your own risk. Everything may turn out okay, right? Mine works just fine, there ya go 😉
Here’s the step by step:
1) Update your iPhone 3G from 3.1.3 to 4.2.1 using a custom IPSW that includes the iPad baseband 06.15.00 mentioned above. I used Pwnage tool on my Mac for this.
2) Download the required certificate file ICE2-06.15.00.cert from here.
3) Install Fuzzyband to your iPhone using Cydia.
4) Connect your iPhone 3G over USB or SFTP and copy the cert file to /Applications/Fuzzyband.app directory. If you can’t see this directory, you may or may not need afc2add to make the hidden directory visible. I saw it just fine using SFTP.
5) Run Fuzzyband. Let it do its thing (takes a bit to read stuff, just wait!). Click the downgrade button to flash the 05.13.xx baseband firmware on your device. Wait again. if it’s successful it will give you a LOL cat style OK message.
I just left my device there and let it reboot itself after that, just don’t touch anything and it should do that. If not then reboot anyway. Boom you’re done.
6) When you are all rebooted, check the modem firmware using General -> About from the iPhone Settings app. Go to Maps or some app that uses your location and check to see that it’s working again (yay!)
Comment if you like on this, my facebook plugin to WordPress sometimes works, sometimes not (haven’t debugged it yet, though just patched it so maybe all is well) but if you have any questions, I am willing to help those who contact me via the website (cheers!) I’m enjoying my iPhone 3G again, now I can use Foursquare and Maps and all those apps that use location services again, neato.
PS: I still want an iPhone 4, if anyone has an extra one or two laying around and you don’t need it, let me know and I’d be happy to take it off you with my grabby hands, heh.