Difference between revisions of "OTA Updates"

From The iPhone Wiki
Jump to: navigation, search
m (External links: Order.)
(Software Update XMLs: Added more XMLs with a slightly ambiguous purpose.)
(43 intermediate revisions by 11 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 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 21: Line 21:
 
* The '''added''' folder no longer exists.
 
* 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.
 
* '''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.<ref>https://github.com/npupyshev/bxdiff</ref>
+
* '''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.
 
* '''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.
 
* 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.
 
* '''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.
 
* '''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 <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.
  +
* '''patches''' now uses the BXDIFF50 format.<ref name="bxdiff" />
   
 
== Conflicts With [[Jailbreak]]ing ==
 
== 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.
 
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..."). 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.
+
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 ===
  +
==== AirPods ====
  +
{{:OTA Updates/AirPods}}
  +
  +
==== Apple Pencil ====
  +
* [[OTA Updates/Apple Pencil (1st generation)|Apple Pencil (1st generation)]]
  +
* [[OTA Updates/Apple Pencil (2nd generation)|Apple Pencil (2nd generation)]]
  +
  +
==== [[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]]
  +
  +
==== [[BeatsX|Beats<sup>X</sup>]] ====
  +
* [[OTA Updates/BeatsX|Beats<sup>X</sup>]]
  +
* [[OTA Updates/Beats Flex|Beats Flex]]
  +
  +
==== [[Powerbeats]] ====
  +
* [[OTA Updates/Powerbeats3 Wireless|Powerbeats<sup>3</sup>]]
  +
* [[OTA Updates/Powerbeats Pro|Powerbeats Pro]]
  +
* [[OTA Updates/Powerbeats|Powerbeats]]
  +
  +
==== Siri Remote ====
  +
{{:OTA Updates/Siri Remote}}
  +
  +
==== Smart Keyboard ====
  +
* [[OTA Updates/Smart Keyboard|Smart Keyboard]]
  +
* [[OTA Updates/Smart Keyboard Folio|Smart Keyboard Folio]]
  +
 
=== Apple TV ===
 
=== Apple TV ===
 
{{:OTA Updates/Apple TV}}
 
{{:OTA Updates/Apple TV}}
 
==== Accessories ====
 
* [[OTA Updates/Siri Remote|Siri Remote]]
 
   
 
=== Apple Watch ===
 
=== Apple Watch ===
 
{{:OTA Updates/Apple Watch}}
 
{{:OTA Updates/Apple Watch}}
  +
  +
=== HomePod ===
  +
{{:OTA Updates/HomePod}}
   
 
=== iPad ===
 
=== iPad ===
 
{{:OTA Updates/iPad}}
 
{{:OTA Updates/iPad}}
   
==== Accessories ====
+
=== iPad Air ===
* [[OTA Updates/Apple Pencil|Apple Pencil]]
+
{{:OTA Updates/iPad Air}}
  +
* [[OTA Updates/Smart Keyboard|Smart Keyboard]]
 
  +
=== iPad Pro ===
  +
{{:OTA Updates/iPad Pro}}
   
 
=== iPad mini ===
 
=== iPad mini ===
Line 57: Line 104:
 
=== iPod touch ===
 
=== iPod touch ===
 
{{:OTA Updates/iPod touch}}
 
{{:OTA Updates/iPod touch}}
  +
  +
=== Mac ===
  +
{{:OTA Updates/Mac}}
   
 
== External links ==
 
== External links ==
* Beta Software Update XMLs:
 
** iOS
 
*** [http://mesu.apple.com/assets/iOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS 10 Developer Beta] ([http://mesu.apple.com/assets/iOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
*** [https://mesu.apple.com/assets/iOS11DeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS 11 Developer Beta] ([https://mesu.apple.com/assets/iOS11DeveloperSeed/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
*** Public Beta
 
**** [http://mesu.apple.com/assets/seed-R40.2112/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 8.x] ([http://mesu.apple.com/assets/seed-R40.2112/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
**** [http://mesu.apple.com/assets/seed-R40.Subdivide/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 9.x] ([http://mesu.apple.com/assets/seed-R40.Subdivide/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
**** [http://mesu.apple.com/assets/iOSPublicSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 10.x] ([http://mesu.apple.com/assets/iOSPublicSeed/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
** tvOS
 
*** [http://mesu.apple.com/assets/tvOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS 10]
 
*** [http://mesu.apple.com/assets/tvOS11DeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS 11]
 
** watchOS
 
*** [http://mesu.apple.com/assets/R30.11TT05-subdivisions/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS 2.0 Public Beta]
 
*** [http://mesu.apple.com/assets/watchOSDeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS 3 Developer Beta]
 
*** [http://mesu.apple.com/assets/watchOS4DeveloperSeed/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS 4 Developer Beta]
 
* Carrier Software Update XMLs:
 
** [http://mesu.apple.com/ios5carrierseed/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 5.x] ([http://mesu.apple.com/ios5carrierseed/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
** [http://mesu.apple.com/iossixcarrierseed/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 6.x] ([http://mesu.apple.com/iossixcarrierseed/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
** [http://mesu.apple.com/carrierseedios7/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 7.x] ([http://mesu.apple.com/carrierseedios7/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
** [http://mesu.apple.com/carrierseedios8/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml 8.x] ([http://mesu.apple.com/carrierseedios8/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
 
* Public Software Update XMLs:
 
** [http://mesu.apple.com/version_ATV4.xml Apple TV (for releases prior to iOS 6.0)]
 
** [http://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS] ([http://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation]) (includes [[K66AP|Apple TV (2nd generation)]] and [[Apple TV (3rd generation)]] releases after iOS 6.0)
 
** [http://mesu.apple.com/assets/tv/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS]
 
** [http://mesu.apple.com/assets/watch/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml watchOS] ([http://mesu.apple.com/assets/com_apple_MobileAsset_WatchSoftwareUpdateDocumentation/com_apple_MobileAsset_WatchSoftwareUpdateDocumentation.xml documentation])
 
** Accessory Software Update XMLs:
 
***[http://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessStylusFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessStylusFirmware.xml Apple Pencil]
 
***[http://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware.xml Siri Remote]
 
*** [http://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_KeyboardCoverFirmware.xml Smart Keyboard]
 
* Other XMLs with unknown uses
 
** [http://mesu.apple.com/assets/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain.xml UpdateBrain]
 
 
* Jonathan Levin's examination of OTA updates
 
* Jonathan Levin's examination of OTA updates
 
** [http://newosxbook.com/articles/OTA.html Taking apart iOS OTA Updates]
 
** [http://newosxbook.com/articles/OTA.html Taking apart iOS OTA Updates]
 
** [http://newosxbook.com/articles/OTA2.html Recreating the iOS filesystem from an OTA]
 
** [http://newosxbook.com/articles/OTA2.html Recreating the iOS filesystem from an OTA]
 
** [http://newosxbook.com/articles/OTA3.html Recreating the iOS filesystem from an OTA, revisited for tvOS]
 
** [http://newosxbook.com/articles/OTA3.html Recreating the iOS filesystem from an OTA, revisited for tvOS]
  +
** [http://newosxbook.com/articles/OTA4.html Searching through an OTA update]
  +
** [http://newosxbook.com/articles/OTA5.html XZ strikes back]
  +
  +
=== Software Update XMLs ===
  +
* [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_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation])
  +
* [https://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml iOS] ([https://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdateDocumentation/com_apple_MobileAsset_SoftwareUpdateDocumentation.xml documentation]) (includes [[K66AP|Apple TV (2nd generation)]] and [[Apple TV (3rd generation)]] releases after iOS 6.0)
  +
* [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml tvOS]
  +
* [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 documentation])
  +
* (WatchOS): [https://mesu.apple.com/assets/watch/com_apple_MobileAsset_RecoveryOSUpdate/com_apple_MobileAsset_RecoveryOSUpdate.xml RecoveryOSUpdate]
  +
* Accessory Software Update XMLs:
  +
** [[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_A2084_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2084_EA.xml AirPods Pro]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A2096_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A2096_EA.xml AirPods Max]
  +
** [[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 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 Studio3|Beats Studio<sup>3</sup>]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1914_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1914_EA.xml Beats Studio<sup>3</sup> Wireless]
  +
** [[BeatsX|Beats<sup>X</sup>]]
  +
*** [https://mesu.apple.com/assets/com_apple_MobileAsset_MobileAccessoryUpdate_A1763_EA/com_apple_MobileAsset_MobileAccessoryUpdate_A1763_EA.xml Beats<sup>X</sup>]
  +
** [[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]
  +
** [[Siri Remote]]
  +
*** [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware.xml Siri Remote]
  +
*** [https://mesu.apple.com/assets/tv/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware_2/com_apple_MobileAsset_MobileAccessoryUpdate_WirelessRemoteFirmware_2.xml Siri Remote (Rev A)]
  +
** [[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_MobileSoftwareUpdate_UpdateBrain/com_apple_MobileAsset_MobileSoftwareUpdate_UpdateBrain.xml UpdateBrain]
  +
** [https://mesu.apple.com/assets/com_apple_MobileAsset_IOAccessoryManager/com_apple_MobileAsset_IOAccessoryManager.xml IOAccessoryManager]
   
 
== References ==
 
== References ==
<references />
+
<references>
  +
<ref name="bxdiff">https://github.com/npupyshev/bxdiff</ref>
  +
</references>
   
 
== See Also ==
 
== See Also ==

Revision as of 02:05, 3 May 2021

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 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.
  • patches now uses the BXDIFF50 format.[1]

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

Apple Pencil

Beats Solo

Beats Studio

BeatsX

Powerbeats

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