Reorganizing of menu options, and other changes

- Other Utilities have been split into 2: Useful Utilities, and Misc Utilities
- In Useful Utilities are the useful options such as kdfu/pwndfu, ssh ramdisk, and others
- In Misc Utilities are the other less used options
- Device Management/Operations menu is gone and merged with Misc Utilities
- One more change done here is removal of breaks in cases where it is not needed anymore
- And add sleep 1 back in clean_usbmuxd (previously removed in some previous commit)
- Anyway, more to come. The readme, wiki, documentation in general is in need of a revamp/revision, so I'll slowly but surely work on that in the next few days/weeks (or months? idk)
This commit is contained in:
LukeeGD 2025-01-03 11:31:33 +08:00
parent 006301af1b
commit 0c9464cdf1
2 changed files with 116 additions and 110 deletions

View File

@ -8,35 +8,37 @@
## Features
- Legacy iOS Kit supports all 32-bit iOS devices, and some 64-bit (A7/A8/A9/A10/A11) devices
- Devices that received iOS 16 and newer are mostly not supported and only have limited functionality (such as sideload on Linux etc.)
- S5L8900 devices (iPhone 2G, 3G, touch 1) are only partially supported, some features like SSH ramdisk are not available
- Devices that received iOS 16 and newer will only have limited functionality (such as sideload on Linux etc.)
- For S5L8900 devices (iPhone 2G, 3G, touch 1), some features like SSH ramdisk are not available
- Restore to signed OTA versions (iOS 8.4.1 and/or 6.1.3) on A5/A6 devices
- Restore some 32-bit devices to other iOS versions without blobs
- This includes downgrading iPhone 3GS, iPhone 4 GSM and CDMA, iPod touch 2, touch 3, iPad 1
- Restore with SHSH blobs on supported devices
- Restore to other iOS versions with iOS 7 blobs (powdersn0w)
- Tethered downgrades/restores to other iOS versions for A5/A6 and other devices
- Jailbreak all 32-bit iOS devices on (almost) any iOS version
- Available on iOS versions 3.0 to 9.3.4 with some exceptions
- Restore to iOS 10.3.3 (signed OTA version) on supported A7 devices
- Restore supported devices to unsigned versions with SHSH blobs
- Restore to unsigned iOS versions with iOS 7 blobs (powdersn0w)
- Restore supported 32-bit devices to unsigned iOS versions "without" blobs
- Includes downgrading iPhone 2G, 3G, 3GS, iPhone 4 GSM and CDMA, iPod touch 1, 2, 3, iPad 1
- "without" is in quotes because powdersn0w uses iOS 5/7 blobs for touch 3 and A4 devices, but it is signed for everyone to use
- Other devices however are true blobless
- Tethered downgrades/restores to supported iOS versions for A5(X)/A6(X) and some other 32-bit devices
- Jailbreak all 32-bit iOS devices on nearly any iOS version
- Available on iOS versions 3.0 to 9.3.4 with some small exceptions
- Hacktivation for iPhone 2G, 3G, 3GS, 4 GSM (activate without valid SIM card)
- [FourThree Utility](https://github.com/LukeZGD/FourThree-iPad2) - Dualboot iOS 4.3.x for the iPad 2
- Restore to iOS 10.3.3 (signed OTA version) on supported A7 devices
- Boot SSH Ramdisk for supported 32-bit and 64-bit devices
- Save Onboard SHSH blobs for supported 32-bit and 64-bit devices
- Install IPA files for supported devices with AppSync Unified installed
- Sideload IPA files for supported devices on Linux
- Save SHSH blobs for signed OTA versions for supported devices
- Save onboard and Cydia SHSH blobs for 32-bit devices
- Save SHSH blobs from Cydia servers for 32-bit devices
- Enter pwned iBSS/kDFU mode for supported 32-bit devices
- Boot SSH Ramdisk for supported 32-bit and 64-bit devices
- Save onboard SHSH blobs using SSH Ramdisk for the supported 64-bit devices
- Save onboard SHSH blobs for jailbroken 64-bit devices (deverser)
- Install [TrollStore](https://github.com/opa334/TrollStore) using SSH Ramdisk for the supported 64-bit devices on iOS 14/15
- Install [TrollStore](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/TrollStore) using SSH Ramdisk for supported 64-bit devices on iOS 14/15
- Clear NVRAM for 32-bit devices
- Device activation using ideviceactivation (useful for iOS 4 and lower)
- The latest baseband will be flashed for A5/A6 devices (for iPhone 4S, 5, 5C, iPad 4, mini 1)
- Device activation using ideviceactivation (especially useful for iOS 4 and lower)
- The latest baseband will be flashed for certain A5/A6 devices (for iPhone 4S, 5, 5C, iPad 4, mini 1)
- For more info on baseband, go to [Baseband Update](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Baseband-Update) wiki page
- Dumping and stitching baseband to IPSW (requires `--disable-bbupdate`)
- Dumping and stitching activation records to IPSW (requires `--activation-records`)
- [Data Management](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Data-Management) - Backup and restore, mount device, erase device
- [Device Operations](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Device-Operations) - Export data and battery info, shutdown/restart device, pair device
- [Data Management](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Data-Management) - Backup and restore, mount device, erase all content and settings
- [Misc Utilities](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Misc-Utilities) - Pair device, export data and battery info, shutdown/restart device, and more
## Supported devices
- [Identify your device here](https://ipsw.me/device-finder)
@ -77,7 +79,7 @@
</table>
- Restoring with SHSH blobs, jailbreaking, and using SSH ramdisks are supported on the following devices:
- iPhone 2G, 3G, iPod touch 1 (SSH ramdisks not supported)
- iPhone 2G, 3G, iPod touch 1 (SSH ramdisks not supported for these)
- iPhone 3GS, 4, 4S, 5, 5C
- iPad 1, 2, 3, 4, mini 1
- iPod touch 2, 3, 4, 5

View File

@ -74,6 +74,7 @@ clean_usbmuxd() {
return
fi
sudo killall -9 usbmuxd usbmuxd2 2>/dev/null
sleep 1
if [[ $(command -v systemctl) ]]; then
sudo systemctl restart usbmuxd
elif [[ $(command -v rc-service) ]]; then
@ -140,7 +141,7 @@ zip() {
}
# from https://unix.stackexchange.com/questions/146570/arrow-key-enter-menu#415155
function select_option {
select_option() {
if [[ $menu_old == 1 ]]; then
select opt in "$@"; do
selected=$((REPLY-1))
@ -1541,7 +1542,7 @@ device_dfuhelper3() {
device_dfuhelper() {
local opt
local rec="recovery mode "
local rec=" recovery mode"
if [[ $1 == "norec" ]]; then
rec=
fi
@ -1551,7 +1552,7 @@ device_dfuhelper() {
fi
print "* DFU Mode Helper - Get ready to enter DFU mode."
print "* If you already know how to enter DFU mode, you may do so right now before continuing."
select_yesno "Select Y to continue, N to exit $rec" 1
select_yesno "Select Y to continue, N to exit$rec" 1
if [[ $? != 1 ]]; then
if [[ -z $1 ]]; then
log "Attempting to exit Recovery mode."
@ -1918,16 +1919,15 @@ device_enter_mode() {
opt2="${selection[$?]}"
log "Placing device to pwnDFU mode using $opt2"
case $opt2 in
"ipwndfu" ) device_ipwndfu pwn; tool_pwned=$?; break;;
"ipwnder (SHAtter)" ) $ipwnder -s; tool_pwned=$?; break;;
"ipwnder (limera1n)" ) $ipwnder -p; tool_pwned=$?; break;;
"ipwndfu" ) device_ipwndfu pwn; tool_pwned=$?;;
"ipwnder (SHAtter)" ) $ipwnder -s; tool_pwned=$?;;
"ipwnder (limera1n)" ) $ipwnder -p; tool_pwned=$?;;
"ipwnder" )
mkdir image3 ../saved/image3 2>/dev/null
cp ../saved/image3/* image3/ 2>/dev/null
$ipwnder -d
tool_pwned=$?
cp image3/* ../saved/image3/
break
;;
esac
elif [[ $platform == "linux" ]]; then
@ -1960,9 +1960,9 @@ device_enter_mode() {
opt2="${selection[$?]}"
log "Placing device to pwnDFU mode using $opt"
case $opt2 in
"ipwnder32" ) $ipwnder32 -p; tool_pwned=$?; break;;
"ipwndfu" ) device_ipwndfu pwn; tool_pwned=$?; break;;
* ) ${ipwnder}2 -p; tool_pwned=$?; break;;
"ipwnder32" ) $ipwnder32 -p; tool_pwned=$?;;
"ipwndfu" ) device_ipwndfu pwn; tool_pwned=$?;;
"ipwnder"* ) ${ipwnder}2 -p; tool_pwned=$?;;
esac
fi
if [[ $tool_pwned == 2 ]]; then
@ -2393,7 +2393,7 @@ ipsw_nojailbreak_message() {
log "Jailbreak option is not available for this version. You may jailbreak$hac later after the restore"
print "* To jailbreak, select \"Jailbreak Device\" in the main menu"
if [[ $tohac == 1 ]]; then
print "* To hacktivate, go to \"Other Utilities -> Hacktivate Device\" after jailbreaking"
print "* To hacktivate, go to \"Useful Utilities -> Hacktivate Device\" after jailbreaking"
fi
}
@ -4989,7 +4989,7 @@ restore_idevicerestore() {
echo
log "Restoring done! Read the message below if any error has occurred:"
case $device_target_vers in
[1234]* ) print "* For device activation, go to: Other Utilities -> Attempt Activation";;
[1234]* ) print "* For device activation, go to: Main Menu -> Attempt Activation";;
esac
if [[ $opt != 0 ]]; then
print "* If the restore failed on updating baseband:"
@ -5193,7 +5193,7 @@ restore_latest() {
print "* If opening an issue in GitHub, please provide a FULL log/output. Otherwise, your issue may be dismissed."
fi
case $device_target_vers in
[1234]* ) print "* For device activation, go to: Other Utilities -> Attempt Activation";;
[1234]* ) print "* For device activation, go to: Main Menu -> Attempt Activation";;
esac
if [[ $ipsw_jailbreak == 1 ]]; then
case $device_target_vers in
@ -5254,9 +5254,9 @@ device_buttons() {
input "Select your option:"
select_option "${selection[@]}"
opt2="${selection[$?]}"
case $opt2 in
*"DFU" ) device_enter_mode $opt2; break;;
esac
if [[ $opt2 == *"DFU" ]]; then
device_enter_mode $opt2
fi
}
device_buttons2() {
@ -5276,10 +5276,9 @@ device_buttons2() {
input "Select your option:"
select_option "${selection[@]}"
opt2="${selection[$?]}"
case $opt2 in
"Jailbroken" ) break;;
*"DFU" ) device_enter_mode $opt2; break;;
esac
if [[ $opt2 == *"DFU" ]]; then
device_enter_mode $opt2
fi
}
restore_prepare() {
@ -5340,7 +5339,7 @@ restore_prepare() {
if [[ $device_target_vers == "3"* || $device_target_vers == "4"* ]] && [[ $device_target_powder == 1 ]]; then
echo
log "The device may enter recovery mode after the restore"
print "* To fix this, go to: Other Utilities -> Disable/Enable Exploit -> Enable Exploit"
print "* To fix this, go to: Useful Utilities -> Disable/Enable Exploit -> Enable Exploit"
fi
elif [[ $device_target_other == 1 ]]; then
case $device_target_vers in
@ -5372,7 +5371,7 @@ restore_prepare() {
if [[ $device_type == "iPhone2,1" && $device_newbr != 0 ]]; then
restore_latest custom first
print "* Proceed to install the alloc8 exploit for the device to boot:"
print " -> Go to: Other Utilities -> Install alloc8 Exploit"
print " -> Go to: Useful Utilities -> Install alloc8 Exploit"
log "Do not disconnect your device, not done yet"
device_find_mode DFU 50
device_alloc8
@ -5595,7 +5594,7 @@ menu_remove4() {
while [[ -z "$mode" && -z "$back" ]]; do
menu_items=("Disable Exploit" "Enable Exploit" "Go Back")
menu_print_info
print " > Main Menu > Other Utilities > Disable/Enable Exploit"
print " > Main Menu > Useful Utilities > Disable/Enable Exploit"
input "Select an option:"
select_option "${menu_items[@]}"
selected="${menu_items[$?]}"
@ -6548,7 +6547,7 @@ menu_ramdisk() {
shsh_save_onboard64() {
print "* There are other ways for dumping onboard blobs for 64-bit devices as listed below:"
print "* It is recommended to use SSH Ramdisk option to dump onboard blobs instead: Other Utilities -> SSH Ramdisk"
print "* It is recommended to use SSH Ramdisk option to dump onboard blobs instead: Useful Utilities -> SSH Ramdisk"
print "* For A8 and newer, you can also use SSHRD_Script: https://github.com/verygenericname/SSHRD_Script"
echo
if [[ $device_mode != "Normal" ]]; then
@ -6759,7 +6758,7 @@ menu_print_info() {
print "* iOS Version: $device_vers"
fi
if [[ $device_proc != 1 && $device_mode == "DFU" ]] && (( device_proc < 7 )); then
print "* To get iOS version, go to: Other Utilities -> Get iOS Version"
print "* To get iOS version, go to: Misc Utilities -> Get iOS Version"
fi
if [[ $device_proc != 1 ]]; then
print "* ECID: $device_ecid"
@ -6804,11 +6803,14 @@ menu_main() {
if [[ $device_mode == "Normal" ]]; then
case $device_vers in
[12].* ) :;;
[1289]* ) menu_items+=("Sideload IPA");;
[1289]* ) [[ $platform == "linux" ]] && menu_items+=("Sideload IPA");;
esac
menu_items+=("App Management" "Data Management" "Device Operations")
menu_items+=("App Management" "Data Management")
fi
menu_items+=("Other Utilities" "Exit")
if [[ $device_mode != "none" ]]; then
menu_items+=("Useful Utilities")
fi
menu_items+=("Misc Utilities" "Exit")
select_option "${menu_items[@]}"
selected="${menu_items[$?]}"
case $selected in
@ -6818,8 +6820,8 @@ menu_main() {
"Sideload IPA" ) menu_ipa "$selected";;
"App Management" ) menu_appmanage;;
"Data Management" ) menu_datamanage;;
"Device Operations" ) menu_devicemanage;;
"Other Utilities" ) menu_other;;
"Misc Utilities" ) menu_miscutilities;;
"Useful Utilities" ) menu_usefulutilities;;
"FourThree Utility" ) menu_fourthree;;
"Attempt Activation" ) device_activate;;
"Exit Recovery Mode" ) mode="exitrecovery";;
@ -6985,6 +6987,7 @@ menu_ipa() {
menu_print_info
if [[ $1 == "Install"* ]]; then
print "* Make sure that AppSync Unified (iOS 5+) is installed on your device."
print "* Install IPA (AppSync) will not work if your device is not activated."
else
print "* Sideload IPA is for iOS 9 and newer only. Sideloading will require an Apple ID."
print "* Your Apple ID and password will only be sent to Apple servers."
@ -7316,7 +7319,7 @@ menu_restore() {
menu_items+=("IPSW Downloader" "Go Back")
menu_print_info
if [[ $1 == "ipsw" ]]; then
print " > Main Menu > Other Utilities > Create Custom IPSW"
print " > Main Menu > Misc Utilities > Create Custom IPSW"
else
print " > Main Menu > Restore/Downgrade"
fi
@ -7385,7 +7388,7 @@ menu_ipsw_downloader() {
menu_items+=("Go Back")
menu_print_info
if [[ $1 == "ipsw" ]]; then
print " > Main Menu > Other Utilities > Create Custom IPSW > IPSW Downloader"
print " > Main Menu > Misc Utilities > Create Custom IPSW > IPSW Downloader"
else
print " > Main Menu > Restore/Downgrade > IPSW Downloader"
fi
@ -7434,7 +7437,7 @@ menu_restore_more() {
menu_items+=("Go Back")
menu_print_info
if [[ $1 == "ipsw" ]]; then
print " > Main Menu > Other Utilities > Create Custom IPSW"
print " > Main Menu > Misc Utilities > Create Custom IPSW"
else
print " > Main Menu > Restore/Downgrade"
fi
@ -7515,7 +7518,7 @@ menu_ipsw() {
local start
if [[ $2 == "ipsw" ]]; then
nav=" > Main Menu > Other Utilities > Create Custom IPSW > $1"
nav=" > Main Menu > Misc Utilities > Create Custom IPSW > $1"
start="Create IPSW"
elif [[ $2 == "fourthree" ]]; then
nav=" > Main Menu > FourThree Utility > Step 1: Restore"
@ -8356,7 +8359,7 @@ menu_flags() {
esac
menu_items+=("Go Back")
menu_print_info
print " > Main Menu > Other Utilities > Enable Flags"
print " > Main Menu > Misc Utilities > Enable Flags"
input "Select an option:"
select_option "${menu_items[@]}"
selected="${menu_items[$?]}"
@ -8451,26 +8454,46 @@ menu_flags() {
done
}
menu_devicemanage() {
menu_miscutilities() {
local menu_items
local selected
local back
menu_print_info
while [[ -z "$mode" && -z "$back" ]]; do
menu_items=("Export Device Info")
if (( device_det < 5 )) && [[ $device_det != 1 ]]; then
warn "Device is on lower than iOS 5. Battery info is not available"
else
menu_items+=("Export Battery Info")
menu_items=()
if [[ $device_mode != "none" ]]; then
if [[ $device_mode == "Normal" ]]; then
menu_items+=("Pair Device" "Export Device Info")
if (( device_det < 5 )) && [[ $device_det != 1 ]]; then
warn "Device is on lower than iOS 5. Battery info is not available"
else
menu_items+=("Export Battery Info")
fi
if (( device_det < 4 )) && [[ $device_det != 1 ]]; then
warn "Device is on lower than iOS 4. Shutdown/Restart device options are not available"
else
menu_items+=("Shutdown Device" "Restart Device")
fi
menu_items+=("Enter Recovery Mode" "Attempt Activation" "Activation Records")
fi
if [[ $device_proc != 1 ]] && (( device_proc < 7 )); then
if [[ $device_mode != "Normal" ]]; then
menu_items+=("Get iOS Version" "Activation Records")
fi
case $device_type in
iPhone[45]* | iPad2,[67] | iPad3,[56] ) menu_items+=("Dump Baseband");;
esac
fi
fi
if (( device_det < 4 )) && [[ $device_det != 1 ]]; then
warn "Device is on lower than iOS 4. Shutdown/Restart device options are not available"
else
menu_items+=("Shutdown Device" "Restart Device")
if [[ $device_proc != 1 ]] && (( device_proc < 11 )); then
menu_items+=("Enable Flags")
fi
menu_items+=("Pair Device" "Enter Recovery Mode" "Go Back")
print " > Main Menu > Device Operations"
if (( device_proc < 7 )); then
menu_items+=("Create Custom IPSW")
fi
menu_items+=("(Re-)Install Dependencies" "Go Back")
print " > Main Menu > Misc Utilities"
input "Select an option:"
select_option "${menu_items[@]}"
selected="${menu_items[$?]}"
@ -8499,19 +8522,27 @@ menu_devicemanage() {
"Shutdown Device" ) mode="shutdown";;
"Restart Device" ) mode="restart";;
"Enter Recovery Mode" ) mode="enterrecovery";;
"Attempt Activation" ) device_activate;;
"Dump Baseband" ) mode="baseband";;
"Activation Records" ) mode="actrec";;
"Enable Flags" ) menu_flags;;
"DFU Mode Helper" ) mode="enterdfu";;
"(Re-)Install Dependencies" ) install_depends;;
"Create Custom IPSW" ) menu_restore ipsw;;
"Get iOS Version" ) mode="getversion";;
"Go Back" ) back=1;;
esac
done
}
menu_other() {
menu_usefulutilities() {
local menu_items
local selected
local back
while [[ -z "$mode" && -z "$back" ]]; do
menu_items=()
if [[ $device_mode != "none" && $device_proc != 1 ]] && (( device_proc < 7 )); then
if [[ $device_proc != 1 ]] && (( device_proc < 7 )); then
if [[ $device_mode == "Normal" ]]; then
menu_items+=("Enter kDFU Mode")
fi
@ -8525,7 +8556,7 @@ menu_other() {
elif [[ $device_type == "iPhone2,1" ]]; then
menu_items+=("Install alloc8 Exploit")
fi
if [[ $device_type != "iPod2,1" ]]; then
if [[ $device_type != "iPod2,1" && $device_mode == "Normal" ]]; then
menu_items+=("Just Boot")
fi
if [[ $device_mode == "Normal" ]]; then
@ -8543,59 +8574,32 @@ menu_other() {
esac
fi
fi
if [[ $device_mode != "none" ]]; then
if (( device_proc >= 7 )) && (( device_proc <= 10 )); then
menu_items+=("Enter pwnDFU Mode")
fi
if (( device_proc <= 10 )) && [[ $device_latest_vers != "16"* && $device_checkm8ipad != 1 && $device_proc != 1 ]]; then
menu_items+=("SSH Ramdisk")
fi
if [[ $device_mode == "Normal" ]]; then
menu_items+=("Attempt Activation" "Activation Records")
fi
if [[ $device_mode != "DFU" ]]; then
menu_items+=("DFU Mode Helper")
fi
menu_items+=("Update DateTime")
if [[ $device_proc != 1 ]] && (( device_proc < 7 )); then
if [[ $device_mode != "Normal" ]]; then
menu_items+=("Get iOS Version" "Activation Records")
fi
case $device_type in
iPhone[45]* | iPad2,[67] | iPad3,[56] ) menu_items+=("Dump Baseband");;
esac
fi
if (( device_proc >= 7 )) && (( device_proc <= 10 )); then
menu_items+=("Enter pwnDFU Mode")
fi
if (( device_proc < 7 )); then
menu_items+=("Create Custom IPSW")
if (( device_proc <= 10 )) && [[ $device_latest_vers != "16"* && $device_checkm8ipad != 1 && $device_proc != 1 ]]; then
menu_items+=("SSH Ramdisk")
fi
if [[ $device_proc != 1 ]] && (( device_proc < 11 )); then
menu_items+=("Enable Flags")
menu_items+=("Update DateTime")
if [[ $device_mode != "DFU" ]]; then
menu_items+=("DFU Mode Helper")
fi
menu_items+=("(Re-)Install Dependencies" "Go Back")
menu_items+=("Go Back")
menu_print_info
# other utilities menu
print " > Main Menu > Other Utilities"
print " > Main Menu > Useful Utilities"
input "Select an option:"
select_option "${menu_items[@]}"
selected="${menu_items[$?]}"
case $selected in
"Hacktivate Device" ) mode="device_hacktivate";;
"Revert Hacktivation" ) mode="device_reverthacktivate";;
"Create Custom IPSW" ) menu_restore ipsw;;
"Enter kDFU Mode" ) mode="kdfu";;
"Disable/Enable Exploit" ) menu_remove4;;
"SSH Ramdisk" ) mode="device_enter_ramdisk";;
"Clear NVRAM" ) mode="ramdisknvram";;
"Send Pwned iBSS" | "Enter pwnDFU Mode" ) mode="pwned-ibss";;
"(Re-)Install Dependencies" ) install_depends;;
"Attempt Activation" ) device_activate;;
"Install alloc8 Exploit" ) mode="device_alloc8";;
"Dump Baseband" ) mode="baseband";;
"Activation Records" ) mode="actrec";;
"DFU Mode Helper" ) mode="enterdfu";;
"Get iOS Version" ) mode="getversion";;
"Enable Flags" ) menu_flags;;
"Just Boot" ) menu_justboot;;
"Update DateTime" ) device_update_datetime;;
"Go Back" ) back=1;;
@ -8649,7 +8653,7 @@ device_alloc8() {
print "* This may take several tries. It can fail a lot with \"Operation timed out\" error."
print "* If it fails, try to unplug and replug your device then run the script again."
print "* You may also need to force restart the device and re-enter DFU mode before retrying."
print "* To retry, just go back to: Other Utilities -> Install alloc8 Exploit"
print "* To retry, just go back to: Useful Utilities -> Install alloc8 Exploit"
}
device_jailbreak_confirm() {
@ -8860,7 +8864,7 @@ device_dump() {
device_dumprd
$ssh -p $ssh_port root@127.0.0.1 "nvram auto-boot=0; reboot_bak"
log "Done, device should reboot to recovery mode now"
log "Just exit recovery mode if needed: Other Utilities -> Exit Recovery Mode"
log "Just exit recovery mode if needed: Main Menu -> Exit Recovery Mode"
if [[ $mode != "baseband" && $mode != "actrec" ]]; then
log "Put your device back in kDFU/pwnDFU mode to proceed"
device_find_mode Recovery
@ -9060,7 +9064,7 @@ restore_customipsw_confirm() {
print "* This option is only for restoring with IPSWs NOT made with Legacy iOS Kit, like whited00r or GeekGrade."
if [[ $device_newbr == 1 ]]; then
warn "Your device is a new bootrom model and some custom IPSWs might not be compatible."
print "* For iPhone 3GS, after restoring you will need to go to Other Utilities -> Install alloc8 Exploit"
print "* For iPhone 3GS, after restoring you will need to go to Useful Utilities -> Install alloc8 Exploit"
else
warn "Do NOT use this option for powdersn0w or jailbreak IPSWs made with Legacy iOS Kit!"
fi
@ -9727,7 +9731,7 @@ main() {
print "* Note: For tether downgrades, you need to boot your device using the Just Boot option. Exiting recovery mode will not work."
if [[ $device_canpowder == 1 ]]; then
print "* Note 2: If your device is stuck in recovery mode, it may have been restored with powdersn0w before."
print " - If so, try to clear the device's NVRAM: go to Other Utilities -> Clear NVRAM"
print " - If so, try to clear the device's NVRAM: go to Useful Utilities -> Clear NVRAM"
fi
;;
"enterdfu" ) device_enter_mode DFU;;