Stando alla grossa mole di commenti che abbiamo avuto modo di leggere in questi mesi, siamo arrivati alla conclusione che molti utenti lamentano un problema con il proprio iPhone, non appena viene connesso un dispositivo esterno al dock. Tale problema viene notificato con un pop-up sullo schermo, nel quale si può leggere: “Questo accessorio non è compatibile con iPhone. Vuoi abilitare la modalità d’uso in aereo per ridurre le interferenze audio?”
Un problema derivante da questo colpisce in particolare alcuni utenti con il dock danneggiato: molte persone infatti si trovano a visualizzare continuamente questo messaggio di warning pur non avendo nessun dispositivo collegato e come strana conseguenza il sistema audio del proprio telefono si blocca completamente. Ad altri invece tocca vedere la propria batteria prosciugata in meno di 6 ore a causa della continua comparsa di questo pop-up che impedisce al telefono di restare nella modalità “Sleep” (schermo spento).
E’ impossibile sperare in un intervento da parte dell’assistenza Apple poichè questo genere di danno (nella maggior parte dei casi) è causato dall’utente stesso (molte volte a causa del contatto dell’iPhone con dell’acqua).
Se rientrate in questa gamma di persone, ovvero avete il dock fisicamente danneggiato e non riuscite ad ovviare al problema con una semplice pulizia, vi forniremo le istruzioni per eliminare il pop-up, grazie ad una patch realizzata dal nostro utente Suondmao.
Procedimento:
- Per prima cosa occorre procurarsi una copia del file eseguibile che genera questo problema, quindi accedendo al filesystem del nostro iPhone tramite SSH, preleviamo il file: “/System/Library/PrivateFrameworks/IAP.framework/Support/iapd” e salviamolo sul computer.
Nota: Questa guida fa specifico riferimento al file iapd della versione del firmware 2.0.2, a fine articolo saranno riportate le ragioni
- Adesso è possibile procedere all’analisi. Apriamo questo eseguibile con un disassemblatore che supporti la decodifica delle istruzioni per processori ARM. Noi abbiamo utilizzato Ida Pro 5.2
- Posizioniamoci all’indirizzo 0x90AC e troveremo il codice:
Si osservi la parte destra dell’immagine: è stata evidenziato il ramo del programma che devia il riconoscimento corretto del dispositivo verso il messaggio di errore. E’ proprio questo il punto in cui intervenire, patchando l’istruzione BEQ errorStart all’indirizzo 0x90FC. Per farlo:
- Apriamo il file iapd con un qualsiasi editor esadecimale (XVI21 per esempio) e posizioniamoci all’offset 0x80FC (indirizzo assoluto dell’istruzione da patchare all’interno dell’eseguibile) e sostituiamo all’istruzione BEQ errorStart (codice operativo {0x03, 0x00, 0x00, 0x0A}) un’istruzione inutile, ad esempio: MOV R1,R1 (codice operativo {0x01, 0x10, 0x0A, 0xE1}):
- Salviamo il tutto.
- Come ultimo passo occorre ricertificare l’esegubile e per farlo seguiremo i passi della nostra guida (che trovate qui, in versione integrale). Quindi:
1. Create una copia di backup del file originale dell’iPhone “/System/Library/PrivateFrameworks/IAP.framework/Support/ipad” (per sicurezza)
2. Sostituite il file originale con la versione appena modificata (sempre in “/System/Library/PrivateFrameworks/IAP.framework/Support/”)
3. Impostate i permessi del nuovo file a 755
4. Installate da Cydia i package “MobileTerminal” e “Link Identity Editor” (che serviranno per effettuare l’operazione di certificazione del file).
5. Lanciate MobileTerminal ed autenticatevi come root per poter proseguire con la certificazione del programma desiderato, digitando:
su root
e subito dopo inserendo la password: alpine
6. Adesso bisogna installare il package ldid di saurik, per farlo, utilizzate il comando:
apt-get install ldid
7. Ed infine, firmate il file patchato digitando:
ldid -s /System/Library/PrivateFrameworks/IAP.framework/Support/iapd
Fine! Non ci resta che verificare il funzionamento della nostra modificaa! Riavviate l’iPhone, collegate il dispositivo al dock e godetevi il risultato =)
Nota: Non essendo un’operazione alla portata di tutti, di seguito alleghiamo una versione già modificata e firmata dell’eseguibile modificato:
- Download: iapd_202_patched_by_suondmao.zip
Chi sceglie di utilizzare questa versione dovrà unicmente posizionarla all’interno del filesystem iPhone ovvero in “/System/Library/PrivateFrameworks/IAP.framework/Support/” ed impostarne i permessi a 755.
Nota finale:
Come detto all’inizio della guida questa patch è riferita alla versione 2.0.2 del file iapd. E’ stata modificata questa versione al posto di quella dell’ultimo firmware in quanto tutti i tentativi di modifica provati sul file iapd 2.1 non sono riusciti a sistemare il problema del freeze audio e della scarsa durata della batteria del dispositivo. Ad ogni modo il fix effettuato per 2.0.2 è comunque valido anche per il firmware 2.1 e se utilizzate il file proposto all’interno dell’ultimo firmware 2.1 il problema sarà comunque risolto.
E’ bene ricordare che questa patch non è stata realizzata con l’intento di eliminare il messaggio di warning per rendere compatibili tutti i dispositivi, quindi NON utilizzatela se non ne avete veramente bisogno. (In altre parole se avete un problema diverso da quello esposto in cima, non usate la patch)
La versione 2.0.2 se portata su 2.1 non è in grado di mantenere la reale compatibilità device esterni, per questo si deve ricordare che è solo un rimedio per iPhone danneggiati!
Se si vuole unicamente rimuovere il messaggio di warning per non dover selezionare manualmente “No” ad ogni connessione di dispositivi (su iPhone “sani” con firmware 2.1) è necessario modificare il file iapd 2.1. Per questa versione la patch resta la stessa illustrata in questo articolo, occorrerà solo cambiare l’indirizzo dell’istruzione da moficare in modo opportuno.
Ad ogni modo si ricorda che questa modifica non manterrà la compatibilità di tutti di dispositivi e per questo motivo si ribadisce che questo fix, se non strettamente necessario, è sconsigliato.
La versione completa di questo articolo è disponibile all’indirizzo: http://suondmao.altervista.org/. Per tutti i problemi, le domande o se volete maggiori informazioni prima di iniziare, lasciate un commento e troverete assistenza da parte dell’autore.
Leggi o Aggiungi Commenti