14
Ott 2008


Questo accessorio non è compatibile con iPhone? Ecco come risolvere

A quanti capita di vedere questo messaggio sul proprio dispositivo?
E se fosse l’opportunità per iniziare uno studio approfondito su una parte del firmware iPhone? L’occasione per imparare qualcosa di nuovo e risolvere un problema allo stesso tempo non si dovrebbe mai rifiutare!


L’idea alla base di questo articolo è quella di patchare una parte del firmware iPhone per bloccare alla base la comparsa di questo messaggio:

Occorre però specificare che la procedura descritta ha lo scopo di risolvere il problema solo a coloro i quali si trovano nella condizione di veder apparire a ripetizione questo messaggio sulla propria schermata di sblocco, pur non avendo nessun dispositivo esterno collegato.

Questo capita solitamente unicamente alle persone con il dock danneggiato, molto impolverato o che è stato bagnato accidentalmente e il grosso problema che comporta questo messaggio è il blocco dell’intero sistema audio del proprio iPhone!.
Questa patch quindi non ha lo scopo di rendere “compatibili” tutti i dispositivi esterni collegati all’iPhone senza la visualizzazione del messaggio, questo sarà solo un effetto collaterale della modifica!

Iniziamo adesso con lo studio (il file a cui faremo riferimento è stato prelevato dal firmware 2.0.2):

  • Accediamo al filesystem dell’iPhone e preleviamo il file iapd situato nella directory /System/Library/PrivateFrameworks/IAP.framework/Support/
  • Apriamolo con un disassemblatore che supporti la decodifica di istruzioni per processori ARM, ad esempio IDA Pro
  • Posizioniamoci all’indirizzo 0×90AC e cioè il punto esatto della routine responsabile della chiamata alla funzione di visualizzazione dell’errore, troveremo:


In questo codice possiamo individuare all’interno del ramo destro evidenziato le istruzioni che si occupano della visualizzazione dell’errore in questione.

L’idea per la nostra patch è quindi quella di impedire che l’esecuzione del programma entri mai in questo ramo e questo, come si vede dall’immagine, può essere fatto modificando l’istruzione BEQ errorStart (all’indirizzo 0×90FC). Il nostro scopo sarà quello di bloccare questo salto verso la label errorStart e di far proseguire l’esecuzione verso label1.

Per far questo possiamo semplicemente sostituire l’istruzione BEQ errorStart con una istruzione ininfluente, come ad esempio MOV R1,R1.

  • Ora che abbiamo individuato il punto esatto da modificare apriamo il file con un editor esadecimale e posizioniamoci all’indirizzo 0×80FC (cioè l’offset all’interno del file della nostra istruzione). Modifichiamola sostituendo al codice operativo della BEQ errorStart {0×03, 0×00, 0×00, 0×0A} quello della nostra istruzione MOV R1,R1 {0×01, 0×10, 0×0A, 0xE1}:


E salviamo il nuovo file.

  • Come ultimo passo occorre firmare l’eseguibile modificato secondo la guida Bypassing iPhone Code Signatures di saurik, per cui:
    • Creiamo (per sicurezza) una copia di backup del file originale dell’iPhone /System/Library/PrivateFrameworks/IAP.framework/Support/ipad
    • Sostituiamo il file originale con la nostra versione appena modificata
    • Impostiamo i permessi del nuovo file a 755
    • Installiamo da Cydia il package MobileTerminal, che servirà per effettuare l’operazione di certificazione dell’applicazione.
    • Da MobileTerminal autentichiamoci come root per poter proseguire con l’installazione del programma desiderato. Digitiamo: su root e introduciamo la password alpine
    • Ora installiamo il programma ldid di saurik utilizzando il comando: apt-get install ldid
    • E infine firmiamo il file che abbiamo patchato: ldid -s /System/Library/PrivateFrameworks/IAP.framework/Support/iapd

Bene! Ora è tutto pronto per verificare o meno il funzionamento dalla nostra modifica!
Riavviamo l’iPhone e godiamoci il risultato…

Per tutti quelli che non hanno intenzione di compiere questa modifica da soli, ma necessitano comunque del file modificato per poter utilizzare il proprio dispositivo danneggiato, possono scaricarlo direttamente da qui:

Ovviamente queste persone dovranno unicamente posizionare il file sotto /System/Library/PrivateFrameworks/IAP.framework/Support/ al posto dell’originale (di cui farete comunque un backup) ed impostarne i permessi a 755

