„The iPad could not be restored” problem fix (iOS5)

Today I’ve decided to upgrade my iPad from iOS 4.3.2 to iOS5. I Thought the process would be dead easy, but some complications occured. I connected the device, clicked the „Update” iTunes button, upgrade downloaded, iTunes performed iPad backup. And then iTunes presented an error message „The iPad could not be restored. This device isn’t eligible for the requested build.” That was confusing. And totally unexpected.

The iPad could not be restored

Quick google research revealed that quite a few people were struggling with the same issue. Most often it happened when they tried to update the jailbroken device. People had various suggestions, here’s what worked for me. But first, a little background.

Sometimes you may want to downgrade your device iOS version. You may want to do that if you’re into iOS software development or jailbreaking. Or simply you may find some of the new firmware version’s changes unacceptable (i.e. lack of multitasking gestures for iPad 1 in iOS5). After all it’s always good to have a choice.

To do that, you need a couple of things. One of those are your device SHSH blobs (digital signatures based on some device hardware keys and the firmware version). You need to preserve them before upgrading to newer iOS version (or jailbreaking the device). Without them it’s impossible to downgrade, Apple doesn’t allow to install firmware they haven’t sign (and they sign only newest iOS version, so if iOS5 is out, you cannot sign e.g. 4.3.2 firmware any more). More information on this topic can be found here: http://bit.ly/aNI5hA.

tinyumbrella
Since I’m a software developer and also I find jailbreaking useful (I don’t encourage installing pirated software, but jailbreak actually makes some really cool stuff possible via custom Cydia packages) some time ago I wanted to store my device SHSHs for 4.3.2. I used sofware called „Tiny Umbrella” to do that. It certainly did the job, but it also caused some harm in the process. When you try to install earlier firmware version SHSH is not taken from one of the Apple servers, it’s pushed from your localhost instead (from TinyUmbrella’s integrated local TSS server) or from Cydia server. To achieve this, iTunes request to Apple servers are being redirected to localhost/Cydia. That makes perfect sense. The bad part is that TinyUmbrella doesn’t always (or ever) clean up after it’s job is done. So after you saved your SHSHs and tried to restore earlier firmware version, the clutter on your Mac remains untouched.

Imagine that you used TinyUmbrella and now want to update to the newest iOS version, which you have never installed before. What happens is… well – basically it doesn’t work at all. iTunes thinks it sends a sign request to Apple server, but in fact it sends it to localhost (your computer; or Cydia server). If TinyUmbrella’s TSS server is not running (default behavior), iTunes doesn’t get any response at all. So it thinks sth. is wrong with your device and presents the „device could not be restored” error.

Ok, but why does it happen?

Remember that you had to provide your admin credentials to make TinyUmbrella run? That’s because it needs to modify /etc/hosts file (to redirect iTunes requests). That’s where unhandled clutter remains. Let me show you how to fix it.

 
1. Run Terminal App

You can find it in Application -> Utilities.

Alternatively you can use Spotlight to find it. Press Cmd+Space and type „Terminal”. Click on the first result.

Spotlight-terminal

Terminal window pops out.

terminal

 
2. Change user to administrator

If your account has administrator privileges you can safely omit this step.

Type su admin_account_name where admin_account_name is Administrator login on your system. You will be asked to type administrator’s password.

admin-account-name

On my Mac user with administrator privileges is named tomekwyszomirski, so I typed „su tomekwyszomirski” and entered that user’s password:

su-tomekwyszomirski

Great! Now you are able to edit system files.

 
3. Type sudo nano /etc/hosts

Type sudo nano /etc/hosts

nano-hosts

You land in a console texteditor (nano) with hosts file opened.

etc-hosts

 
4. Find line with gs.apple.com not preceded by #

Move your cursor (using keyboard arrows) to beginning of the line which contains gs.apple.com but doesn’t start with hash #.

gs-apple-com

Insert hash # at the beginning of that line to comment it out.

gs-apple-com-hash

 
5. Save file and quit

Save file by pressing Ctrl+O (^+O in Mac notation). Nano asks to confirm filename, hit Enter.

