We are calling this the second episode of the MacGuyver Chronicles, with the first episode being a Bretford cart that we hacked to make work as a
syncing station for iPad. Bretford has since fixed that issue by releasing an iPad-specific cart, so with any luck, Apple will release a tool that allows us to do what we will list out for you in the following paragraphs (fingers crossed).
Please understand that the following directions for updating the operating system on multiple iOS devices using Xcode 4 is a fairly nerdy procedure, and we suggest that if you want to try this, please start with non-critical devices first. That is, if you are trying to send out your very first deployment, and teachers and students are waiting to use them next Monday, it's probably best to hold off on this kind of updating procedure. However, for those of you who need to update a whole slew of iOS devices to the latest OS (4.3.1 for the newest devices and 4.2.1 for older ones at the time of this blog posting), then just follow along for the ride, and things *should* work out fine.
This is presented as a major timesaver for deployments when updating large numbers of iOS devices to the latest iOS version. While not officially a "hack," it is a less-than-elegant procedure that works and it works well. We are not hardcore developers or hackers, but we have been able to use this tool to at least get the updates flowing more efficiently than the current iTunes one-at-a-time approach. We understand that iOS, iTunes, and all this update nonsense is to simplify the process for the millions of consumers who buy and use the products, but we still long for a tool that is tailored to mass deployments such as ours. We don't believe we are alone. Until then, we can use the various tools Apple (and others) have provided us to continue our trek.
Please understand that we are not gurus in the use of Xcode, nor in the development environment as a whole. We are using one small part of Xcode (Organizer) and probably can't answer most of the other questions that might come up along the way.
[We've since upgraded to Xcode 4.2 and use Lion on our Mac to make this work with iOS 5]
So, for those of you ready to play along at home, make sure you have the following:
- Xcode 4 (now at vers. 4.0.1), downloaded and installed on your 10.6.x Mac (we are using 10.6.7, YMMV with other OS versions)
- Xcode 4 is now 5 bucks at the Mac App Store if you are not a developer. It's worth the money.
- Multiple iOS devices ready for updating
- Locate the package on your machine with the latest iOS update (4.3.1 for the newest devices and 4.2.1 for older ones at the time of this writing)
- If you can't easily locate the updater files on your local drive, or simply need a version you've not yet downloaded through iTunes, you can often find those files on this site's list: http://ios.e-lite.org
- Patience, and an understanding that this only does the iOS update, not the restore from backup procedure which brings back your settings, apps, and content from a "master iOS device"
- Backups of all the devices you are going to update as they will be set back to the factory settings, will need to be activated in iTunes, and will need to have their settings restored and synced for content and apps to be replaced
Overview of the procedure:
- Collect iOS updater files for Xcode to use
- "Register" the devices in Xcode Organizer and set them up to use them for development
- Select the iOS firmware for each device, begin the restore process
- Activate the devices in iTunes, restore settings from the backups, sync the apps and content
- Rinse, repeat
Detailed procedure: Collect iOS updater files and register the devices in Xcode Organizer and set them up to use them for development
 |
|
Click for full-size image |
Launch Xcode, and after the main window appears, simply choose "Organizer" from the Window menu (shift-⌘-2). The screenshot to the right shows you that there are no devices in my list (like opening it for the first time). Don't worry if you don't have anything in the profiles. The first thing we'll need to do is help Xcode locate the updater files. We've placed them on the Desktop for this demo, but somewhere more organized and a place that you'll always keep them (in a separate folder all together) would be better. That way, Xcode will always know where to find the files you want to use. Make sure you have "Devices" selected in the main bar, and then select "Software Images" in the left pane.
Locate the updater files on your local drive and drag them into the window, Xcode will then add them to the list of available iOS options for your devices. You can have as many as you like in there. Because we have different levels of devices, we've added several updaters (i.e. 2nd gen iPod touches only go to 4.2.1). Again, a helpful list of iOS updates has been found on
http://ios.e-lite.org regularly.
You can always, of course, use the ones that iTunes downloads for you, located in ~/Library/iTunes/iPod Software Updates/ on your machine. You'll know you are using the right files when they look like this:
 |
|
Click for full-size image |
Now, connect your devices to your machine, and they will begin to appear in the left pane. If Xcode prompts you to collect debugging information, go ahead and allow that.
However, you must make sure that you are NOT logged into the developer account (you can just cancel that dialog box when it appears) because dev accounts have a limit of 100 total devices for the year- that's only 3 classrooms! You don't need the connection to the developer program to make this work.
We used three iPod devices here, two 2nd gen iPod touches, which will only update to 4.2.1, and one 4th gen iPod touch currently on 4.2.1 which we will update to 4.3.1. As the devices appear, click on the button that says "Use for Development." Xcode will collect information on that device and prepare it to be updated by Xcode.
Go ahead and click that button for all the devices you have connected. Xcode can work on all of them simultaneously, so you don't need to wait for one-at-a-time. You're not in iTunes anymore, Toto. It is this ability of Xcode that we will employ to update all the firmware on all the devices at the same time, as well.
Detailed procedure: Select the iOS firmware for each device, begin the restore process
When Xcode is ready to restore the firmware on your devices, you'll see the Software Version number that is currently installed on your device. Use that drop-down menu to select which one you'd like to install.

Since this iPod touch (Fernando) has 3.1.2 installed, it is checked in the drop down, but the others that are available for this device show as well. We will choose 4.2.1 for this iPod touch. Notice that 4.3.1 is not showing, as this device does not support it.

For the iPod touch 4th gen, we can install the 4.3.1, so we've selected that one here, and are ready to install. You can select your "Software Versions" of each device, click on "Restore iPod" and move on down the list in the left pane and do all of them. They will work in parallel, alerting you when they are done. You can do this with two or three or twenty or thirty. Pretty slick.
The window looks like this when it's working:
 |
|
Click for full-size image |
Believe it or not, that's all there is to it to install the iOS versions onto all of the devices you have connected at the same time. Now it's time to get them back to normal to use. Just on the off chance you don't believe us, here are two that are updating their firmware simultaneously on the same machine:
Detailed procedure: Activate the devices in iTunes, restore settings from the backups, sync the apps and content
 |
|
Click for full-size image |
Now on to the part you already know... you will need to activate the iOS devices via iTunes, and then
restore from backup and sync again in order to replace the apps and content.
We haven't gotten to that yet, so for now, we will depend upon our regular pattern of restore from backups,
found here.
Detailed procedure: Rinse, repeat
You've got iPods and iPads you should be updating... don't you? Get cracking! We hope this helps you in your work to deploy these magical devices in your educational kingdom.
Notes:
The following command (run from Terminal) will clear out the list of devices that will build up in Xcode Organizer as it processes devices:
For Xcode 4, it's:
/usr/libexec/PlistBuddy -c 'delete :DVTSavediPhoneDevices' ~/Library/Preferences/com.apple.dt.Xcode.plist
For Xcode 3.x, it's:
/usr/libexec/PlistBuddy -c 'delete :XCKnownRemoteComputers' ~/Library/Preferences/com.apple.Xcode.plist
Comments
Grover (unauthenticated)
Apr 11, 2011
Thanks very much for this resource, but I'm a little confused about how this saves time. If I'm reading correctly, after the system update, you're plugging in each device to iTunes one at a time anyway, just to do app restore. Wouldn't it be just as easy to plug each device in one at a time and update?
Not trying to be a jerk, just genuinely confused.
Joseph Morelock
Apr 14, 2011
Hello Grover: What you say is true... but in the field like we are today, faced with updating to iOS 4.3.2 on almost 2300 devices, having to do the iOS restore one-at-a-time and then the same for the restore (which doesn't take that long- not as long as the syncing back of the content & apps), the time it takes to update the iOS might drive us insane. So think of the time saved by doing 20 or 30 at a time, then the quick restore, then they can all sync simultaneously to get their content and apps back. One practical way would be to use a different laptop than the main syncing one to do the iOS update, 20, 30, or 40 at a time... and then return them to their home machine for the restore from backup and syncing process. Does that make sense?
John Shoemaker (unauthenticated)
Apr 16, 2011
Just trying to be sure I understand. Updating using this method wipes the device, then installs the OS version you selected. Once that is done, you restore each device from the backup. One question, when backing the device up, is everything saved. For example, once restored are Keynote presentations still in the Keynote app, annotated documents still in iAnnotate, documents still in Pages, etc? Feel free to browse our wiki as well http://www.palmbeachschooltalk.com/groups/ipadpilot/ Thanks for your help!
Joseph Morelock
May 3, 2011
Comment for John:
As long as you make full backups of each device, yes. A good idea is to "force" a backup of each device in iTunes, and then begin this process. Depending upon when you last synced, it could take just a few seconds to several minutes to do so. The real time savings is the eventual simultaneous updating of iOS. Now if we could just multi-restore... ;-)
Dustin (unauthenticated)
May 10, 2011
This is awesome stuff, exactly what I was looking for...except for the lack of Restore From Backup :) I hope you update the page once you figure that out. The amount of time that we will save by being able to do a Shift+Click on the connected devices and restore them all from the same backup at the same time will be insane. I currently manage a fleet of 1,200+ iPod Touches and 60+ iPads (although that number wil be rising EXPONENTIALLY in the near future!), not to mention handling deployment for SEVERAL events each year where 2,000+ devices need to be wiped from one event and restored to a backup for another event in a matter of days. Since I deal with corporate events for many different clients at the same time, I'm constantly having to create new "Alpha" devices and restore from backup on anywhere from 10-2,000 devices with very little time to spare (especially when Intl shipping is involved). I can't wait to find a solution for the "batch restore from backup" issue. I really just hope Apple builds it into iTunes with the iOS 5 release, but considering how many devices I'll need to restore between now and then...I'll be more than happy with a non-iTunes resolution :) Thanks again, can't wait to get 650 iPods updated to 4.3.3 tomorrow!
Scott (unauthenticated)
May 17, 2011
Thank you so much! I only have a 30-device mobile iPad lab (for now), but what a time saver!!
Lynn (unauthenticated)
Aug 23, 2011
We just followed the instructions and successfully updated the OS on 20 iPads. It took about 10 minutes total using our new Bretford cart. We actually did it twice (once with a set of 10 iPads and then again with a set of 20). Weird this is, both times there was one iPad that did not update. We had to switch over to iTunes to find the "one" in recovery mode to identify which one didn't update. Pretty slick! :)
Jason (unauthenticated)
Oct 5, 2011
This is an amazing resource - it cut our initial setup of iPads down from about a day per cart to about 1.5 hours per cart. Thanks a million!
One question though... Do you use iPhone Configuration Utility profiles to restrict your iOS devices? If so, do you have to reinstall the profiles every time you restore from a backup? How can you (or can you) have the device backup include the profiles?
Joseph Morelock
Oct 10, 2011
Hi Jason,
If you use profiles, you'll need to reinstall them after the fact. That's why we set them up in iTunes instead, so that they'd carry over to the image. Some settings we know we'll use (age restrictions, etc.). Sometimes, we post them online and have the students crowd source the work for us. We are working on using Lion server's profile management to help us in the future, and when we have that up and running, we'll post a how-to.
Doug Wickham (unauthenticated)
Oct 17, 2011
We have been using this process as Apple pointed us to you. I just tried this with iOS 5 upgrade and it did not work. It will do the upgrade but iTunes see the device in Recovery Mode, which forces a restore through iTunes one at a time. Have you done any work with this upgrade yet? I updated xcode to 4.1 hoping that would reslove the issue but it has not.
Joseph Morelock
Oct 18, 2011
Hi Doug,
We are in the middle of working on this same process and will post anything we find. We [almost] always wait until the "official" release (like last week's) rather than the seeds that we work with as a part of the developer program. So many things can change at the last minute, that we stick to official. Anything we learn, we will post. Thanks for sharing your info with us. Today's tasks include trying this on a hundred new iPod touches and 70 new iPads that just arrived in our office, so we'll keep your findings in mind as we work through it.
Andrew Kehren (unauthenticated)
Oct 18, 2011
Have you run into any issues where iTunes only allows you to keep backups for so many devices? I have 3 of the Bretford Powersync carts with 24 iPads each and when I was initially setting them up, I noticed that some of my older backups from other devices disappeared. Thanks!
Brent (unauthenticated)
Oct 24, 2011
I have been using this procedure successfully until iOS 5 came out. Now after I update to iOS 5 with Xcode, it says iTunes has detected an iPad in recovery mode. You must restore this iPad before it can be used with iTunes. Does anyone have a workaround for this? It slows down the process immensely when trying to do many for my school. Thanks in advance!
Erick (unauthenticated)
Oct 24, 2011
We are also looking at iOS 5 for our district. We're considering commercial MDM solutions, as well as as leveraging iPCU and iTunes with Wi-Fi Sync. Right now, we have nearly 2000 iPads already deployed with iOS 4.3.5, some waiting for deployment still running 4.3.3, and of course iOS 5. We are anxious to see what your results with iOS 5 are using the Xcode Organizer solution.
Joseph Morelock
Oct 24, 2011
Comment for Brent:
We've noticed the same thing as well. We had already deployed our devices, but when we went out to update them, we found out that this no longer worked, nor did Xcode 4.2. We'll let you know here if we find something else out that works.
Joseph Morelock
Oct 24, 2011
Comment for Erick:
We've experienced total failure in making this work with iOS 5. As of today (Oct 24, 2011), it does not [yet] work. Hopefully an update will fix this for us.
Joseph Morelock
Oct 24, 2011
Hello Andrew K.,
We've not run into the issue of having only so many devices backed up. We do know that iTunes only keeps a couple of backups for the same device... so making sure that they have different names in iTunes might help (it probably shouldn't matter, though, because at this time, iTunes keeps backups using the device's UDID).
Alan Carroll (unauthenticated)
Oct 26, 2011
Nuts... just saw this and had hope (we're getting ready to deploy another 350 iPads). Hopefully Apple will come through with an update to 4.2 that'll allow it to work with iOS 5. Thanks Joe...
Joseph Morelock
Oct 27, 2011
Hello Allan (and Brent previously):
We've tested and gotten to work the combination of Xcode 4.2 and Lion to work on iOS 5. Go forth and update!
Steph Schroeder (unauthenticated)
Nov 8, 2011
Thank you so much! We have 3 Bretfort iPad carts with 30 ipads each and 3 Bretfort carts with 20 ipod touches each...this is a GIANT timesaver. The directions were perfect.
Adrian Smith (unauthenticated)
Nov 9, 2011
Hi,
Our school is intereseted in trying this system. We just bought iPads and are not a mac school. Would a USB hub sync statation work if we used a mac mini on one of our laptops?
Beau (unauthenticated)
Nov 10, 2011
I have several Bretford iPod carts and this is not working. Using Xcode 4.2 and 10.7.2. It seems to be an issue with the cart itself. I can plug in several iPods to the iMac and the procedure works. But even one iPod plugged into the cart does not work. After a few minutes this error pops up: ERROR: Sending Apple logo to device: Command execution failed on device
Peter Robinson (unauthenticated)
Nov 28, 2011
Thanks so very much for this. I was going a little nuts trying to figure out how to move 400+ iPads from 4.3.5 to 5.0.1! This is a great solution.
Jordan (unauthenticated)
Dec 1, 2011
So once all your devices are updated to iOS 5, will you continue to roll out firmware updates using this xcode method, or update the firmware over the air directly from each device?
Ryan (unauthenticated)
Dec 6, 2011
Does this process work with previously password-locked iPhones in recovery mode? I work with retired iPhones and I rarely know the previous employee's password. My current process is updating one per profile within four different profiles in SL.
Steve Dickie (unauthenticated)
Dec 9, 2011
Just did this yesterday with 30 iPad 2's. Worked pretty well. However, I did have one that failed. It erased the old system, but then didn't proceed with the restore. Even with the one I had to do manually this was a HUGE time saver!
Thanks.
Julie Hyman (unauthenticated)
Jan 11, 2012
I am so excited to have found your wiki. We have 630 ipods that our school has purchased. I have everything setup almost like you have suggested. we have not yet deployed them to the students. My question to you is if do you know if you can disable imessage? I was going to check Iphone Configuration Utility. Do you have any other suggestions.
Joseph Morelock
Jan 13, 2012
Response for Jordan: We're experimenting with both and looking at the time it takes to do each of them. It's certainly not required anymore to be wired, but it may just take longer to do 2,700 devices (our approximate number) over the air. If we go head-to-head testing on this, we'll let you know!
Joseph Morelock
Jan 13, 2012
For Ryan:
It should work, yes. This forces a full firmware update and restore to factory-fresh settings. Only in the restore from backup will you get back the other settings (if you set up a master and then restore from that backup).
Joseph Morelock
Jan 13, 2012
Answer for Beau:
The Bretford carts no longer properly sync iPod touch devices running iOS 5. We ran into the same problem. Bretford has a workaround for you here: http://apple.bretford.com/files/downloads/iOS5-Bulletin-for-TL357LLC.pdf
This is why we've moved to wireless sync for this generation of iPod touch and iPads: http://bit.ly/wCklZV
Joseph Morelock
Jan 13, 2012
Answer for Julie: Not at this time (at least as far as we can tell). It's not in the iPCU (iPhone Config Utility), and we're stuck with it until it does show up.
Jordan (unauthenticated)
Jan 20, 2012
We ran into the same issue with the Bretford carts not syncing iOS devices running iOS 5.0 or 5.0.1 whithout powering them off. We have since tested this with the iOS 5.1 beta and it looks like Apple has resolved this... hopefully 5.1 will be published soon.
Jordan Chilson (unauthenticated)
Jan 20, 2012
It looks like you can disable iMessage by going to Settings > Messages > and turn the iMessage switch off. There is no IPCU or Parental Restrictions setting I know of that will prevent a student from re-enabling this though. Hopefully Apple will correct this soon.
Steven (unauthenticated)
Jan 23, 2012
If you have an MDM Server and use an MDM manager such as Absolute MDM that lets you disable services, you can disable FaceTime and iChat and that will disable iMessage.
Ryan (unauthenticated)
Jan 25, 2012
I updated one of our iMacs to Lion and downloaded xCode 4.2.1 to test this out. My problem is that xCode doesn't seem to recognize devices in recovery mode. Any idea if there is a better workaround than iTunes? I typically deal with a ton of devices that need reloaded and updated through recovery mode and iTunes makes this process very long and tedious.
I'm attempting to find older versions of xCode to test with but I'm not having much luck.
Joseph Morelock
Jan 25, 2012
Ryan,
Is there a reason why you're seeing multiple devices in recovery mode? It should only go to that during the update process in xCode and then recover normally.