Vous êtes sur la page 1sur 10

Récupérer un MMI 3G et 3G Plus mort

Par Keldo Gliana - écrit Q2 2014, mis à jour Q1 2015 - Version 3

Résumé du document :
Vous lisez ce document parce que la mise à jour du micrologiciel sur l'unité MMI 3G ou 3G Plus a
probablement échoué, ou parce que vous avez peut-être tué votre MMI lors d'une opération de piratage.

Il existe deux grandes catégories de défaillances : 1) les défaillances matérielles et 2) les défaillances logicielles.
Ce document ne couvre que les réparations des défauts de logiciel.

Les symptômes des défaillances logicielles vont du non-démarrage de l'IHM (écran noir) à la possibilité de voir
le disque dur interne tourner, en passant par l'allumage de tous les voyants de l'IHM et la rotation rapide du
ventilateur, jusqu'au démarrage de l'IHM sans lumière d'arrière-plan sur le panneau de commande des
boutons.

Objet :
L'objectif de ce document est de vous aider à tenter de récupérer votre MMI morte, en accédant à la MMI via
une communication terminale RS232 (également connue sous le nom de port COM). Plusieurs techniques
peuvent être utilisées pour rectifier le défaut, les techniques "zmodem" ou IPL (Initial Program Load) peuvent
être utilisées pour repousser l'image du système d'exploitation dans la puce flash de l'IHM.

Champ d'application :
Toutes les informations contenues dans ce document se rapportent au MMI 3G 9307/9308. Cependant, en
théorie, toutes les autres variantes de MMI (9309, 9411, 9498, etc...) devraient être identiques.

Avis de non-responsabilité :
Ce document vous est fourni gratuitement, n'hésitez pas à en tirer profit. A aucun moment je ne prends la
responsabilité de vos actions ou de mes notes qui pourraient vous induire en erreur. Par conséquent, et
comme pour tous mes autres documents, je dis "à utiliser à vos risques et périls". J'ai réparé plus de 50 unités
MMI dans 16 pays du monde entier. Ainsi, lorsque tout tombe en panne, vous pouvez m'envoyer votre MMI
(ou seulement la carte mère) et je la réparerai et vous la renverrai. Je répare tous les types de défaillances
matérielles et logicielles à des prix très abordables. Contactez-moi pour en savoir plus.

Ouvrir l'unité MMI :


Ouvrez l'unité MMI en dévissant toutes les vis situées en haut et en bas.
1. Ouverture du couvercle supérieur

1 | Page
2. Retirez le câble flexible du DVD, puis le disque dur.

Il y a une petite goupille qui retient le lecteur, il suffit d'enfoncer doucement le clip (là où la flèche pointe sur
l'image ci-dessus) et le lecteur devrait sortir.

3. Retirez le câble flexible qui vient du panneau avant (extrémité bleue).


4. Si vous ne l'avez pas encore fait, retournez la MMI et retirez les deux vis qui maintiennent le
panneau de façade (voir ci-dessous) :

5. Retirez maintenant toutes les autres vis marquées d'un cercle rouge.

