Figyelem! Az alábbi cikk szigorúan tájékoztató jellegű, és az érthetőség kedvéért sok technikai részlet lényegesen leegyszerűsítve szerepel benne! Mielőtt feltennéd az idevágó kérdésedet, olvasd el figyelmesen a cikket! A szifon.com nem vállal felelősséget az itt leírtak meg nem értéséből vagy hibás értelmezéséből fakadó problémák esetén!
AT+XAPP
A jelenlegi szoftveres függetlenítés az AT+XAPP parancs hibáját használja ki az azt támogató basebandek esetén. Az iPhoneWiki pontosan leírja, hogy az AT+XAPP esetén veremtúlcsordulás (stack overflow) érhető el, ha 52 karakternél hosszabb stringet küldünk vele, és így a túlcsordulás eredményeként lehetőségünk lesz aláíratlan kód futtatására is.
Az iOS 4.1 megjelenésével viszont az Apple befoltozta ezt a korábbi, egészen a 4.0.2-ig használt, 05.13.04-es basebandben is kihasznált sebezhetőséget. Így aki gyári 4.1-re frissítette az iPhone 3G/3GS készülékét, az elvesztette a szoftveres függetlenítés lehetőségét, hiszen azzal a baseband frissült olyan, újabb verzióra, ami esetén ez a hiba már nincs meg, így az ultrasn0w sem működik velük.
iPad baseband az iPhone-on
Az iPhone 3G/3GS esetén lett egy áthidaló megoldás, ami viszont egyúttal a GPS funkcionalitás elvesztésével jár. Ez a módszer az első generációs iPad WiFi+3G-ben, az egészen a 3.2.2-es firmware-rel bezárólag megtalálható 06.15.00-s basebandet használja fel, mert abban is megtalálható a fent említett AT+XAPP sebezhetőség. Mivel az iPhone 3G/3GS és az első generációs iPad baseband chipjének típusa megegyezik, így lehetőség van arra, hogy a 3G/3GS-re az iPad basebandjét feltegyük, és ezzel ismét szoftveresen függetleníthető lesz, viszont ez egyúttal elérhetetlenné teszi a GPS-t is.
A GPS funkciótól való “elbúcsúzás” oka ebben az esetben a készülékekben található GPS chipkészletek különbözősége, mert míg az iPhone-okban Infineon Hammerhead II PMB2525 van, addig az iPad-ben pedig Broadcom BCM4750. Nagyon leegyszerűsítve talán azt lehetne mondani, hogy az iPad basebandje a hardveres különbözőség miatt nem tartalmazza a drivereket az iPhone-ban található GPS-hez, így nem tud vele kommunikálni.
Ez azt jelenti, hogy a mobiltornyok és WiFi-hotspotok általi, viszonylag nagy szórással dolgozó helymeghatározás továbbra is működni fog. De ha egy olyan alkalmazást akarnál használni, ami kifejezetten csak a valós GPS-koordináták alapján működne, így akár mobilinternet és/vagy térerő nélkül is, azok az alkalmazások nem fogják megtalálni a helyzetedet.
(Ha bővebben is érdekel a téma, olvasd el korábbi cikkeinket az iPad baseband kapcsán: Ultra-recycle – az extrém ultrasn0w és 4.1/4.2.1 függetlenítés: GPS problémák, új hacktiválás és iOS 4.2.1 és a recovery loop.)
A baseband csak frissíthető
A problémát az okozza, hogy a baseband direkt úgy van megtervezve, hogy kizárólag magasabb verzióra engedje frissíteni a saját, belső firmware-jét. Így tehát nem lehet csak úgy visszatenni egy korábbi basebandet azzal, hogy visszateszünk egy korábbi verziót az iOS-ből, mert azzal a baseband verziója változatlan marad, és a restore végén az iTunes még hibaüzenetet is ad emiatt. Ez természetesen nem meglepő, hiszen alapvetően úgy lett tervezve az egész folyamat, hogy csak magasabb verziókra frissít a felhasználó, és nincs opció a downgrade-re.
Ha egyszer feltetted az iPad basebandet, akkor az egyelőre végleges, és jelenleg nincs opció arra, hogy korábbi verziót visszategyél. Persze egyetlen esetben lehetséges korábbi basebandet visszatenni, de az csak 5.08-as (=5.8) bootloaderrel ellátott iPhone 3G esetén lehetséges. Az újabb bootloaderekben nem találtak még olyan hibát, ami lehetővé tenné a baseband downgrade-et.
Megoldás lehetne még, ha már downgrade-elni nem lehet, hogy tovább frissítjük a basebandet. Viszont az Apple által kiadott újabb iPhone-os firmware-ekben változatlanul 06.15-ösnél alacsonyabb verziószámúak az egyébként sem függetleníthető basebandek, így azokkal ez nem megoldható. És noha szoftveresen nem lehet őket függetleníteni, legalább a GPS-t vissza lehetne kapni, és például a szolgáltatótól kérni a hivatalos függetlenítést.
Sajnos az sem opció, hogy akkor vegyük a jól bevált 05.13.04-es basebandet, és mondjuk egy hexa editorban írjuk át benne a verziószámot például 06.16-ra -hiszen az akkor már magasabb, mint a 06.15-, és akkor frissítsük meg azzal; ugyanis ehhez a teljes baseband-szoftver visszafejtése lenne valószínűleg szükséges. Ha viszont visszafejtenék, akkor meg már eleve függetlenre is meg lehetne azt írni, ahogyan tették azt az iPhone 2G esetén. A basebandben továbbá léteznek beépített önellenőrző rutinok is, amiket szintén át kellene hidalni ahhoz, hogy a felülírt verziószámot egyáltalán elfogadja, ezeket viszont szintén nem lehet megtenni a szoftver visszafejtése nélkül.
(Ha bővebben is érdekel a téma, olvasd el korábbi cikkeinket a baseband és a hivatalos függetlenítés kapcsán: Baseband: tények és tévhitek és iPhone 3G/3GS/4 függetlenítés: NCK vagy Gevey SIM.)
Lesz-e valamikor is megoldás?
Ez igen jó kérdés. Az iPhone Dev Team természetesen dolgozik az ügyön, de mivel közben az Apple elég sok kiskaput bezárt, és a bootloaderekben sem találtak még downgrade-et lehetővé tévő hibát, így nem lehet tudni, mikor lesz ennek eredménye.
Mindenesetre Sherif Hashim megpróbálkozott azzal, hogy törölte teljesen a basebandet, hátha úgy lehetséges lesz visszatenni a 05.13.04-es, aranyat érőt. A műtét maga elvileg sikerült, de valójában mégsem:
sherif_hashim
successfully erased the 6.15 BB files http://twitpic.com/51co5p , should accept new BB flash files now, or at least i thought so :)
2011.05.23. 6:07
Tehát a basebandet sikerült ugyan törölnie, és így rávette a készüléket arra, hogy hajlandó legyen elfogadni új flash-t:
sherif_hashim
and the dead phone didn’t show any Exception errors while flashing the 5.13.04 fls/eep http://twitpic.com/51cx80 , all went ok i think
2011.05.23. 6:11
Noha maga a flashelés sikerrel zárult, de ez önmagában még nem jelentette azt, hogy meg is oldódott volna a probléma:
sherif_hashim
and….. , the last picture for the dead phone after a reboot, before it went OFF , possibly forever http://twitpic.com/51czpc
2011.05.23. 6:13
Az eredmény egy iBrick lett, ami papírnehezéknek jó csak, mert ilyen jellegű baseband-hibával már az iOS sem feltétlen tölt be többé. Persze ez lehet, hogy előrébb mozdítja a megoldás megtalálását, de egyelőre nincs biztos információ, így felesleges találgatásokba bocsátkozni.
Az viszont továbbra is igaz az, hogy ha felteszed az iPad basebandet, akkor bukod a GPS-t, és egyelőre nincs rá semmi megoldás, hogy ezt visszacsináld.
Alternatív megoldásnak természetesen ott a Bluetooth stack csomag Cydiából, és egy külső, bluetooth-os GPS, de ettől a beépített GPS még nem fog működni.
Összegezve
Ha van lehetőséged a legális, hivatalos függetlenítésre, minden esetben kifejezetten javasolt azt választani, vagy eleve gyárilag kártyafüggetlen készüléket vásárolni, ha tudod, hogy úgysem azzal a szolgáltatóval használnád, amilyen függő eredetileg. Az elmúlt évek tapasztalatai alapján egyre nehezebb a szoftveres függetlenítés, és egyetlen rossz gombnyomással hamar pontot lehet tenni a függetleníthetőségre, ha véletlen gyári, módosítatlan firmware-t teszel fel, és azzal frissül a baseband. (Figyelem: a jailbreak nem függetlenítés, soha nem is volt az, az csak jailbreak!)
A hivatalos függetlenítés maradandó, tehát utána az minden esetben független marad, és nem jár garanciavesztéssel sem, és bármely készülék bármely basebandje esetén elérhető, valamint a GPS-t sem veszélyezteti értelemszerűen.
A legális függetlenítéssel kapcsolatban keresd fel a készülék eredeti szolgáltatóját, és érdeklődj náluk a részletek felől.
Ha feltetted az iPad-es basebandet, akkor ez van, nincs rá megoldás, és csak custom firmware-rel tudsz pwned DFU-ban restore-olni hibaüzenet nélkül. Gyári firmware-t feltéve a készülék a baseband miatt recovery loop-ban ragad.
(Ennél a cikknél minden OFF-topic hozzászólást törölni fogunk.)