Una nota conclusiva:
La modifica del file in versione 2.0.2 è stata testata senza problemi su iPhone con il dock danneggiato e con firmware in versione sia 2.0.2 che 2.1.
Sugli iPhone con il firmware 2.1 però questa modifica rende non utilizzabili i dispositivi esterni (risolvendo comunque il problema iniziale del freeze dall’apparato audio). Per cui se qualche utente volesse utilizzare questa patch sul nuovo firmware unicamente per evitare il messaggio deve ripetere la procedura descritta applicandola sul file iapd in versione 2.1 (ovviamente a questo punto gli indirizzi di memoria riportati in questo articolo non saranno più validi).

Se qualcuno è interessato alla guida dettagliata di questa patch può leggere il documento originale: Progetto iPhoneiapdReverseEngineering

Tags: , , ,
Scritto da Suondmao.

11 Commenti a “Questo accessorio non è compatibile con iPhone? Ecco come risolvere”

  1. makhomer
    14 Ottobre 2008 alle 13:05

    A me è capitato dopo aver installato la InvisibleSHIELD, il rimedio è stato migliore però, mi è bastato chiamare il centro assistenza Apple, che con grande cortesia e velocità in soli 3 giorni mi ha restituito un iPhone nuovo di pacca.

  2. Tomtom
    14 Ottobre 2008 alle 14:32

    @makhomer credo che la guida sia riferita a chi ha un 2g o cmq chi ha terminato la garanzia o chi ha un telefono jailbreak

  3. matteo R.
    14 Ottobre 2008 alle 14:33

    Nico aiutami sul forum non ho trovato nulla oltre al “ripristina” che non ha funzionato..
    ho fatto 4 ripristini totali con itunes ma nulla, anche se lascio l’iphone completamente NUOVO come fosse appena stato scartato e attivato MI LOCALIZZA IL GPS nei pressi di Modena e dintorni..ma io ABITO A PADOVA!!
    Son disperato le ho provate tutte aiutatemi..!

  4. snoze88
    14 Ottobre 2008 alle 14:37

    gran bella guida suondmao!

  5. Mark
    14 Ottobre 2008 alle 16:44

    Ottimo!potete cmq dirmi qual’è il numero dell’assistenza apple?

  6. Sasuke
    14 Ottobre 2008 alle 16:44

    Io avrei una domanda.. ho uno stereo per auto Alpine con cavetto Ipod apposta!.. solo ke mi esce appunto questo messaggio.. se provo a modificare i dati pensate ke me lo carica? ho letto la storia ke dice ke nn fa funzionare xo il fatto è ke dovrebbe ricaricarsi!
    Vi prego rispondetemi su mail

  7. colaxxx
    14 Ottobre 2008 alle 19:36

    ma se si scarica il file gia pronto, bisogna eseguire la procedura di firma/Autenticazione oppure basta solo sostituirlo via ssh e riavviare?

  8. 14 Ottobre 2008 alle 20:04

    La risposta alla tua domanda è scritta esattamente la riga sotto quella del link al file già pronto…

  9. MM25
    15 Ottobre 2008 alle 14:38

    A me capita che questa schermata viene fuori ogni volta che collego il mio iphone al mio autoradio keenwood (mod .DNX7200, ovviamente predisposto per i dispositivi ipod), però poi funzioa tutto normalmente a prescindere dal fatto che io premi si o no)!!

  10. rovigno
    16 Ottobre 2008 alle 17:47

    grandi!
    bellissima guida e spiegazione dettagliata..
    io avevo questo problema mesi fa ed ho risolto pulendo il connettore dell’iphone (quello che va sulla dock) con uno spazzolino da denti…
    una bella pulizia e via…

    il telefono ha ripreso a funzionare senza problemi!

    :-))

  11. Laura
    15 Novembre 2008 alle 9:37

    ragazzi io l’ihpone 2g aggiornato al firm 2.1, ho letto che devo seguire la stessa procedura ma anche per i file iapd in versione 2.1..ma che vuol dire? qui c’è scritto che se nn lo faccio poi nn mi funzioneranno gli accessori..









Assicurati che il tuo commento:
sia in tema con l'articolo (no off-topic)
non abbia contenuti provocatori, diffamatori, offensivi o volgari
non violi le leggi italiane
non contenga pubblicità non autorizzata o spam
non sia già stato postato in un altro articolo

Se la tua domanda è fuori tema o non trovi la risposta nell'articolo, iscriviti gratis al nostro forum e una community di appassionati ti risponderà!



Vai in Home Page | Pubblicità su iPhoneItalia | Info Blog | Contatti | Archivio articoli | Feed RSS degli articoli | iPhone View