Tuesday, July 10, 2012

How to manually "OTA" update your Galaxy Nexus from 4.0.4 to Android 4.1.1 (Jelly Bean) in 4 easy steps

The Android 4.1.1 Jelly Bean update is gradually rolling out OTA (over the air), but if you are impatient you can update manually. I had previously unlocked my boot loader and installed su (superuser), but I otherwise like to keep things as stock possible (no custom ROMs, no kernel hacks, no custom recovery manager).  If you have a similar setup then this upgrade is very simple; it can actually be completed without connecting the phone to a computer, so it really is OTA.

  1. You have a GSM Galaxy Nexus (i9250)
  2. You are currently running the latest Android 4.0.4 (IMM76I)
  3. You have the stock takju (update: or yakju)  ROM.  (You can use this app to check)
  4. You have root access (su/super user is installed) 
  5. You have a terminal application installed (e.g. Android Terminal Emulator)
  6. You *have not* replaced the stock recovery system/partition with a custom recovery (like Clockwork Mod)
  7. You have 15 - 20 minutes to spare
P.S. Over time, the OTA files for other stock builds will become available (but only for Google supported Nexus devices). You can monitor this forum post at xda-developers if you have a non-yakju or non-takju ROM

  1. Download the takju 4.1.1 (JRO03C) from 4.0.4 (IMM76I) OTA update file directly to your phone (you are downloading directly from Google, not from this blog).  The file is about 147MB so you may want to do the download over wifi.  Update: The yakju OTA file is now available as well, the steps are basically the same, you just use the yakju 4.1.1 (JRO03C) from 4.0.4 (IMM76I) OTA file instead.
  2. Copy the update file to the /cache folder (this requires super user permission)
    • Open a terminal window
    • su
    • cp /sdcard/Download/ /cache/
  3. Boot into recovery mode
    • Power off your phone
    • While the phone is off, press and hold Volume Up + Volume Down + Power
    • Use the volume button to scroll through the menu options and press power to select "Recovery Mode"
    • Once the Recovery Mode screen has come up (green android with red warning sign), press  Power + Volume Up to bring up the menu
  4. Install the update from the /cache folder
    • Use the Volume button to select the "apply update from /cache" menu option and press power to invoke it
    • Use the Volume button to select and press the power button to start the update
    • Once the install is complete, select "reboot system now"
Warning: The upgrade caused me to lose root access. Apparently the setuid bit was removed from /system/bin/su.  This was fixed by doing the following. It assumes you are familiar with adb, fastboot and Clockwork Mod Recovery. See my previous for details on how to restore root access.
    If you have anything important that isn't stored in the cloud, please back it up before you start. You never know what might go wrong.  This "worked for me", but your mileage may vary. I take no responsibility if you phone stops working, explodes or tries to take over the world. Caveat Emptor!


    Anonymous said...

    Thank you! I am now with the JB!!! Greets from Brasil!

    SandM said...

    The yakju update from 4.0.4 to 4.1.1 did not work (failed to verify whole-file signature)

    Kawai said...

    Thank you for the great manual. It looks really easy way to update to official ROM.
    But I am wondering if apply 4.1.1 (JRO03C) with this method, the baseband also updated or not? Now, I am using 4.04 yakuju IMM76I, base band is I9250XXLA2.

    Anonymous said...

    Thanks for the straightforward set of instructions. JB here I come!

    Unknown said...

    I have a error....

    -- Install /cache ...
    Finding update package...
    I:Update location: /tmp/sideload/
    Opening update package...
    I:2 key(s) loaded from /res/keys
    Verifying update package...
    I:comment is 1604 bytes; signature 1586 bytes from end
    I:whole-file signature verified against key 0
    I:verify_file returned 0
    Installing update...
    installing samsung updater extensions
    Verifying current system...
    file "/system/app/Gmail.apk" doesn't have any of expected sha1 sums; checking cache
    failed to stat "/cache/saved.file": No such file or directory
    failed to load cache file
    script aborted: assert failed: apply_patch_check("/system/app/Gmail.apk", "21177453e64d114f4c208720a0f57d9765665a1d", "8c4ca9a52a3849b20f12219e7fc5a29b4ebe1ad1")
    assert failed: apply_patch_check("/system/app/Gmail.apk", "21177453e64d114f4c208720a0f57d9765665a1d", "8c4ca9a52a3849b20f12219e7fc5a29b4ebe1ad1")
    E:Error in /tmp/sideload/
    (Status 7)
    Installation aborted.

    Marc Richards said...

    @しゅれっく。My baseband after the update is 19250XXLF1, so I think it does get updated.

    @SandM are you sure you are on stock yakju? There is also the possibility that the download was corrupted or incomplete

    @ Roberto Pablos It doesn't seem like you are running stock yakju or takju, did you buy your phone from the play store?

    Anonymous said...

    Worked for me using stock takju - thanks!

    btw: Google Wallet doesn't like root - I've read you can still use it, but it does give an alert about 'insecurity'. Any easy way to unroot? I'll take a look at the Interwebs...

    Kawai said...

    Thank you for the reply. My baseband has also updated to 19250XXLF1!!

    Anonymous said...

    @ Roberto Pablos I am getting the same issue, I first tried the manual method that gave the abort issue and today I received the OTA but again same issue updating.

    Shashi said...

    Nice set of instructions, in addition i had to restore my build.prop and media_profile.xml back to stock. These were modified by Nexus Toolkit when i had updated the camera and DPI settings.

    Rabin Dhital said...

    I have yakjuzs/ Maguoro.. will i be able to update?

    Marc Richards said...

    @Rabindra Your phone does not receive updates directly from Google, which means you will have to wait until your carrier completes their tests before they release the OTA. I believe yakjuzs is an Australia/New Zealand variant.

    In order for you to get you updates directly from Google you would have to flash to yakju or takju first using the factory images provided by Google. Up course, your phone would get wiped in the process, so make sure you do a backup first.

    Nilesh Gandhi said...

    Hi, My build is IMM76K.I9250XWLD2, Android Version 4.0.4, can i upgrade it to 4.1.1?

    sai krishna said...

    I got an update on my galaxy nexus running 4.0.4 , over the Air -- is it safe t install it ?

    Marc Richards said...

    @Nilesh the OTA file I linked to are specifically for build IMM76I (yakju or takju) and will not work with IMM76K. I suspect you may have an non-GSM Nexus phone.

    Check the forum I mentioned to see if they have a OTA file for your phone. Not just the build number but also the hardware version: yakju, takju, mysid, etc.

    Marc Richards said...

    @sai if you get an update notification it is coming from either your carrier or Google and should be perfectly safe. But it never hurts to have you data backed up before you do any kind of change.

    Post a Comment