2 | Page
6. Retirez maintenant le panneau de façade.
7. Vous devriez maintenant avoir atteint l'étape indiquée ci-dessus. Si ce n'est pas le cas, faites le
nécessaire pour y parvenir.
8. Retirez maintenant la carte mère. Vous aurez deux onglets à pousser pour libérer la carte mère (ils
sont sécurisés par l'avant de la carte), essayez également d'éviter d'égarer les pâtes thermiques.
9. La carte mère est sortie et ressemble à ceci :

10. Nous nous intéressons au connecteur mis en évidence dans l'image ci-dessus, familiarisez-vous
avec lui.
11. Soit vous vous procurez l'un de ces connecteurs de fente de bord de carte :
Connecteur de bord Connecteur de bord de carte pour le Connecteur IDC Card
de carte câble plat Edge

3 | Page
OU
Faites les choses de la manière la moins chère et la plus moche en soudant les fils directement sur la carte.
Vous avez le choix, mais vous devez suivre les schémas ci-dessous, alors identifions chaque côté :
C'est TOP :

Il s'agit de BOTTOM :

Remarque : en allemand, il était autrefois courant de désigner le Bestückungsseite (côté assemblage) par BS et le Lötseite
(côté soudure) par LS. Heureusement, cela n'est plus approprié car dans un environnement technique où l'anglais est plus
courant, l'abréviation "BS" peut être comprise comme "bottom side" (côté inférieur) ! Nous recommandons donc une
inscription uniforme en utilisant TOP et BOTTOM pour indiquer les côtés supérieur et inférieur.

Fonction Épingle
RxD Haut - Broche 5
TxD Bas - Broche 5
Sol Bas - Broche 10

Si vous n'avez pas d'ordinateur avec un port COM (RS232) vous aurez besoin d'un adaptateur USB ^ UART de
bonne qualité qui a la puce FT232RL, je recommande quelque chose comme ceci :

OU

La principale chose à retenir est de connecter le RxD et le TxD de l'IHM en miroir lors de la connexion à votre câble
adaptateur RS232, afin de permettre une communication de type bouche à oreille. Plus important encore, vous devez
créer un interrupteur dans le circuit pour bloquer le canal RxD sur le MMI. Ceci est nécessaire pour la procédure IPL,
quelque chose comme ça :

FT232R Statut normal MHI 3G FT232R Statut IPL MHI 3G

RxD -
— ______TxD
RxD -------------- ______TxD

GND -------- --------GND GND ------------- --------GND
-------------------------------------------------------

____________________ est le commutateur de -------- RxD -------- RxD


TxD -------- 1 Il s'agit de votre
votre adaptateur
TxD -------------- commutateur
d'adaptateur J| .

12. Après avoir connecté les fils ou le connecteur Edge, placez la carte mère, le disque dur, le
DVD, les pâtes thermiques, les vis, le panneau de façade et tout le reste dans le boîtier
métallique, dans l'ordre inverse. Revenir de l'étape 10 à l'étape 2.

13. Configurez votre port COM avec les paramètres suivants :


4 | Page
Port : 1 - 4 (pour simplifier)
Vitesse : 115200 pour les variantes MMI 9303, 9304 et autres. (La vitesse maximale pour le 9302 doit
être de 57600)
Bits de données : 8
Bits d'arrêt : 1
Parité : aucune
Contrôle de flux : XON / XOFF

14. Procurez-vous une bonne application de terminal telle que TeraTerm ou PuTTY.

15. Connectez le tout et commencez le dépannage :


Si l'IHM n'est pas complètement morte, essayez de la dépanner avant d'essayer de la zmdem, de la jtag ou
de retirer l'une des puces.

16. Voici un exemple de plan de dépannage :


A. Démarrage de l'IHM en mode normal (aucun mode IPL)
B. Vérifiez le texte qui apparaît dans la fenêtre de votre terminal et essayez de comprendre où se
situe l'erreur.
C. Essayez de résoudre le problème, consultez un administrateur QNX ou Linux, ou contactez-moi
pour obtenir des conseils. D. Démarrer l'IHM en mode IPL
E. Démarrer dans l'IFS d'urgence
F. Re-flash à partir de cartes SD
G. Supprimer les en-têtes du FPGA, la racine de l'IFS et déclencher un rétablissement d'urgence.
H. Bloc de persistance vide et attendre que l'IHM le reconstruise.
I. Bolo flash
J. Programmer la puce V850
K. Utiliser des images de récupération personnalisées du système d'exploitation
L. Zmodem l'image ifs-root.ifs.
M. Connecter le JTAG et accéder à tout l'espace flash
N. Si vous ne vous êtes pas encore rétabli, il y a de fortes chances que vous ne puissiez jamais le faire.

17. Comment lancer le processus IPL :


a. Activer l'interrupteur de l'adaptateur RS232 (ou connecter d'une manière ou d'une autre le RxD de
l'IHM à la masse de l'adaptateur).
b. Redémarrez le MMI à l'aide des 3 boutons de redémarrage.
c. Désactiver l'interrupteur de l'adaptateur (supprimer la connexion entre le RxD de l'IHM et la
masse)
d. Le MMI passe alors en mode de démarrage IPL.

Remarque : l'IPL est toujours à l'adresse 0 et ne se déclenche que lorsque le port RxD de la MMI est
connecté au port GND lors de la mise sous tension. Sinon, la MMI recherche dans l'en-tête de la mémoire
les éléments ifs-root et fpga ; lorsqu'ils sont trouvés, elle déclenche l'unité MMI dans ces éléments.

Comprendre la signification du texte dans la fenêtre du terminal

Chapitre 1 - Chargement du système d'exploitation normal ifs-root.ifs


La fenêtre du terminal devrait vous fournir suffisamment d'informations pour que vous sachiez à quel stade
vous en êtes et par où commencer votre dépannage :

5 | Page
image de départ @680000 . ..
Démarrage : , construit 2011/07/19_09-41-26_UTC
RAM : 128 MB @0x08000000
RAM : 128 MB @0x40000000
NVRAM : 28 MB @0x5e400000
RAM : 228 MB @0x50000000
FLASH : 128 MB @0x00000000
IPL : Audi 3G 9308 (SH7785) / QNX 6.3.0 [PL_qnx_ipl-3g_9308-sh7785_08253A, construit 2008/06/18_15-16-25_UTC]
CPU : SH7785 (>= 5th cut, clk mode 20. 4xDDR), 792MHz
RAM : 512 MB (sondé, DBCONF=e30002)
FLASH : Spansion S29GL512N (32bit) : 512 secteurs x 256K
FPGA : PL_MMI3G_FPGA_9308_D1_09324A (0ms)

*** Marque à l'ancienne trouvée sur l'IFS @0x1c0000 : .zero=0x3000001e


*** Marque à l'ancienne trouvée sur l'IFS @0x680000 : .zero=0x10000000

image de départ @680000 . ..


Démarrage : , construit 2011/07/19_09-41-26_UTC
RAM : 128 MB @0x08000000
RAM : 128 MB @0x40000000
NVRAM : 28 MB @0x5e400000
RAM : 228 MB @0x50000000
FLASH : 128 MB @0x00000000
Échec

L'exemple ci-dessus indique que l'IHM n'a pas démarré lorsqu'elle a tenté d'adresser l'image de lancement
0x680000, et c'est là le problème car un bon IFS devrait être situé à l'adresse 0x780000. Une solution simple
consisterait donc à démarrer l'IHM à l'aide de la commande :
boot 780000

Un incident de ce type peut se produire parce que l'IHM a été flashée avec un micrologiciel personnalisé qui
avait l'IFS à l'adresse 0x680000 et qui l'a cassé. Si le MMI démarre correctement avec ' boot 780000', vous
devez entrer dans le menu ingénierie et le recharger avec le bon firmware immédiatement.

Voici une liste d'informations sur les images pour 9307, 9308 et 9309 :
Image No. Adresse de l'image Nom de l'image Démarrage Fin Taille
2. 0x00000000 IPL 63264 262144 256kb
3. 0x00040000 FPGA 746472 786432 768 kb
4. 0x00100000 FPGA EMERGENCY 746472 786432 768 kb
5. 0x001C0000 IFS URGENCE 4,666,284 6,029,312 5888kb (5MB)
6. 0x00780000 IFS - ROOT 36866456 50855936 49664kb (48MB)
7. 0x03800000 EFS EXTEND 23,068,672 58,720,256 57344kb (56MB)
8. 0x04E00000 SYSTÈME EFS 20971520 20971520 20480kb (20MB)
9. 0x06200000 PERSISTANCE DE L'EFS 30,408,704 31,457,280 29696kb (29MB)
10. 0x07f00000 BIOS
11. 0x08000000 FIN DU FLASH

La même liste peut être extraite pour d'autres modèles et variantes à l'aide du fichier metainfo2.txt des
disques de microprogrammes. Les informations sont répertoriées dans la section relative à la mise en page des
images.
Chapitre 2 - Démarrage de l'emeg via IPL et reflash
Vous pouvez toujours démarrer l'IHM en mode IPL (décrit ci-dessus). Lorsque la fenêtre du terminal affiche " =>
", tapez help et appuyez sur enter, l'écran sera comme ci-dessous :
IPL : Audi 3G 9308 (SH7785) / QNX 6.3.0 [PL_qnx_ipl-3g_9308-sh7785_08253A, construit 2008/06/18_15-16-25_UTC]
CPU : SH7785 (>= 5th cut, clk mode 20. 4xDDR), 792MHz
RAM : 512 MB (sondé, DBCONF=e30002)
FLASH : Spansion S29GL512N (32bit) : 512 secteurs x 256K
FPGA : PL_MMI3G_FPGA_9308_D1_09324A (0ms)
En entrant dans le CLI, tapez " ?" ou "help" pour obtenir de l'aide.
=> aide
? - alias de "help" (aide)
bconf - affiche la configuration du gestionnaire de démarrage
bios - démarrer le BIOS
boot - image de démarrage dans la mémoire/flash
diag_p1j - diagnostic pour le problème de gigue d'horloge PLL1
download - téléchargement de l'IFS sur une ligne série (protocole sendnto) echo - affichage des arguments en écho
fpga - charge le FPGA à partir d'une image en mémoire/flash
go - Sauter à 'addr'

6 | Page
help - imprimer l'aide en ligne
hwconf - vidage de la configuration matérielle
md - affichage de la mémoire
memperf - test de performance de la mémoire (benchmark)
memtest - test de mémoire
mt - alias de "memtest" (test de mémoire)
pci - liste les périphériques pci
qinfo - affiche les informations de construction de QNX
rsupdate - interroge le mode de mise à jour du shifter de lecture (contournement de la limitation #48 du SH7785) rz
- alias de "zmodem".
scan - recherche des images dans la flash (FPGA, IFS, paquet BIOS)
version - imprimer la version du programme
zmodem - téléchargement de l'IFS ou du FPGA sur une ligne série (protocole Z-Modem)

Vous pouvez maintenant essayer de démarrer le système d'exploitation d'urgence (également connu sous le

nom de système d'exploitation de récupération) en tapant la commande suivante : boot 1c0000

Si le système d'exploitation de récupération est valide, l'IHM démarrera, et vous verrez quelque chose comme
ceci :
=> boot 1c0000
image de départ @801c0000 ...
Démarrage : PL_qnx_startup-sh7785_08362A, construit le 2008/09/02_07-53-12_UTC
RAM : 256 MB @0x08000000
FLASH : 128 MB @0x00000000
Page système à phys:0800a000 user:0800a000 kern:8800a000
Démarrage du programme suivant à v88046840
Bienvenue à QNX 6.3.2 (RL_qnx_os_632_PSP3_08124A) MMI3G Audi EMERGENCY SETUP 9308 D1 09431A starting pci driver
*** init FPGA registers ***
démarrage de dev-ipc pour le COI
initialiser le pilote IPC
démarrage du pilote de réseau
démarrage du pilote atapi - configuration du périphérique /dev/cam0
démarrage de devc-pty
Chemin d'accès=0 - XILINX MMI3G_8
target=0 lun=0 CD-ROM(5) - FJ-TEN DVD-ROM DV-05FT2 Rev : 1B20
Chemin d'accès=1 - XILINX MMI3G_8
target=1 lun=0 Accès direct(0) - TOSHIBA MK4050GA Rev : TG10
démarrage du pilote flash
démarrage du pilote de la carte SDCard
démarrage sans pilote de réseau
L'IFS d'urgence est lancé. L'application d'urgence tente de restaurer l'application.
49169 Exécution de /usr/bin/devg-NVTIRM
DMA est désactivé
dma désactivé, priorité du thread d'interruption = 100
49171 Exécution de /sbin/io-media-nvidia
49172 Exécution de /usr/sbin/io-display
49173 Exécution de /usr/apps/MMI3GEmergencyApp
L'interpréteur de commandes d'urgence a démarré, corrigez votre système et redémarrez à nouveau discplayer_init : IN
nvidia_render_manager_init : IN
# App FPGA valide 1
Urgence FPGA valide 1
Désactivation du chien de garde de l'IOC
EmergencyApp-MMI3G : version 22.30.1642, date de création 14.10.2009
<-- J'AI COUPÉ BEAUCOUP PLUS DE TEXTE ICI -->
** DeveloperMode est désactivé !!!! **
** Le système va bientôt s'arrêter ! **
** NE PAS FLASHER AVEC DES SCRIPTS DANS CE MODE !!! **
***********************************************************
** Vous pouvez activer le mode développeur comme suit : **
** echo dummy > /HBpersistence/DeveloperMode **
***********************************************************
Régler DisplayStatus sur 2
Activation du chien de garde de l'IOC
Initier l'arrêt (après le délai d'attente du BEM)...
OnOff : process IPC event HWsample 209 HWvariant 7 FinalShutdown 0

7 | Page
A partir de là, vous pouvez exécuter une commande pour empêcher l'IHM de s'arrêter automatiquement après
60 secondes :
slay -9 MMI3GEmergencyApp

Après avoir exécuté la commande ci-dessus, vous disposez maintenant d'un temps illimité pour récupérer, vous
pouvez maintenant reflasher à partir de la carte SD, en exécutant les commandes suivantes :
Modèle Firmware Commandement
3G (930x) 8R0906961DF flashit -a 0x00040000 -d -f /mnt/sdcard10t11/3/MU9308/fpga/41/default/SystemFPGA.hbbin
flashit -a 0x00100000 -d -f /mnt/sdcard10t11/3/MU9308/fpga-emg/41/default/SystemFPGA.hbbin
flashit -a 0x001C0000 -d -f /mnt/sdcard10t11/3/MU9308/ifs-emg/41/default/ifs-emg.ifs
flashit -a 0x00780000 -d -f /mnt/sdcard10t11/3/MU9308/ifs-root/41/default/ifs-root.ifs
flashit -a 0x04E00000 -d -f /mnt/sdcard10t11/3/MU9308/efs-system/41/default/efs-system.efs
flashit -a 0x06200000 -d -f /mnt/sdcard10t11/3/MU9308/efs-persist/41/default/efs-persist.efs

3G+ 8R0906961DG flashit -a 0x00040000 -d -f /mnt/sdcard10t11/MU9411/fpga/51/default/SystemFPGA.hbbin


(9411) flashit -a 0x00100000 -d -f /mnt/sdcard10t11/MU9411/fpga-emg/51/default/SystemFPGA.hbbin
flashit -a 0x001C0000 -d -f /mnt/sdcard10t11/MU9411/ifs-emg/51/default/ifs-emg.ifs
flashit -a 0x00680000 -d -f /mnt/sdcard10t11/MU9411/ifs-root/51/default/ifs-root.ifs
flashit -a 0x03100000 -d -f /mnt/sdcard10t11/MU9411/efs-extended/51/default/efs-extended.efs
flashit -a 0x03D00000 -d -f /mnt/sdcard10t11/MU9411/efs-system/51/default/efs-system.efs

3G+ 8R0906961DH flashit -a 0x00040000 -d -f /mnt/sdcard10t11/MU9498/fpga/41/default/SystemFPGA.hbbin


(9498) flashit -a 0x00100000 -d -f /mnt/sdcard10t11/MU9498/fpga-emg/41/default/SystemFPGA.hbbin
flashit -a 0x001C0000 -d -f /mnt/sdcard10t11/MU9498/ifs-emg/41/default/ifs-emg.ifs
flashit -a 0x00680000 -d -f /mnt/sdcard10t11/MU9498/ifs-root/41/default/ifs-root.ifs
flashit -a 0x03100000 -d -f /mnt/sdcard10t11/MU9498/efs-extended/41/default/efs-extended.efs
flashit -a 0x03D00000 -d -f /mnt/sdcard10t11/MU9498/efs-system/41/default/efs-system.efs

Après l'exécution de chaque commande flashit, le processus se déroule en trois étapes : effacement,
programmation et vérification.

*** effacement ...


*** programmation ...
*** vérifiant ...
Une fois que vous avez terminé toutes les commandes flashit pour votre MMI, vous pouvez aller de l'avant et
la redémarrer.

Remarque : si la MMI démarre avec tous les voyants allumés et le ventilateur tournant rapidement, il est très
peu probable que vous puissiez la récupérer vous-même. La puce V850 devra être programmée avec le fichier
D1_OS81050_FW_V01_10_07_CS_V02_01_11.ipf à partir du disque de microprogrammation. J'ai des scripts
spéciaux pour effectuer cette opération. La programmation se fait en démarrant les périphériques 'dev-i2c-
hbfpga' et 'dev-inic-flasher', puis en s'adressant à IPC-SWDL avec la commande sendReqDownload, dont la
syntaxe est la suivante : cmnd : 34h \a addr : 01h 00h 00h \a type : 01h \N format : 06h \N- Taille : 01h 00h
00h \N- Longueur max. du bloc : 00h FFh...

****************** effacer V850 ... ********************


CHBSWDLMMI3GFileData : La longueur est de 65536
IPC-SWDL : startErase : addr=10000h, size=10000h, type=1h/IOC_BOLO
IPC-SWDL : sendReqDownload : (cmnd) 34h (addr) 01h 00h 00h (type) 01h (format) 06h (taille)
01h 00h 00h (longueur max. du bloc) 00h FFh terminé
****************** emp ********************
loi
****************** programmation V850 ... ******************** CHBSWDLMMI3GFileData : La
longueur de est 65536
****************** travail terminé ********************
****************** vérification de V850 ... ******************** CHBSWDLMMI3GFileData :
The length of is 65536 ****************** job finished ********************
****************** DONE ! ******************** Chapitre 3 - Quel est le meilleur raccourci

8 | Page
pour récupérer ?
Il est absolument essentiel d'essayer d'abord de démarrer dans l'image de récupération d'urgence, comme
expliqué au chapitre 2, puis d'essayer de reflasher... Mais si vous ne parvenez pas à trouver votre chemin dans
cette méthode complexe, vous pouvez essayer la fonction "auto-pilot".
Si une erreur critique (par exemple une panne de courant) se produit lors du clignotement de l'IHM, une
programmation d'urgence sera effectuée. Cette fonction a été conçue par le fabricant de l'IHM pour
automatiser la récupération. J'appelle cette fonction "pilote automatique" car, en tant que client, vous ne
voyez qu'une information très limitée sur l'écran, votre intervention n'est pas nécessaire, le processus de
récupération est entièrement automatisé.
Mais pour déclencher ce processus automatisé, vous devez suivre certaines étapes. Cette méthode efface les
images FPGA et IFS- root, et au prochain redémarrage de l'IHM, l'unité est forcée de passer en mode de
récupération du pilote automatique.
Faites ceci :
A. Démarrer l'appareil en mode IPL (décrit à l'étape 17).
B. Démarrez dans l'IFS d'urgence (également connu sous le nom d'OS de récupération) en tapant la
commande suivante : boot 1c0000

Après avoir exécuté la commande ci-dessus et quelque part vers la fin, avant de voir le texte Enabling IOC
watchdog , l'écran MMI devient rouge, avec les mots AppFPGA is valid, puis il essaie de s'éteindre dans 60
secondes.

C. Les 60 secondes accordées pour effectuer certaines opérations ne sont pas suffisantes, c'est pourquoi
vous devez les prolonger en exécutant la commande suivante :
slay -9 MMI3GEmergencyApp

D. Supprimez les en-têtes de blocs FPGA en exécutant la commande :


flashit -a 40000 -e 1000

E. Supprimez les en-têtes de bloc de l'IFS-root en exécutant la commande :


flashit -a 00780000 -e 1000

F. Après avoir exécuté la commande ci-dessus, vous devrez insérer la carte SD du micrologiciel dans
l'unité MMI, en vous assurant que le micrologiciel est conçu pour cette unité MMI particulière.

G. Redémarrer l'IHM

H. Lorsque l'IHM démarre cette fois, il doit afficher l'écran vert ci-dessous avec "Téléchargement
d'urgence - processus de suppression" :

9 | Page
I. Chaque processus de suppression achevé est suivi d'un processus de programmation, comme celui-ci :

J. Les processus de suppression et de programmation sont exécutés plusieurs fois, jusqu'à ce que tous les
composants de l'IHM aient été mis à jour. Attendez que le processus de programmation soit terminé et
que le système redémarre automatiquement.

K. Une fois que l'IHM a été redémarrée automatiquement, elle devrait démarrer avec succès.

J'ai rédigé ce document en rassemblant un grand nombre d'informations provenant de différents forums en
ligne, de conversations en ligne, de notes hors ligne, d'expériences pratiques, de nombreuses nuits blanches de
rétro-ingénierie... dans le but de vous aider à récupérer votre MMI défectueuse et j'espère que cela vous sera
utile.

FIN DU DOCUMENT

10 | Page

Vous aimerez peut-être aussi