Difference between revisions of "OTA Updates"

From The iPhone Wiki
Jump to: navigation, search
m (External links: Adjusted bullet levels.)
m
 
(106 intermediate revisions by 17 users not shown)
Line 1: Line 1:
{{float toc|right}}
+
{{float toc|left}}
'''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 checks an XML-based PLIST file on mesu.apple.com for updates. The updates are delivered in plain unencrypted ZIP files.
+
'''OTA Updates''' ('''Over-the-Air Updates''', also known 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 checks an XML-based PLIST file on mesu.apple.com or sends a POST JSON request to gdmf.apple.com (codenamed Pallas) for updates. The updates are delivered in plain unencrypted ZIP files.
   
 
== OTA Update contents ==
 
== OTA Update contents ==
We now know three versions of OTA updates. 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.
+
There are three known versions of OTA updates. OTA update bundles contain 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.
   
 
''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.), ''payloadv2'' or ''payload'' (depends on PackageVersion value of ''AssetData/Info.plist'' file) and ''Info.plist'' file which describes the update. ''Info.plist'' file from ''AssetData'' folder contains ''PackageVersion'' field which can be 1.0, 2.0 or 3.0.
 
''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.), ''payloadv2'' or ''payload'' (depends on PackageVersion value of ''AssetData/Info.plist'' file) and ''Info.plist'' file which describes the update. ''Info.plist'' file from ''AssetData'' folder contains ''PackageVersion'' field which can be 1.0, 2.0 or 3.0.
Line 17: Line 17:
   
 
=== Format 3.0 ===
 
=== Format 3.0 ===
  +
There are quite a number of changes to note between format 2.0 and 3.0. In particular, the filesystem contents are now stored in a large, proprietary archive.
''payloadv2'' folder replaced ''payload'' folder in updates with package version 3.0. It has no ''added'' folder anymore, but instead contains ''links.txt'' file which describes symlinks that should be created during update, removed.txt which is actually a list of files to delete before (!) update, ''prepare_patches'' which might contain patches that are to be applied before update ([https://theiphonewiki.com/Update_Ramdisk update ramdisk] patch), ''payload'' and ''prepare_payload'' files which might store new files (files that did not exist in previous iOS version), but files from ''prepare_payload'' are extracted before files from ''payload'', and ''patches'' folder which has the same file hierarchy as in pre-8.1.2 updates, but contains patches in BXDIFF41 format (they can be extracted with ''bxpatch'' utility from [http://github.com/npupyshev/bxdiff there]). I'll describe almost each file's structure.
 
*'''links.txt''' is just a list of strings. Strings that begin with '=' are symlink targets and following strings that begin with '+' are places where symlinks should be created.
 
*'''removed.txt''' contains a list of files that should be removed before update starts.
 
*'''payload''' and '''prepare_payload''' are files in some proprietary format. More details about them and a tool to extract them can be found here [http://newosxbook.com/articles/OTA.html "Taking apart iOS OTA Updates: Peeking into Over-The-Air Update bundles in iOS"] - by Jonathan Levin. A script built over that tool which will automatically retrieve a binary from a device and patch it with the OTA update can be found in the [http://newosxbook.com/articles/OTA2.html "followup article"].
 
   
  +
* The '''added''' folder no longer exists.
=== See Also ===
 
  +
* '''links.txt''' is just a list of strings. Strings that begin with '=' are symlink targets and following strings that begin with '+' are places where symlinks should be created.
* [[Software Update Service]]
 
  +
* '''patches''' no longer use the BSDIFF40 format; they use a modified version dubbed BXDIFF41.<ref name="bxdiff" />
  +
* '''payload''' and '''prepare_payload''' hold the filesystem contents in a proprietary format.<ref>http://newosxbook.com/articles/OTA.html</ref> As the name implies, ''prepare_payload'' is extracted first.
  +
* The '''payloadv2''' folder replaces the '''payload''' folder in updates packaged in format 3.0.
  +
* '''removed.txt''' contains a list of files that should be removed before update starts.
  +
* '''payload.bom''' now contains SHA1 hashes of all files in the '''AssetData''' folder.
   
  +
==== iOS 10.3 ====
== Issues With [[Jailbreak]]ing ==
 
  +
With iOS 10.3, Apple began to use the same "delta" package for multiple firmware versions (e.g. iOS 7.1 through 7.1.2 receive the same ZIP file).
*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.
 
  +
* An additional key called <code>ComboAsset</code> is included in the Info.plist, which is an array of dictionaries containing information for supported versions.
  +
* The <code>PrerequisiteBuild</code> and <code>PrerequisiteOSVersion</code> keys of Info.plist are still strings. However, the string may contain multiple versions and build numbers, separated with semicolons.
  +
  +
It is otherwise the same as before.
  +
  +
==== iOS 11 ====
  +
iOS 11 introduced more changes to Format 3.0. (A <code>PackageVersion</code> of 3.0 continues to be listed.)
  +
  +
* The new '''app_patches''' folder handles patching of removable stock apps, such as Mail.app and iTunes Store.app, to extract them, everything before the PBZX header needs to be removed.
  +
* '''patches''' now uses the BXDIFF50 format.<ref name="bxdiff" />
  +
* The payload.000-999 files use the AppleArchive compression. They can be extracted using the built-in macOS yaa command line tool or by adding the .aar extension and opening the file with the built-in macOS Archive Utility or Keka.
  +
  +
== Conflicts With [[Jailbreak]]ing ==
  +
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.
  +
  +
While jailbroken, a device cannot install OTA updates successfully. 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..." and will never show any updates available for installation). 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.
   
 
== OTA updates list ==
 
== OTA updates list ==
  +
=== Accessories ===
* [[OTA Updates/Apple TV|Apple TV]]
 
  +
==== AirPods ====
* [[OTA Updates/Apple Watch|Apple Watch]]
 
* [[OTA Updates/iPad|iPad]]
+
{{:OTA Updates/AirPods}}
  +
* [[OTA Updates/iPad mini|iPad mini]]
 
  +
==== AirTag ====
* [[OTA Updates/iPhone|iPhone]]
 
* [[OTA Updates/iPod touch|iPod touch]]
+
* [[OTA Updates/AirTag|AirTag]]
  +
  +
==== Apple Pencil ====
  +
* [[OTA Updates/Apple Pencil (1st generation)|Apple Pencil (1st generation)]]
  +
* [[OTA Updates/Apple Pencil (2nd generation)|Apple Pencil (2nd generation)]]
  +
  +
==== [[Beats]] ====
  +
* [[OTA Updates/BeatsX|Beats<sup>X</sup>]]
  +
* [[OTA Updates/Beats Fit Pro|Beats Fit Pro]]
  +
* [[OTA Updates/Beats Flex|Beats Flex]]
  +
  +
==== [[Beats Solo]] ====
  +
* [[OTA Updates/Beats Solo3 Wireless|Beats Solo<sup>3</sup> Wireless]]
  +
* [[OTA Updates/Beats Solo Pro|Beats Solo Pro]]
  +
  +
==== [[Beats Studio]] ====
  +
* [[OTA Updates/Beats Studio3 Wireless|Beats Studio<sup>3</sup> Wireless]]
  +
* [[OTA Updates/Beats Studio Buds|Beats Studio Buds]]
  +
  +
==== [[Powerbeats]] ====
  +
* [[OTA Updates/Powerbeats3 Wireless|Powerbeats<sup>3</sup>]]
  +
* [[OTA Updates/Powerbeats Pro|Powerbeats Pro]]
  +
* [[OTA Updates/Powerbeats|Powerbeats]]
  +
  +
==== Displays ====
  +
* [[OTA Updates/Studio Display/15.x|Studio Display]]
  +
* [[OTA Updates/Pro Display XDR|Pro Display XDR]]
  +
  +
==== Siri Remote ====
  +
{{:OTA Updates/Siri Remote}}
  +
  +
==== Smart Keyboard ====
  +
* [[OTA Updates/Smart Keyboard|Smart Keyboard]]
  +
* [[OTA Updates/Smart Keyboard Folio|Smart Keyboard Folio]]
  +
  +
=== Apple TV ===
  +
{{:OTA Updates/Apple TV}}
  +
  +
=== Apple Watch ===
  +
{{:OTA Updates/Apple Watch}}
  +
  +
=== HomePod ===
  +
{{:OTA Updates/HomePod}}
  +
  +
=== iPad ===
  +
{{:OTA Updates/iPad}}
  +
  +
=== iPad Air ===
  +
{{:OTA Updates/iPad Air}}
  +
  +
=== iPad Pro ===
  +
{{:OTA Updates/iPad Pro}}
  +
  +
=== iPad mini ===
  +
{{:OTA Updates/iPad mini}}
  +
  +
=== iPhone ===
  +
{{:OTA Updates/iPhone}}
  +
  +
=== iPod touch ===
  +
{{:OTA Updates/iPod touch}}
  +
  +
=== Mac ===
  +
{{:OTA Updates/Mac}}
   
 
== External links ==
 
== External links ==
  +
* Jonathan Levin's examination of OTA updates
* Public Software Update XMLs:
 
  +
** [http://newosxbook.com/articles/OTA.html Taking apart iOS OTA Updates]
** [http://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS] (including [[K66AP|Apple TV 2G]] and [[Apple TV 3G]])
 
  +
** [http://newosxbook.com/articles/OTA2.html Recreating the iOS filesystem from an OTA]
** [http://mesu.apple.com/assets/tv/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS]
 
  +
** [http://newosxbook.com/articles/OTA3.html Recreating the iOS filesystem from an OTA, revisited for tvOS]
** [http://mesu.apple.com/assets/watch/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS]
 
  +
** [http://newosxbook.com/articles/OTA4.html Searching through an OTA update]
* Beta Software Update XMLs:
 
  +
** [http://newosxbook.com/articles/OTA5.html XZ strikes back]
** [http://mesu.apple.com/assets/iOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS]
 
  +
*** [http://mesu.apple.com/assets/seed-R40.Subdivide/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml Public Beta]
 
  +
=== Software Update XMLs ===
** [http://mesu.apple.com/assets/tvOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS]
 
  +
* [https://mesu.apple.com/version.xml Apple TV (1st generation)]
** [http://mesu.apple.com/assets/watchOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS]
 
  +
* [https://mesu.apple.com/version_ATV4.xml Apple TV (for releases prior to iOS 6.0)]
  +
* [https://mesu.apple.com/assets/audio/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml audioOS]
  +
* [https://mesu.apple.com/assets/audio/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain.xml audioOS UpdateBrain]
  +
* [https://mesu.apple.com/assets/audio/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml audioOS Documentation]
  +
* [https://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS] (includes [[K66AP|Apple TV (2nd generation)]] and [[Apple TV (3rd generation)]] releases after iOS 6.0)
  +
* [https://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml iOS Documentation]
  +
* [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain.xml iOS UpdateBrain]
  +
* [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS]
  +
* [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain.xml tvOS UpdateBrain]
  +
* [https://mesu.apple.com/assets/watch/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS]
  +
* [https://mesu.apple.com/assets/com_apple_MobileAsset_WatchSoftwareUpdateDocumentation/com_apple_MobileAsset_WatchSoftwareUpdateDocumentation.xml watchOS Documentation]
  +
* [https://mesu.apple.com/assets/watch/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain.xml watchOS UpdateBrain]
  +
* [https://swscan.apple.com/content/catalogs/others/index-12-10.16-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz macOS SUCatalog (InstallAssistants, and other assets)]
  +
* [https://swscan.apple.com/content/catalogs/others/index-rosettaupdateauto-1.sucatalog.gz macOS Rosetta 2 SUCatalog (Rosetta 2 packages)]
  +
* [https://swscan.apple.com/content/catalogs/others/index-windows-1.sucatalog.gz macOS Windows SUCatalog (Boot Camp drivers)]
  +
* Accessory Software Update XMLs:
  +
** Adapters
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1619_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1619_EA.xml Lightning to USB 3 Camera Adapter]
  +
** [[List of AirPods|AirPods]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1523_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1523_EA.xml AirPods (1st generation)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2032_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2032_EA.xml AirPods (2nd generation)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2564_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2564_EA.xml AirPods (3rd generation)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2084_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2084_EA.xml AirPods Pro (1st generation)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2618/com_apple_MobileAsset_UARP_A2618.xml AirPods Pro (2nd generation)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2096_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2096_EA.xml AirPods Max]
  +
** [[AirTag]]s
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_DurianFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_DurianFirmware.xml AirTag]
  +
** [[Apple Pencil]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessStylusFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessStylusFirmware.xml Apple Pencil (1st generation)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessStylusFirmware_2/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessStylusFirmware_2.xml Apple Pencil (2nd generation)]
  +
** [[Beats]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1763_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1763_EA.xml Beats<sup>X</sup>]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2577_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2577_EA.xml Beats Fit Pro]
  +
** [[Beats Solo]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1796_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1796_EA.xml Beats Solo<sup>3</sup> Wireless]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1881_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1881_EA.xml Beats Solo Pro]
  +
** [[Beats Studio]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1914_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1914_EA.xml Beats Studio<sup>3</sup> Wireless]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2513/com_apple_MobileAsset_UARP_A2513.xml Beats Studio Buds]
  +
** [[Powerbeats]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1747_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1747_EA.xml Powerbeats<sup>3</sup>]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2048_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2048_EA.xml Powerbeats Pro]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2015_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2015_EA.xml Powerbeats]
  +
** Magic Accessories
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_TrackpadFirmware_6/com_apple_MobileAsset_MobileAccessoryUpdate_TrackpadFirmware_6.xml Magic Trackpad 2]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardFirmware_5/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardFirmware_5.xml Magic Keyboard (1st generation)]
  +
** [[MagSafe]] and Magnetic chargers
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2515/com_apple_MobileAsset_UARP_A2515.xml Apple Watch Magnetic Charging Cable]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2384/com_apple_MobileAsset_UARP_A2384.xml MagSafe Battery Pack]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2140/com_apple_MobileAsset_UARP_A2140.xml MagSafe Charger]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2463/com_apple_MobileAsset_UARP_A2463.xml MagSafe Charger (MFi Module) ''A2463'']
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2728/com_apple_MobileAsset_UARP_A2728.xml MagSafe Charger (MFi Module) ''A2728'']
  +
** Power Adapters
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2676/com_apple_MobileAsset_UARP_A2676.xml 35W Dual USB-C Port Power Adapter]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_UARP_A2571/com_apple_MobileAsset_UARP_A2571.xml 35W Dual USB-C Port Compact Power Adapter]
  +
** [[Siri Remote]]
  +
*** [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware.xml Siri Remote (1st generation)]
  +
*** [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware_2/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware_2.xml Siri Remote (Rev A)]
  +
*** [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware_3/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware_3.xml Siri Remote (2nd generation)]
  +
** [[Smart Battery Case]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1585_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1585_EA.xml iPhone 6/6s Smart Battery Case]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1765_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1765_EA.xml iPhone 7 Smart Battery Case]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2070_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2070_EA.xml iPhone XS Smart Battery Case]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2071_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2071_EA.xml iPhone XS Max Smart Battery Case]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2121_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2121_EA.xml iPhone XR Smart Battery Case]
  +
** Displays
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1999-19G_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1999-19G_EA.xml Pro Display XDR]
  +
** [[Smart Keyboard]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware.xml Smart Keyboard]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_4/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_4.xml Smart Keyboard Folio (11-inch)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_5/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_5.xml Smart Keyboard Folio (12.9-inch)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_6/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_6.xml Smart Keyboard Folio (unknown)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_7/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware_7.xml Smart Keyboard Folio (unknown)]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_MiniKeyboardCoverFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_MiniKeyboardCoverFirmware.xml Smart Keyboard (mini) (unknown)]
  +
  +
* Other XMLs with unknown uses
  +
** [https://mesu.apple.com/assets/com_apple_MobileAsset_IOAccessoryManager/com_apple_MobileAsset_IOAccessoryManager.xml IOAccessoryManager]
  +
** [https://swscan.apple.com/content/catalogs/others/index-mobilestoredemo-1.sucatalog.gz MobileStoreDemo SUCatalog]
  +
  +
== References ==
  +
<references>
  +
<ref name="bxdiff">https://github.com/npupyshev/bxdiff</ref>
  +
</references>
  +
  +
== See Also ==
  +
* [[Beta OTA Updates]]
  +
* [[Firmware]]
  +
* [[Beta Firmware]]
  +
* [[Firmware Keys]]
  +
* [[RecoveryOSUpdates]]
  +
* [[Rapid Security Responses]]
  +
* [[Beta Rapid Security Responses]]
  +
* [[Software Update Service]]
   
 
[[Category:Firmware]]
 
[[Category:Firmware]]

Latest revision as of 17:45, 29 November 2022

OTA Updates (Over-the-Air Updates, also known 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 checks an XML-based PLIST file on mesu.apple.com or sends a POST JSON request to gdmf.apple.com (codenamed Pallas) for updates. The updates are delivered in plain unencrypted ZIP files.

OTA Update contents

There are three known versions of OTA updates. OTA update bundles contain 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.

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.), payloadv2 or payload (depends on PackageVersion value of AssetData/Info.plist file) and Info.plist file which describes the update. Info.plist file from AssetData folder contains PackageVersion field which can be 1.0, 2.0 or 3.0.

Format 1.0

These updates do not contain payload.bom file and are deprecated. These updates do not contain any .bom files.

  • archive.cpio.gz - the actual cpio patch archive (encrypted). Contains a list of BSDIFF40 patches and baseband firmware updates, if available, with the associated flashing tools (bbupdater/imeisv).
  • Info.plist.signature - asymmetric signature of Info.plist validated against /System/Library/Lockdown/iPhoneSoftwareUpdate.pem.
  • libupdate_brain.dylib - stage 2 update process library (encrypted).

Format 2.0

All updates with 2.0 package version have payload folder inside AssetData instead of archive.cpio.gz file from 1.0 updates. It contains only two folders: added folder with unencrypted files which are to be added during update process and patches folder. patches folder is used to store BSDIFF40 patches that are applied to files during update process. They can be easily applied manually with bsdiff utility. patches folder file hierarchy is similar to devices root file system (ex. patch for /sbin/launchctl will be found at AssetData/payload/patches/sbin/launchctl). AssetData also contains payload.bom.signature that replaces Info.plist.signature. payload.bom.signature is used to check payload.bom which contains CRC32 of all files inside AssetData folder.

Format 3.0

There are quite a number of changes to note between format 2.0 and 3.0. In particular, the filesystem contents are now stored in a large, proprietary archive.

  • The added folder no longer exists.
  • links.txt is just a list of strings. Strings that begin with '=' are symlink targets and following strings that begin with '+' are places where symlinks should be created.
  • patches no longer use the BSDIFF40 format; they use a modified version dubbed BXDIFF41.[1]
  • payload and prepare_payload hold the filesystem contents in a proprietary format.[2] As the name implies, prepare_payload is extracted first.
  • The payloadv2 folder replaces the payload folder in updates packaged in format 3.0.
  • removed.txt contains a list of files that should be removed before update starts.
  • payload.bom now contains SHA1 hashes of all files in the AssetData folder.

iOS 10.3

With iOS 10.3, Apple began to use the same "delta" package for multiple firmware versions (e.g. iOS 7.1 through 7.1.2 receive the same ZIP file).

  • An additional key called ComboAsset is included in the Info.plist, which is an array of dictionaries containing information for supported versions.
  • The PrerequisiteBuild and PrerequisiteOSVersion keys of Info.plist are still strings. However, the string may contain multiple versions and build numbers, separated with semicolons.

It is otherwise the same as before.

iOS 11

iOS 11 introduced more changes to Format 3.0. (A PackageVersion of 3.0 continues to be listed.)

  • The new app_patches folder handles patching of removable stock apps, such as Mail.app and iTunes Store.app, to extract them, everything before the PBZX header needs to be removed.
  • patches now uses the BXDIFF50 format.[1]
  • The payload.000-999 files use the AppleArchive compression. They can be extracted using the built-in macOS yaa command line tool or by adding the .aar extension and opening the file with the built-in macOS Archive Utility or Keka.

Conflicts 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.

While jailbroken, a device cannot install OTA updates successfully. 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..." and will never show any updates available for installation). 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.

OTA updates list

Accessories

AirPods

AirTag

Apple Pencil

Beats

Beats Solo

Beats Studio

Powerbeats

Displays

Siri Remote

Smart Keyboard

Apple TV

Note that the Apple TV updates are organized by marketing version (the version displayed on the Apple TV), not the version of iOS it is based on.

Apple Watch

HomePod

iPad

iPad Air

iPad Pro

iPad mini

iPhone

iPod touch

Mac

External links

Software Update XMLs

References

See Also