Mivel vannak, akiknek a 4.2.1-re való update vagy restore után recovery loop-ban ragad az iPhone 4 készülékük, így leírnánk, mi ennek az oka, és hogyan lehet kivédeni.
Az okok
Az Apple a 4.2.1-es firmware kiadásával bevezette, hogy a rendszer ellenőrzi betöltés közben, hogy milyen verziós a baseband, és ha nem egyezik meg azzal, ami a firmware-hez tartozik, akkor nem tölt be. A készülék ilyenkor recovery módban ragad, amiből hiába ugrasztanánk ki bármilyen módszerrel, ugyan úgy visszaesne bele, hiszen a baseband verziója ismételten ellenőrzésre kerül, és elbukik ezen a vizsgán, mert korábbi verziós, mint aminek hivatalosan lennie kellene.
Technikailag ez úgy néz ki, hogy:
- akinek iPhone 4 esetén 01.59.00-s, tehát az eredeti, és így függetleníthető baseband van a készülékén
- ezt korábban a TinyUmbrella segítségével frissítette, így a baseband nem változott
- vagy bentvan a hosts fájljában Saurik szervere
…majd erre ráteszi a 4.2.1-et, akkor az alapesetben 1013-as hibával elszáll a restore végén, mert a baseband nem frissül, hiszen korábban ez volt a lényeg.
Ilyenkor viszont betöltéskor az iOS érzékeli, hogy a 4.2.1 által elvárt 03.10.01-es baseband helyett a 01.59.00-t találja, így hibásnak minősíti a rendszert, és recovery módba dobja. Hiába szedjük ki a recovery-ből, a baseband verziója minden alkalommal ugyan úgy 01.59.00 marad, így ebből a helyzetből a készülék nem rángatható ki egyszerűen.
Kiket érint?
Jelenleg csak az iPhone 4 tulajdonosoknál jön elő ez a recovery loop gond, hiszen egyedül az ő esetükben lehetséges jelenleg baseband-frissítés nélkül feltenni a gyári 4.2.1-et, köszönhetően az Umbrellának, vagy annak, ha Saurik szerverét beleírták a hosts fájlukba.
A 3G és 3GS tulajokat ez azért nem érinti jelenleg, mert ők ma majd frissíthetnek a gyári 4.2.1-re, és frissíthetik a baseband-et is, hiszen ezekre a készülékekre ma estére ígérte a dev-team az új ultransn0w-t. Esetükben viszont a gyári 4.2.1-es firmware telepítése még az Umbrella használata mellett is frissíti a basebandet, így számukra ez a recovery loop-probléma sem jelentkezik.
A megoldás
Ha gyári független a készülékünk, és így nem érdekes a baseband verziója, akkor szedjük ki a hosts fájlunkból azt a sort, amiben megtalálható a gs.apple.com cím, majd töröljük a DNS-cache-t:
- hosts fájl helye (mindkét esetben rendszergazda/root jog kell a szerkesztéshez és mentéshez):
- OSX: /private/etc/hosts
- Windows: %SystemRoot%\system32\drivers\etc\ - DNS-cache törlése parancssorból (vagy csak indítsuk újra a gépet):
- OSX: dscacheutil -flushcache
- Windows: ipconfig /flushdns
Ha ezt megtettük, már hiba nélkül le fog futni a restore, és frissül a baseband. Így bootoláskor a rendszer a megfelelő baseband-verziót fogja megtalálni, és betölt probléma nélkül.
Akinek pedig fontos a függetlenítés, azok valószínűleg eddig sem frissítettek 4.2.1-re, így őket mindez nem érinti. (…hiszen bár az Umbrella miatt a baseband maradt a függetleníthető, az ultrasn0w ettől függetlenül még nem futott az új rendszeren, mert nem volt optimalizálva iOS 4.2.1-re, és a jailbreak is csak tethered.)
Custom firware-ek
A custom firmware-ekben az egyik fontos szempont, hogy ne frissüljön a baseband, így ez itt okozhat némi nehézséget. Ugyanakkor mivel a 3G/3GS-re megérkezik ma a függetlenítés, és azt követi hamarosan az iPhone 4-re való is. Tehát úgyis érdemes lesz majd frissíteni a basebandet, amivel a gyári 4.2.1 is nyugodtan felmehet a készülékre akkor.
Az elkövetkezendő firmware-verziók esetén pedig a dev-team biztosan ki fog találni valamit, hogy a baseband-verzió ellenőrzését is patchelje a custom firmware-ben. Így ha esetleg az Apple frissíti a baseband-et, úgyis megoldják majd, hogy ne foglalkozzon a rendszer azzal, hogy nem a legfrissebb baseband van fent, ha esetleg közben nem találnának függetlenítést az új verzióhoz.


