After having some problems with my home button, I tried taking my iPhone to the Apple store, who told me it would cost $200 to replace the hardware button on my iPhone. They also mentioned there were some home button issues with 4.3.1, the version of my iPhone OS, and to try updating. (They also said they had to mention the jailbreak could be my problem and to remove it).
I went home, determined to either fix the home button myself (they cost $5 online) or try a software update. I tried updating to 4.3.3 first, the latest untethered jailbreak. This is trickier now that 4.3.5 is out.
First, I ran AptBackup, a package you can find in Cydia to save all of your jailbroken apps for restoring later. (Edit: AptBackup deleted all my AppStore apps, people recommend PkgBackup instead.) I also saved my SHSH blobs in Cydia (important) when it prompted me, so that I could upgrade or downgrade my iOS freely.
I downloaded iOS 4.3.3 from here and tried option-updating or option-restoring in Itunes, but it gave me the error “The device isn’t eligible for the requested build.” I learned this is because Apple stopped signing iOS 4.3.3 in an effort to prevent jailbreaking.
I followed Saurik’s old guide, adding the line “220.127.116.11 gs.apple.com” to my /etc/hosts file to have Saurik’s Cydia server spoof apple’s verification servers. This bypasses the “eligible” error in iTunes, but as described, at the end of the restore I got the error message The iPhone “iPhone” could not be restored. An unknown error occured (1015)” Saurik writes that you should restore twice, but that you will get this message both times and get stuck in recovery mode, and then you should jailbreak.
Then, I tried using the latest version of RedSn0w to jailbreak. RedSn0w requires you to enter DFU mode by turning off the phone, but in recovery mode the phone turns on automatically when it’s plugged into USB. Regardless, I was able to enter DFU mode by holding down power for 2 seconds, pressing the power and home button for 10 seconds, and then releasing the power button and holding home for 10 seconds. Then, the phone hung on the “Installing Activation Bundles” screen and then rebooted and was stuck on the recovery screen.
I tried the application “fixrecovery43” but it didn’t work. (I got the error: libusb:error [darwin_transfer_status] transfer error: timed out)
What did work for me was installing TinyUmbrella and clicking the “Exit Recovery” option. TinyUmbrella crashed a few times on me, I think because of conflicts with Apple’s httpd server. I had to disable websharing and type “sudo killall httpd” in Terminal first. Then I clicked TinyUmbrella’s “Start TSS Server” and then it ran better. Open up /Applications/Utilities/Console.app for more details on what’s happening if you’re having trouble with TinyUmbrella. Evidentially you can use their TSS servers to restore the phone via iTunes as well but it didn’t work for me (I got a “could not connect to apple servers” error in iTunes).
Note: TinyUmbrella edits your hosts file and deletes everything except the gs.apple.com line. If you have other lines in your hosts file I suggest backing it up.
First I tried DFU mode, but the “fix restore” button didn’t work (the phone got stuck on a greenpois0n screen with the message “unable to find gbdevlist” and “unable to find fs_mount”). What worked for me was leaving the iPhone in recovery mode (iPhone screen on, usb cable icon pointing to iTunes icon), and then it shows up in the list of devices in recovery mode. Then I simply clicked on “exit recovery” and my phone booted normally into 4.3.3. Whew!
Finally, I reinstalled AptBackup and clicked “restore”, which restored all of my Cydia apps, but deleted all of my appstore apps. None of the suggested online fixes (installing an appstore app, resyncing with iTunes, turning on and off restrictions) worked. People online recommend PkgBackup instead of AptBackup, note to self. Anyway I restored my apps and settings from backup again using my old backup in iTunes and all is good. So far so good with the home button. If your iPhone 4 home button is still on the fritz, there are some good voodoo tricks in the comments here.