Skip to main content

Update iOS

Corellium supports updating an iOS device to later available versions.

Updating can be useful for testing how your application behaves on a newer version of the OS, or for testing how your application behaves when the OS is updated. For example, if you have a virtual iPhone 12 running iOS 14.1, you'll be able to upgrade to iOS 15.1.

Updating iOS includes support for installing pre-release (beta) versions.

note

Access to this feature is exclusive to certain plans. To find the plan comparison page, click on your desired license type: Falcon, Viper, Solo.

If you wish to inquire about more features, reach out to our sales team here.

Updating your OS version​

Using the Corellium UI​

To update your OS version, you will need to go to Settings > General in the Corellium UI. Scroll down to the section titled "Update iOS Version".

Upgrade Device Step 1

From here, select a version to upgrade to, then press "Save changes"

Upgrade Device Step 2

You'll be presented with a confirmation dialog. Press "Update" to continue.

Upgrade Device Step 3

Wait for the device to upgrade and reboot.

Upgrade Device Step 4

You'll be presented with a confirmation once the device has finished upgrading. Here, you'll see the device version has been updated.

Upgrade Device Step 5

Close the confirmation dialog and examine the toolbar to see the new version.

Using the Corellium API / SDK​

To update your OS version, you can use one of the following endpoints from our various APIs and SDKs:

Example JavaScript​

Here is an example of how to update an instance using the JavaScript API:

// NODE_TLS_REJECT_UNAUTHORIZED=0
var { ApiClient, CorelliumApi } = require('@corellium/client-api');

var defaultClient = new ApiClient('https://app.corellium.com/api');
// Configure Bearer (ApiToken or JWT) access token for authorization: BearerAuth
var BearerAuth = defaultClient.authentications['BearerAuth'];
BearerAuth.accessToken = '[access_token]';
// BearerAuth.accessToken = process.env.CORELLIUM_API_ACCESS_TOKEN;

var api = new CorelliumApi(defaultClient)

// var args = process.argv.slice(2);
var instanceId = '[instance_id]' // args[0]
var os = '16.1' // args[1]
var osbuild = '20B79' // args[2]

var instanceUpgradeBody = {
os,
osbuild
};

api.v1UpgradeInstance(instanceId, instanceUpgradeBody).then(() => {
console.log('API called successfully.');
}, (error) => {
console.error(error);
});

Example Python​

Here is an example of how to update an instance using the Python API:

import asyncio
import corellium_api
from corellium_api.rest import ApiException

# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.

# Configure Bearer authorization (ApiToken or JWT): BearerAuth
configuration = corellium_api.Configuration(
host = "https://app.corellium.com/api"
ssl_ca_cert = "./ca_cert.cer"
)
configuration.access_token = '[access_token]'

async def main():
# Enter a context with an instance of the API client
async with corellium_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium_api.CorelliumApi(api_client)
try:
instance_id = '[instance_id]'

api_response = await api_instance.v1_upgrade_instance(instance_id, {
'os': '16.1',
'osbuild': '20B79'
})
print(api_response)
except ApiException as e:
print("Exception when calling CorelliumApi->v1_upgrade_instance: %s\n" % e)

asyncio.run(main())

Notes​

  • If you're on an on-site instance, the relevant IPSWs will need to be sourced on a network-enabled device then added to your on-site instance before updating. Learn more about adding firmware on our adding custom IPSWs article .
  • Updating an iOS device only works via the "restore" process - not "over the air" (OTA) updates.
  • When an iOS device is updated, the stock Apple apps (Mail, Reminders, etc.) are automatically scheduled for an update due to a conflict in their current app signatures and those stored in the Trust Cache. Until the update is complete, they are marked as invalidated by iOS. This is a normal process and does not affect the functionality of the device; however, it does mean you will need an internet connection to update the apps.
  • Application binaries can not be restored because they require an Apple account — same as for all Corellium virtual devices, there's no App Store access so you will need to source application binaries manually.