[iPhone X] Le faux mode DFU de l'iPhone X analysé en détail.
- David Lecomte
- Jun 5, 2021
- 7 min read
Aujourd'hui, nous avons eu un cas très intéressant à traiter : un iPhone X qui ne s'allume pas (pour changer). Lorsqu'on le branche sur une alimentation de courant continu et qu'on appuie sur le bouton d'allumage, le courant entrant reste à 50mA. Cette valeur est typique d'un téléphone qui est en mode DFU.
On vérifie en branchant à l'ordinateur par un câble Lightning, après avoir rebranché la batterie : le téléphone est effectivement détecté en mode DFU par 3uTools.
On commence par essayer de le sortir manuellement du mode DFU (Volume Haut, Volume Bas, puis appuyer longtemps sur le bouton d'allumage). C'est juste pour essayer, on ne s'attend pas à ce que ça marche : si le téléphone se met de lui-même en DFU après avoir débranché la batterie, il y reste. Et c'est le cas ici : il finit par redémarrer, mais se met de suite en DFU.
On tente une restauration du système : elle échoue à 15% de progression, avec le message "Impossible to switch from DFU mode to Restore mode." Pas de code d'erreur de la part de 3uTools. Non pas que ce soit particulièrement utile : quand on a erreur 14, erreur 35, erreur 4013, erreur 4014, on n'est pas particulièrement avancé. Ces "erreurs" ne sont pas documentées, et il n'y a pas vraiment de logique. En revanche, on a une information ici : il n'y a pas de code d'erreur.
Déjà, une première chose. Qu'est-ce que le mode DFU ?
Il s'agit d'un des deux modes de restauration du système d'un iPhone. L'autre étant le mode "Restore". Ces deux modes permettent de réinstaller iOS sur votre iPhone, dans certaines situations si l'iPhone ne s'allume pas.
Je dis bien "certaines situations" : il faut que les circuits d'alimentation et d'allumage soient suffisamment fonctionnels pour que le CPU démarre. Essentiellement, si la carte-mère n'a pas de problème électrique, il sera possible d'entrer dans l'un de ces modes.
Dans les deux modes, iTunes vous dira qu'il a détecté un iPhone en mode "Restore" (ce qui peut prêter à confusion).
Si le téléphone est en mode "Restore", l'écran montre un ordinateur connecté par un câble Lightning. iTunes vous donnera le choix entre mettre à jour (sans perte de données) ou réinitialiser (les données sont effacées).
Si le téléphone est en mode "DFU", l'écran est noir, et vous aurez seulement la possibilité de réinitialiser.
Théoriquement, le mode "DFU" permet d'installer une version plus ancienne d'iOS. En pratique, Apple invalide les versions antérieures quelques jours après la sortie d'une nouvelle version, donc c'est plutôt une illusion de choix.
La grosse différence réside surtout dans ce que fait le téléphone : s'il se met, de lui-même, en DFU, c'est qu'il a un problème sérieux (il y a tout une échelle de problèmes sérieux, donc ce que je raconte là reste vague, mais il s'agit d'un sérieux problème sérieux). Le téléphone a un "Mini iOS" stocké quelque part, qui permet un fonctionnement d'extrêmement bas niveau dans le cas où le vrai iOS ne peut être lancé. C'est celui-ci qui est utilisé en mode "Restore" (par exemple, il peut afficher quelque chose à l'écran). Si le téléphone ne peut même pas démarrer ce Mini iOS, il se met tout seul en DFU. Les causes peuvent être multiples : CPU défectueux, SSD défectueux, autre composant critique défectueux.
Et apparemment, notre iPhone X est dans ce cas. On commence donc à paniquer face à ce qui nous attend : rebillage de CPU ? réparation du SSD ? si le SSD est complètement illisible, aura-t-on besoin d'un GSX Service pour retrouver le numéro de série à partir de l'IMEI, et recréer la partition SYSCFG ?
Mais on garde aussi en tête l'existence du "faux DFU", introduit justement à partir de l'iPhone X.
Le faux DFU ? C'est quoi ????
L'iPhone X est le premier iPhone à double carte-mère. Il s'agit de deux cartes électroniques, connectées l'une avec l'autre par un interposeur.
La carte supérieure est appelée communément "carte logique". Elle gère le fonctionnement de l'appareil en tant qu'ordinateur : alimentation, CPU, charge, batterie, son (en partie), caméras, affichage, tactile, flash.
La carte inférieure est appelée "carte signal". Elle gère principalement tous les modes de communication du téléphone : WiFi, NFC, Bluetooth, GSM. Il y a aussi des fonctions sonores sur cette carte : cette exception est probablement due au manque de place sur la carte supérieure car il y a 3 puces de gestion du son, et une puce de gestion des vibrations, qui occupent chacune une surface conséquente.
Une des premières questions que se sont posées les réparateurs de cartes-mères d'iPhone était : mon appareil peut-il démarrer si seulement la carte supérieure est présente ? Comme la carte inférieure se contente de la partie "signal", on pourrait espérer avoir essentiellement un iPod Touch si elle n'est pas présente.
La réponse est plus compliquée qu'on ne peut s'y attendre. Il y a deux modems GSM utilisés sur l'iPhone X, suivant les zones géographiques de vente : un fabriqué par Qualcomm et l'autre fabriqué par Intel. Les iPhone X vendus en France ont un modem Intel.
Lorsqu'on essaie de démarrer le téléphone avec seulement la carte supérieure, il y a deux possibilités :
* Une carte Qualcomm démarrera et vous aurez essentiellement un iPod Touch très limité (pas de fonction de communication).
* Une carte Intel ne démarrera pas. Le courant d'entrée va bloquer à 50mA. Et vous voyez où on va, j'imagine. C'est comme un iPhone en mode DFU. Si vous le branchez à un ordinateur, 3uTools le reconnaîtra même comme étant en mode DFU. Mais c'est un faux mode DFU : si vous essayez de faire une restauration système, elle échouera, autour de 15% de progression, avec le message "Impossible to switch from DFU mode to Restore mode".
Revenons-en à notre iPhone X.
Notre iPhone X présente exactement ce symptôme. Mais chez nous, les deux cartes sont bien connectées l'une à l'autre. Un examen visuel sous le microscope montre que cette connexion est bonne : pas de déformation, pas d'écartement. Mais tout se passe comme si on n'avait que la carte supérieure seule.
On sépare les cartes, on nettoie, et on observe s'il y a quelque chose qui saute aux yeux. Mais rien : pas de composant brûlé ou corrodé. Rien qui attire l'attention.
On essaie alors la carte supérieure de notre iPhone X, avec une autre carte inférieure Intel (dont on sait qu'elle est bonne et fonctionne). Et là : le téléphone démarre normalement. Évidemment, on n'a pas les fonctions WiFi ou GSM (ces fonctions ne marchent que si iOS détecte les puces d'origine, c'est un verrou logiciel mis en place par Apple). Mais le téléphone démarre.
Première conclusion : Notre carte inférieure est défectueuse.
On ne sait pas quel est le problème, mais on sait au moins sur quelle carte il se trouve. C'est important et cela nous soulage : pas besoin de rebillage de CPU, pas de sauvetage du SSD. Sérieusement, c'était un grand "Ouf !".
Pire des cas : on achète une carte inférieure Intel CNC sur Aliexpress pour 30€, on transfère dessus le modem GSM, l'EEPROM et le module WiFi, et on sera bon.
Mais avec de la chance, on saura diagnostiquer le problème et le résoudre directement. On a donc besoin de réfléchir à la question :
Qu'est-ce qui cause, précisément, le faux DFU sur les cartes Intel ?
Il faut une connaissance intime du processus de démarrage d'un iPhone. Voici ce que je sais (en l'absence de documentation, la connaissance est partielle malheureusement).
Lorsque l'iPhone est éteint, la puce de charge et le PMU sont alimentés. Le courant ne circule pas car le PMU n'est pas allumé. Mais les électrons sont là, prêts à partir.
À l'appui du bouton, le PMU s'allume et réveille le CPU. Celui-ci réveille alors le modem GSM (qui se trouve sur la carte inférieure). Si celui-ci fonctionne, et que le bouton est encore appuyé, le CPU lit le SSD (qui contient le système d'exploitation), et iOS affiche la pomme, puis démarre les autres périphériques (caméras, son, boussole, WiFi, etc. et je n'ai aucune idée de l'ordre).
Le faux DFU, qu'on constate lorsque les cartes-mère sont séparées, a donc pour cause réelle que le CPU n'arrive pas à allumer le modem GSM.
Dans notre cas, on est en faux DFU, alors que les cartes sont soudées. Et le téléphone démarre lorsqu'on lui donne une autre carte inférieure avec un modem Intel.
Deuxième conclusion : Notre iPhone X est en faux DFU parce que le modem GSM ne s'allume pas.
On est donc amené à se demander : Quelles sont les conditions d'allumage du modem GSM ?
De manière générale, les conditions d'allumage d'une puce sont : alimentation, horloge, signal d'allumage.
Le modem GSM est alimenté par une puce appelée BBPMU (BaseBand Power Management Unit). Qui a lui-même ses propres conditions d'allumage.
Il y a donc beaucoup de causes possibles pour notre problème :
* le BBPMU est défectueux ;
* le BB (modem GSM) est défectueux (notez que dans ce cas là, il n'y a rien à faire : le téléphone ne marchera plus jamais comme un téléphone) ;
* l'EEPROM du BB est morte ;
* le BBPMU marche, mais ne reçoit pas le signal d'horloge ou le signal d'allumage ;
* le BBPMU marche et s'allume, le BB est en bon état, mais ne reçoit pas l'alimentation du BBPMU ;
* le BBPMU marche et s'allume, le BB est en bon état, est alimenté, mais ne reçoit pas le signal d'horloge ou celui d'allumage.
Et chacun de ces cas a des sous-cas, car ces puces ont un fonctionnement complexe et nécessitent plusieurs signaux d'allumage.
On teste donc les composants qui sont connectés à ces deux puces : y a-t-il un condensateur en court-circuit ? les résistances ont-elles les bonnes valeurs ?
Après avoir testé une quarantaine de composants, en comparant avec notre carte inférieure fonctionnelle, on est confiant sur le fait que les résistances et condensateurs sont en bon état.
On tente alors de remplacer le BBPMU. On connecte les deux cartes ensemble. On retient son souffle. Le téléphone démarre !!!!
Après avoir re-soudé les cartes, et réinstallé l'ensemble dans le châssis, le téléphone fonctionne normalement. Des heures de travail et de diagnostic, une réparation facturée 129€, et un iPhone X 256G ressuscité.
TL;DR : Le BBPMU était défectueux. De ce fait, le BB n'était pas alimenté et ne pouvait pas s'allumer. Comme le CPU ne pouvait pas détecter le BB, le téléphone était bloqué en faux DFU. Une fois le BBPMU remplacé, le téléphone marche parfaitement.
Komentáře