Apple's last hit to iPhone hackers with 3.1.3 update impacted so badly to numerous iPhone owners. It was a surprise to many after they updated the firmware from previous versions, by seeing no way out. Firmware 3.1.3 upgrades bootloader to 5.12.01 which permanently marks full stop to jailbreak solutions till date. Like many iPhone aspirants, I'm also the one using this gadget from very first version, and have been playing around with unlocking options and customizing the firmware. I'm currently using unlocked iPhone 3G, running on 3.1.3 firmware. I know this is not very common but I went mad with my phone one day and made it read my non-AT&T sim card. I can use almost every feature of device on top of 3.1.3 without any flaw, which is a great satisfaction in real-time. I'll share my experience to unlock 3.1.3 iPhone 3G, you guys can also give it a try. Good luck.
First of all you need to know 3 things before you jump into this: Versions of firmware, baseband and bootloader. You would need to make your device ready with 3.1.3, 0508 and 4.26.08 respectively. To reach this milestone you'd require to upgrade/downgrade various things in your iPhone as necessary. It requires long time to write every single combination of steps here on this article to support every iPhone on the globe, but here are the steps that followed specific to my iPhone status before I unlocked it.
My iPhone was a locked one with 3.1.3 upgrade. I jailbroke it using redsn0w-0.9.4(windows). There is a trick at this step while start cracking firmware 3.1.3, you need to point 3.1.2(iPhone1,2_3.1.2_7D11_Restore.ipsw) firmware path to break 3.1.3(iPhone1,2_3.1.3_7E18_Restore.ipsw) while selecting firmware on first screen of redsn0w. This works just perfectly.
STEP 1: Jailbreak your iPhone 3.1.3 using redsn0w, and make sure you select 'Cydia' it needs to be therein for installing some utilities to determine, upgrade/downgrade and unlock purposes later.
STEP 2: Install Cydia/Terminal in your iPhone and check version of your baseband firmware, you need to use BBUpdateExtreme for this. It is a bit techie but prefect utility for checking baseband version, it showed different but correct info to me than other options I tried. It involves quite a long procedure so please refer to iPhoneHeat for this. You are lucky if it shows ICE2_BOOT_05.08_G2M3B2 to you, as it'll increase your chances for unlocking your iPhone 3G to almost sure.
STEP 3: Now go to Cydia on your iPhone and Search for Fuzzyband and then install this application. Start fuzzyband and hit downgrade button to make your bootloader compatible for unlock/ultrasn0w. You are lucky if you see successfully downgraded message.
STEP 4: Almost done, now quickly install ultrasn0w and run it........................DONE!
Disclaimer: I never used iPhone 3GS so not sure if this would work on that phone or not, just try it with iPhone 3G only. For any help, please email your queries to "help at pda3 dot net", someone from the group may revert back with possible suggestions.
SOME USEFUL DEFINITIONS RELEVANT TO CONTENT IN THIS ARTICLE
o Baseband is the device in the iPhone that manages all the functions which require an antenna. The baseband processor has its own RAM and firmware in NOR flash, separate from the ARM core resources. The baseband is a resource to the OS. The Wi-Fi and Bluetooth are managed by the main CPU, although the baseband stores their MAC addresses in it's NVRAM.
o Baseband Bootrom is the first code that runs on the baseband. It resides in internal ROM.
o Bootloader is the code which runs before the baseband FW, it is responsible for signature checking and updating the baseband.