Guide to futurerestore Part 1: How to set a generator

This is Part 1 of a two-part guide on how to use futurerestore.

Before attempting this guide, everyone should read the introductory article, Guide to futurerestore: Introduction. It will explain whether this guide applies to you, as well as making sure that you fulfil the requirements for it to work.

If you currently have a jailbreak and you want to move to a different firmware with futurerestore’s generator mode, you must follow this guide first before following Part 2.

If you currently have no jailbreak, and you want to move to a different firmware with futurerestore’s Apnonce collision mode, you can skip this guide and head straight to Part 2. This method does not apply to most users.

Before you begin following the instructions, read the entire guide (Parts 1 & 2) through once. This will save time and prevent errors. Make sure you have all the required files ready before you begin. These are listed in the introductory article. Be prepared to continue directly from Part 1 to Part 2 of the guide. Have both open, and leave enough time to follow them one after each other.

This guide can be used to move between any two firmwares in principle, BUT ONLY IF you meet all the requirements listed in the introductory article. Examples of futurerestores which are possible at the time of writing include, but are in no way limited to, iOS 13.5 > 14.3, iPadOS 13.2 > 14.3, iOS 12.4 > 14.3, iOS 11.4.1 > 14.2, and tvOS 13.4.8 > 14.4.

Finding the generator your blobs were saved with

The generator method of futurerestore requires you to set a known generator on your device before using futurerestore. So naturally we must first find the generator that our .shsh2 blobs were saved with, in order to set it on our device. For A12+ users, blobs are saved with an Apnonce, but that Apnonce still corresponds to a unique generator they chose when saving their blobs, or that was set on their device before saving blobs.

Although A12+ blobs are technically saved with an Apnonce rather than a generator, users must still know which generator created the Apnonce their blobs were saved with, and they must still set that matching generator on their device before they can use blobs saved with that matching Apnonce. More detail on this is in our A12+ blob saving guide. A11- users only need to worry about what generator they saved their blobs with.

If you already know all about this and know for sure what generator you specified when saving your blobs, you can skip to the Setting your generator section. However, I recommend following this section anyway to double-check you know your blob’s generator, before risking a failed restore.

Checking inside your blob to find the generator

This is the recommended, and easiest, way to check what generator your blobs were saved with. Try this first, before other more involved methods. Right-click your blob, select Open With… and choose a text editor of your choice (I use TextEdit or TextWrangler). Once open, hit cmd-f to search the file and type in generator to locate the generator field. Copy the generator value, and paste it somewhere safe for later. Afterwards, quit your .shsh2 file without making any edits.

Note: not all blobs will have the generator field inside them. If your blob has no generator field in it, do not panic. Some blob-saving services do not save the generator inside the blob, and users who saved blobs with a specific Apnonce (such as A12+ users) also might not find the generator field, depending on how they saved their blobs. See below.

Checking your blob-saving service to find your generator

If your .shsh2 file does not have a generator field inside it, try to find out what default generator your jailbreak or blob-saving service uses. For example, unless you specify otherwise, TSS Saver uses a default generator of 0x1111111111111111. If you used TSS Saver to save blobs and didn’t manually specify a different generator, it is likely to be that. If you saved blobs on your device while jailbroken with the unc0ver jailbreak, your generator is also likely to be 0x1111111111111111, as that is the default generator set by unc0ver too. The System Info tweak does not use that default generator, instead using a random generator, which can be found at shsh.host/YOUR_ECID. If you used the Generator Auto-setter tweak on checkra1n, the default is also 0x1111111111111111 unless changed. Other jailbreaks (such as Odyssey) or other blob-saving services (such as the Telegram bot, Discord, or Blobsaver) may save blobs with a different generator, and it will be up to you to confirm what it is, either from the service’s instructions, or from inside your saved blobs.

Setting your generator

Once you know what generator your blobs were saved with, you must set that same known generator on your device, which requires a jailbreak or a generator-setter. How to set a known generator varies depending on what jailbreak/generator-setter you are using. Find the situation which applies to you below, and follow that section only.

unc0ver/Odyssey/Chimera

This method works on most recent jailbreaks (>=11.0), on iOS, iPadOS, and tvOS. You can set your generator via the jailbreak app itself. Open the jailbreak app, open its settings page, and enter the same generator you found in the previous section, the one which your blobs were saved with. You may need to press Apply or similar and/or respring your device to finish setting the generator.

checkra1n (A11 and below only)

You can set your generator by adding the following repo to your device:

https://halo-michael.github.io/repo

And installing the package called Generator Auto Setter. Once installed, go to your tweaks in the Settings app, find Generator Auto Setter, enter a generator of your choice, and select Set.

Other jailbreaks w/tfp0 functionality

If your jailbreak does not have a built-in generator-setter, you can set it via the command line, provided the jailbreak has tfp0 functionality. Simply install a Terminal from Cydia/Zebra/Sileo on your iOS, iPadOS, or tvOS device, or SSH into your device from a computer. Once you are at the command prompt, type:

nvram com.apple.System.boot-nonce=YOUR_GENERATOR

Replace YOUR_GENERATOR with the generator from your own .shsh2 blob, which you noted down in the first section. To check that the generator is saved correctly in nvram, type the following command at the Terminal prompt:

nvram -p

Terminal will print out all the boot commands for your device. Make sure that you can see com.apple.System.boot-nonce in the list, and that it has your generator value set.

Older jailbreaks without tfp0 functionality

If you have neither a built-in generator-setter in your jailbreak app, nor a jailbreak with tfp0 functionality (preventing you from setting a generator from the command line), you will need to patch your device to enable it. To do so on iOS 9 and early iOS 10 firmwares, see our guide on using nonceEnabler. If this tool is not compatible with your device/jailbreak/firmware, you will have to find a working tfp0 patch for your situation, which is beyond the scope of this article.

Finishing up

Once you have successfully found the generator your blobs were saved with (or the generator which created the Apnonce your blobs were saved with, for A12+ devices), and successfully set that generator on your jailbroken device, you are ready to use futurerestore!

Continue straight on to Part 2 of the guide to upgrade/downgrade/restore to an unsigned firmware.