nano-exit

Quit nano by pressing Ctrl+X (^+X). You can now close terminal window.

 
6. update your iOS device!

That’s it! You’re done! You can now proceed to iPhone/iPad firmware update using iTunes! It won’t fail now.

iPad iOS5

Reklamy
7 comments
  1. This blog is alive! Yay! :) Welcome back and keep up the good work.

  2. Wyszo said:

    :) Yup, but you still don’t know the best part: it’s transforming into a technical one :D And by „technical” I mean: programming-related (mainly ObjC). Non-newbie tech posts are being written :> Keep your fingers crossed!

  3. mike said:

    doesn’t work, same problem

  4. Wyszo said:

    I’ve recently tried to update a jailbroken iPad 1 to latest supported iOS version (5.1.1) and encountered the same problem, not sure why. I thought It’d have no problems updating.

    I suggest trying to put a device in a DFU mode and then trying to update (no guarantees though).

    Here’s what I did to install a different system version:

    1. I’ve installed RedSn0w (http://www.redsn0w.us/2010/03/download-direct-links-jailbreak-guides.html) and run it
    2. Clicked ‚Extras’ and then ‚Pwned DFU’
    3. Followed the instructions (about pressing and releasing buttons in correct order and time intervals) – this is tricky, took me few attempts to make it right
    4. Then I’ve installed (via iTunes) a custom IPSW file made by ‚stitching’ (RedSn0w -> extras -> stitch ssh or sth like that) shsh key stored on an iPad (grabbed earlier using TinyUmbrella) to a IPSW for correct iPad model and desired system version. I have a feeling, that if I had just clicked „Update” button in iTunes, it would have worked without custom ipsw. Don’t know that for sure.

    If updating an iPad by entering DFU mode and then clicking ‚update’ won’t work (be sure to comment out lines with gs.apple.com in hosts file first – like in the original post!), you may try to download 5.1.1 IPSW, grab shsh for 5.1.1 using TinyUmbrella (or RedSn0w), stitch correct IPSW with correct shsh using RedSn0w, put the device on DFU mode (again using RedSn0w) and then install stitched IPSW using iTunes. That will work, although it’s a lot of effort just to update a device to a newer iOS version. But at least it will work.

    By the way, if you’re stuck with an iPad constantly showing a suggestion that you should connect a device to iTunes to update it, you can exit this mode by clicking ‚Exit Recovery’ in TinyUmbrella. Your previously installed system version will work fine.

    Also this is what AAPL says officially about failing updates (not very helpful, but might just work sometimes):
    http://support.apple.com/kb/TS1275

    • Juan Sebastián said:

      Hi Wyszo, a friend brought me a jailbroken iPad 1 (4.2.1) and he wanted to remove the jailbreak so he can update it to the latest version when ever he wants. I tried to update it with iTunes and got stuck on Apple Logo black screen, I tried everything i found on the web and nothing worked… until I found your page.

      I did exactly what you did with RedSn0w, restoring it to the same 4.2.1 version that the iPad had before I attempt the update and it’s okay now, like new from factory. Thanks a lot for that!

      But I have some questions:

      1. I don´t see Cydia icon anymore. So has the jailbreak been removed?
      2. Can I know update to the latest version just with iTunes anytime I want (without RedSn0w or TinyUmbrella)?

      Again, thank you.

      • Wyszo said:

        You’re welcome ;)

        Ad. 1)
        Correct – this installs original system version, Cydia is not there because a device is no longer jailbroken.

        Ad. 2)
        Again – yes. Update via iTunes should now work without any issues.

        If you want to have a working jailbroken device, you can perform a standard update (via iTunes, no hacks) and then do a jailbreak. This way you will have a jailbroken device again, just on newer iOS version (I think 5.1.1 is the highest for iPad 1).

  5. Tiffani said:

    Having read this I thought it was extremely enlightening.
    I appreciate you finding the time and effort to put this article together.
    I once again find myself personally spending way too much time both reading
    and posting comments. But so what, it was still worthwhile!

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: