Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPSW 18.1 restore error : Variant 'Recovery Customer Install' not found in BuildManifest #8

Open
Airwinn opened this issue Dec 4, 2024 · 15 comments

Comments

@Airwinn
Copy link

Airwinn commented Dec 4, 2024

idevicerestore 1.0.0-226-gbb5591d (libirecovery 1.2.1-9-g0f0928a, libtatsu 1.0.4)
irecv_event_cb: device 001e412230d9a0a6 (udid: N/A) connected in DFU mode
Found device in DFU mode
ECID: 8515864405581990
Identified device as b238aap, AudioAccessory1,1
Device Product Version: N/A
Device Product Build: N/A
Extracting BuildManifest from IPSW
IPSW Product Version: 18.1
IPSW Product Build: 22J580 Major: 22
Device supports Image4: true
Variant: Customer Erase Install (IPSW)
This restore will erase all device data.

[ WARNING ]
You are about to perform an ERASE restore. ALL DATA on the target device #
will be IRREVERSIBLY DESTROYED. If you want to update your device without #
erasing the user data, hit CTRL+C now and restart without -e or --erase #
command line switch. #
If you want to continue with the ERASE, please type YES and press ENTER. #

YES

Checking IPSW for required components...
All required components found in IPSW
Extracting filesystem from IPSW: myrootfs.dmg
[==================================================] 100.0%
Getting ApNonce in dfu mode... 7a bb ce 81 92 34 19 f6 a2 dc 87 14 36 6a 55 52 93 f1 b3 00
Trying to fetch new SHSH blob
Getting SepNonce in dfu mode... b9 44 97 43 bc 39 2d f6 2e 26 99 7b ab f2 9b c5 c0 62 9b db
Received SHSH blobs
ERROR: Variant 'Recovery Customer Install' not found in BuildManifest

@UnbendableStraw
Copy link
Owner

idevicerestore 1.0.0-226-gbb5591d (libirecovery 1.2.1-9-g0f0928a, libtatsu 1.0.4)

It looks like you are using the wrong version of idevicerestore! Please remove it first, then install the one recommend in the guide. It should look like this:

idevicerestore 1.0.0-215-gd2e1c4f (libirecovery 1.2.1, libtatsu 1.0.3)

@Slyrfecso
Copy link

Hi,

can you give link for this repository?
Thanks.

@UnbendableStraw
Copy link
Owner

UnbendableStraw commented Mar 3, 2025

@Slyrfecso We obtain the desired version of idevicerestore by doing the following;

git clone https://github.com/libimobiledevice/idevicerestore.git 
cd idevicerestore
git checkout d2e1c4f
./autogen.sh
make
sudo make install

A link to browse the idevicerestore repo where it only has up to this commit can also be had here: https://github.com/libimobiledevice/idevicerestore/tree/d2e1c4f2ab81c419d2cbb8d921fa385a0bf0433b

@Slyrfecso
Copy link

Slyrfecso commented Mar 3, 2025

@UnbendableStraw
Thank you for your help, but I didn't write I'm on mac.
"git checkout" and "make" doesn't work.
I tried these:

feketecsongor@Fekete-iMac idevicerestore % git switch -c d2e1c4f
Switched to a new branch 'd2e1c4f'
feketecsongor@Fekete-iMac idevicerestore % ./autogen.sh
...
checking whether to build static libraries... yes
./configure: line 13648: syntax error near unexpected token `libirecovery,'
./configure: line 13648: `PKG_CHECK_MODULES(libirecovery, libirecovery-1.0 >= $LIBIRECOVERY_VERSION)'

I don't know how to install.

@Slyrfecso
Copy link

Slyrfecso commented Mar 4, 2025

@UnbendableStraw @mikeromanchenko
I soled:)
I found the error in other post 2016. The solution is:
brew install pkgconf
Then your lines flowed well

feketecsongor@Fekete-iMac idevicerestore % idevicerestore -v
idevicerestore 1.0.0-215-gd2e1c4f (libirecovery 1.2.1, libtatsu 1.0.4)

Now I try the restore, I would edit the post.

Fanatastic, If I know the checkout, than I can change to any version.
I changed back to the first version 1.0.0 : a88351d
I found them here:
https://github.com/libimobiledevice/idevicerestore/actions

I tried many version, all have different problem in restore,
I think the problem is with libirecovery I have to change to older version.

Thanks for all.

@mikeromanchenko
Copy link

mikeromanchenko commented Mar 4, 2025

@UnbendableStraw @mikeromanchenko I soled:) I found the error in other post 2016. The solution is: brew install pkgconf Then your lines flowed well

feketecsongor@Fekete-iMac idevicerestore % idevicerestore -v
idevicerestore 1.0.0-215-gd2e1c4f (libirecovery 1.2.1, libtatsu 1.0.4)

Now I try the restore, I would edit the post.

When I run autogen.sh have an error: No package 'libirecovery-1.0' found.
But I've already installed all dependencies with the script.

@mikeromanchenko
Copy link

@Slyrfecso did you restore ATV finally?

@Slyrfecso
Copy link

@nikias
Copy link

nikias commented Mar 6, 2025

The reason why it fails with a newer version of idevicerestore is that the BuildManifest.plist is referring a RecoveryVariant for the build identity, but the manifest doesn't include one. How about removing the reference

<key>RecoveryVariant</key>
<string>Recovery Customer Install</string>

from the build identity entry in the manifest?

@Slyrfecso
Copy link

Slyrfecso commented Mar 6, 2025

Good idea to remove that from plist, we need to creat new restore IPSW for 13.4.8, but the older version of idevicerestore dosen't checked this, why now?
Maybe you can add option command for idevicerestore to check or not that.

I found differences between 13.4.8 and 18.3 buildmanifest.plist.

13.4.8 (official)

<key>Variant</key>
				<string>Customer Software Update</string>
				<key>VariantContents</key>
				<dict>
					<key>DFU</key>
					<string>Production</string>
					<key>Firmware</key>
					<string>Production</string>
					<key>InstalledKernelCache</key>
					<string>Production</string>
					<key>RecoveryVariant</key>
					<string>Recovery Customer Install</string>
					<key>RestoreKernelCache</key>
					<string>Production</string>
					<key>RestoreRamDisk</key>
					<string>SURamDisk</string>
				</dict>
			</dict>

18.3 (in this official, is missing recovery customer install)

<key>Variant</key>
				<string>Customer Software Update</string>
				<key>VariantContents</key>
				<dict>
					<key>Ap,ExclaveOS</key>
					<string>Production</string>
					<key>BasebandFirmware</key>
					<string>Release</string>
					<key>DCP</key>
					<string>Production</string>
					<key>DFU</key>
					<string>Production</string>
					<key>Firmware</key>
					<string>Production</string>
					<key>InitiumBaseband</key>
					<string>Production</string>
					<key>InstalledKernelCache</key>
					<string>Production</string>
					<key>InstalledSPTM</key>
					<string>Production</string>
					<key>OS</key>
					<string>Production</string>
					<key>RestoreKernelCache</key>
					<string>Production</string>
					<key>RestoreRamDisk</key>
					<string>Production</string>
					<key>RestoreSEP</key>
					<string>Production</string>
					<key>RestoreSPTM</key>
					<string>Production</string>
					<key>SEP</key>
					<string>Production</string>
					<key>VinylFirmware</key>
					<string>Release</string>
				</dict>
			</dict>

What do you think, if I remove all variant and I change them to 13.4.8 in the new 18.3 whitout "rci"?

@nikias
Copy link

nikias commented Mar 6, 2025

It's a change that was introduced with iOS/iPadOS 18 and the old version doesn't have support for it.

@Slyrfecso
Copy link

Slyrfecso commented Mar 6, 2025

@nikias
I have seen this option in idevicerestore.

  --variant VARIANT     Use given VARIANT to match the build identity to use,
                        e.g. 'Customer Erase Install (IPSW)'

Can you add "--variant-no" ?
Than we can remove 'Recovery Customer Install' under restore very easly.

or

Can you add option for custom BuildManifest.plist to restore?
That I can try modifications.

@nikias
Copy link

nikias commented Mar 6, 2025

It's not in VariantContents. It's in Info sub-dictionary. Just extract the ipsw, edit the BuildManifest.plist and remove the RecoveryVariant entry, so remove the two lines:

<key>RecoveryVariant</key>
<string>Recovery Customer Install</string>

I see it twice in the file. Then save the file and zip everything back together.

@Slyrfecso
Copy link

@nikias
That was easy, thanks, worked.
I found this on 2 place, I removed them and I found 'Recovery Customer Update Installer. I left it in.
After runned restore well.

@nikias
Copy link

nikias commented Mar 7, 2025

Yes those two places is what I meant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants