OTA Updates

OTA Updates (Over-the-Air Updates, also know as wireless updates) were introduced with iOS 5. This allows a user of a device to go into Settings > General > Software Update and download and install the latest iOS software on-device, without the need for iTunes. The device contacts mesu.apple.com to check for updates. The updates are delivered in plain unencrypted ZIP files.

OTA Update contents
OTA update bundle contains an Info.plist file and two folders: META-INF and AssetData. META-INF has only one file com.apple.ZipMetadata.plist which describes bundle contents. All useful information is stored in AssetData folder.

AssetData contains three Bill-Of-Materials files (they can be viewed with lsbom and created with mkbom). pre.bom states filesystem before update, post.bom - after and payload.bom describes the patches to be applied during update process. It also contains boot folder where bootchain-related files are stored (iBoot, kernelcache, etc.), and payloadv2 folder with Update Ramdisk patch, links.txt, removed.txt and update patches inside. links.txt tells iOS what symlinks to create during update process and removed.txt tells which files shall be removed.

Patches are stored in AssetData/payloadv2/prepare_patches and AssetData/payloadv2/patches folders. These folders have file hierarchy similar to device's rootfs. AssetData/payloadv2/prepare_patches contains only Update Ramdisk patch. Other patches are stored in patches folder. They have new BXDIFF41 format which is actually BSDIFF40 but with LZMA compression instead of BZip2. You can use use bxpatch from to apply these patches.

More details: "Taking apart iOS OTA Updates: Peeking into Over-The-Air Update bundles in iOS" - by Jonathan Levin, 3/18/14

Issues with jailbreaking

 * OTA Updates are often known to cause issues when jailbreaking a device. This became evident with evasi0n7, because most devices that were updated OTA, had to be restored with iTunes first, since the jailbreak would often fail if it was not.
 * You cannot update OTA, when jailbroken. If you try, it is likely that your device will either be stuck in a boot loop, or certain things will not work correctly. Newer jailbreaks such as evasi0n and evasi0n7 disable the OTA search daemon, which prevents the device from searching for an update (it will just stay indefinitely at "Checking for Update..."). This can also be done manually on any jailbreak, by deleting or moving /System/Library/LaunchDaemons/com.apple.mobile.softwareupdated.plist and /System/Library/LaunchDaemons/com.apple.softwareupdateservicesd.plist from your device. It can also be done with tools such as iCleaner Pro.

Going from 5.0.x to 6.1.3
On iPad 2 and iPhone 4s, any users on iOS 5.0 or 5.0.1 must go to 6.1.3 via OTA before they can find and install an OTA update for 8.x. This is not a mistake, but was planned to keep the amount of OTA files down.

= OTA updates list =

Apple TV
NOTE: "Marketing Version" is the version that the Apple TV reports in its "About" screen.