How to update IPhone 3GS firmware to iOS4 in Ubuntu 10.04

WARNING: By following this tutorial you can make your IPhone stay in a “bricked” state, which will lead into an nonoperative system.  Follow at your own risk.


  • Oracle VM Virtual Box 3.2.1 (.deb)
  • Ubuntu 10.04  64bit (for host OS)
  • Windows XP (for guest OS)
  • ITunes 9.2
  • Setup your Windows guest on Oracle VM Virtual Box.
    Note: You can use any Windows installation, but you need to install the updated Virtual Box Guest Additions.


  1. Before start we need to do a set of tweaks in Ubuntu groups configuration
    1. Click on System > Administration > Users and Groups
    2. Select your “current desktop user” and click on Manage Groups
    3. In the group list, look for vboxusers. Select and click on Properties
    4. In the Group Members list, mark your user name and click Ok.
    5. Click on Close in the Group Settings and close on User Settings.
    6. Now to make your session ready, Log-out and Log-in of Ubuntu.  (If you don’t know how to do that, restart your machine)
  2. Now open Oracle VM Virtual Box (Applications > System Tools > Oracle VM Virtual Box)
  3. Select your Windows machine and click on Settings.
  4. With your IPhone plugged, go to USB and verify if the option “Enable USB Controller” is checked and UNCHECK “Enable USB 2.0 (EHCI) Controller”.
  5. Add a USB Device Filter selecting the plus icon on the right side and select your IPhone device from the list. This will make your VM directly bind to the USB port the device is using. After that, when you boot this VM, you’ll not be able to mount/use the device on the HOST machine (Ubuntu), only in the GUEST machine (Windows). That’s exactly what we want.
    USB Filter Virtual Box
  6. Start your Windows VM and install ITunes 9.2. After the installation, proceed with the normal IPhone update steps.
  7. If you see any errors, you can just click Ok and select/deselect the IPhone USB port in USB icon (3rd button from left in the picture below).
    USB button on Virtual Box
  8. After some error messages (3 of them in my case) I’m with the brand new iOS4 in my IPhone 3GS.

Unfortunately, I don’t know another way to do this without using a Windows VM and ITunes. If you do, please share!  :)

One thought on “How to update IPhone 3GS firmware to iOS4 in Ubuntu 10.04

  1. Nice… I’ve done the same on Fedora 13 (running KVM as virtualization solution and WinXP as guest). One point still uncovered (unfortunatelly haven’t found a solution so far): how to enable Internet Tethering on your Iphone running IOS 4 when the operator has disabled it (Claro Brazil does a network update which disables Internet Tethering for IPhone)..?? If you find out, please share. There are couple of apps available on Cydia for doing it, however none work with IOS 4.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s