Está en la página 1de 10

Recuperar un MMI 3G y 3G Plus muerto

Por Keldo Gliana - escrito en el segundo trimestre de 2014, actualizado en el primer trimestre de 2015 -
Versión 3

Resumen del documento:


Usted está leyendo este documento porque probablemente no ha tenido éxito en la actualización del firmware
en la unidad MMI 3G o 3G Plus, o posiblemente ha matado a su MMI durante el hacktivation.

Hay dos categorías principales de fallos: 1) fallos de hardware y 2) fallos de software. Este documento se
refiere únicamente a la reparación de fallos de software.

Los síntomas de los fallos de software van desde que el MMI no arranca en absoluto (pantalla en negro) con el
disco duro interno girando, hasta que se encienden todas las luces del MMI y el ventilador gira rápidamente,
pasando por que el MMI arranca pero no se enciende ninguna luz de fondo en la botonera.

Propósito:
El propósito de este documento es ayudarle a intentar recuperar su MMI muerto, esto se hace accediendo al
MMI vía comunicación terminal RS232 (también conocido como puerto COM). Hay varias técnicas que se
pueden utilizar para rectificar el fallo, 'zmodem' o IPL (Initial Program Load) técnicas se pueden utilizar para
empujar la imagen del sistema operativo de nuevo en el chip flash de la MMI.

Alcance:
Toda la información de este documento se refiere al MMI 3G 9307/9308. Sin embargo, en teoría todas las
demás variantes del MMI (9309, 9411, 9498, etc...) deberían ser iguales.

Descargo de responsabilidad:
Este documento se le proporciona gratuitamente, siéntase libre de aprender y beneficiarse de él. En ningún
momento me hago responsable de sus acciones o de mis notas que puedan inducirle a error. Por lo tanto, y
como en todos mis otros documentos, digo "utilícelo bajo su propia responsabilidad". He reparado más de 50
unidades MMI de 16 países de todo el mundo. Así que cuando todo falle, puedes enviarme por correo tu MMI
(o sólo la placa base) y yo la repararé y te la enviaré por correo. Reparo todo tipo de averías de hardware y
software a precios muy asequibles. Póngase en contacto conmigo para averiguarlo.

Unidad MMI abierta:


Abra la unidad MMI desatornillando todos los tornillos de la parte superior e inferior.
1. Apertura de la cubierta superior

1 | Página
2. Retire el cable flexible del DVD y, a continuación, extraiga el disco duro

Hay un pequeño pasador que sujeta la unidad, sólo empuje suavemente el clip (donde la flecha está
apuntando en la imagen de arriba) y la unidad debe salir.

3. Retire el cable flexible que sale del panel frontal (extremo azul).
4. Si aún no lo ha hecho, dé la vuelta al MMI y retire los dos tornillos que sujetan el panel del
salpicadero:

5. Ahora siga adelante y retire todos los demás tornillos marcados en círculos rojos.

2 | Página
6. Ahora siga adelante y retire el panel del salpicadero.
7. A estas alturas ya deberías estar en la fase mostrada arriba, si no es así, ábrete camino para
conseguirlo.
8. Ahora sigue adelante y retira la placa base. Tendrás dos pestañas que empujar para liberar la placa
base (están aseguradas por la parte frontal de la placa), también intenta evitar colocar mal las pastas
térmicas.
9. La placa base está fuera, y se ve así:

10. Nos interesa el conector resaltado en la imagen anterior, familiarízate con él.
11. O encuentra uno de estos conectores de ranura de borde de tarjeta:
Conector de borde Conector Card Edge para cable plano Conector IDC Card Edge
de tarjeta

3 | Página
O
Haz las cosas de la forma más barata y fea soldando los cables directamente a la placa. La elección es tuya,
pero debes seguir los esquemas que aparecen a continuación, así que vamos a identificar qué lado es cada uno:
Esto es TOP:

Esto es BOTTOM:

Nota: En alemán, antiguamente se solía etiquetar la Bestückungsseite (cara de montaje) con BS, y la Lötseite (cara de
soldadura) con LS. Afortunadamente, esto ya no es apropiado en un entorno técnico donde el inglés es más común, ¡la
abreviatura "BS" puede malinterpretarse como "bottom side"! Por lo tanto, recomendamos una inscripción uniforme
utilizando TOP y BOTTOM para indicar los lados superior e inferior.

Función Pin
RxD Arriba - Clavija 5
TxD Inferior - Clavija 5
Suelo Inferior - Clavija 10

Si no tienes un ordenador con puerto COM (RS232) necesitarás un adaptador USB ^ UART de buena calidad que
tenga Chip FT232RL, te recomiendo algo como esto:

Lo principal a recordar es conectar el RxD y TxD del MMI en forma de espejo cuando se conecta a su cable adaptador
RS232, esto para permitir el tipo de comunicación boca a oído. Más importante aún, necesitas hacer un interruptor en el
circuito para bloquear el canal RxD en el MMI. Esto es necesario para el procedimiento IPL, algo así:

FT232R Estado normal MHI 3G FT232R Estado de la LPI MHI 3G

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

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

____________________ es su interruptor -------- RxD


TxD -------- -------- RxD
adaptador 1 Este es tu interruptor
TxD --------------
adaptador J|

12. Después de conectar los cables o el conector Edge, coloca la placa base, el disco duro, el DVD,
las pastas térmicas, los tornillos, la placa frontal y todo lo demás en la carcasa metálica, justo en
el orden inverso. Del paso 10 volver al paso 2.

13. Configure su puerto COM con los siguientes ajustes:


Puerto: 1 - 4 (para simplificar las cosas)

4 | Página
Velocidad: 115200 para la variante MMI 9303, 9304 y otras. (9302 velocidad máxima tiene que ser
57600)
Bits de datos: 8
Bits de parada: 1
Paridad: ninguna
Control de flujo: XON / XOFF

14. Consigue una buena aplicación de terminal como TeraTerm o PuTTY

15. Conéctalo todo y empieza a solucionar problemas:


Si el MMI no está completamente muerto a continuación, tratar de solucionar el problema antes de
intentar zmdem, jtag o la eliminación de cualquiera de los chips.

16. He aquí un ejemplo de plan de resolución de problemas:


A. Iniciar MMI en modo normal (ningún modo IPL)
B. Comprueba el texto que aparece en la ventana de tu terminal e intenta entender dónde está el
fallo.
C. Intente resolver el problema, consulte a un administrador de QNX o Linux, o póngase en contacto
conmigo para que le oriente. D. Iniciar MMI en modo IPL
E. Arranque en IFS de emergencia
F. Reflash desde tarjetas SD
G. Borrado de las cabeceras FPGA, raíz IFS y activación de la recuperación de emergencia
H. Bloque de persistencia en blanco y espere hasta que la MMI lo reconstruya.
I. Flash bolo
J. Programar el chip V850
K. Utilizar imágenes de recuperación del sistema operativo personalizadas
L. Zmodem la imagen ifs-root.ifs.
M. Conectar JTAG y acceder a todo el espacio flash
N. Si no se ha recuperado a estas alturas, lo más probable es que no pueda recuperarse nunca, así
que considere la posibilidad de enviarme el MMI.

17. Cómo iniciar el proceso de IPL:


a. Activa el interruptor del adaptador RS232 (o conecta de alguna manera el RxD del MMI a la masa
del adaptador).
b. Reinicie el MMI utilizando los 3 botones de reinicio.
c. Apagar el interruptor del Adaptador (quitar la conexión entre el RxD del MMI y tierra).
d. MMI entrará ahora en modo de arranque IPL.

Nota: El IPL está siempre en la dirección 0 y sólo se activa cuando el puerto terminal RxD del MMI está
conectado al puerto GND al encenderse. De lo contrario MMI busca en la cabecera de memoria ifs-root y
fpga, cuando estos se encuentran entonces activa la unidad MMI en ellos.

Comprender el significado del texto en la ventana Terminal

Capítulo 1 - Carga del sistema operativo normal ifs-root.ifs


La ventana Terminal debería proporcionarle suficiente información para saber en qué fase se encuentra y por
dónde empezar a solucionar los problemas, una línea similar a la que se resalta a continuación es un buen
ejemplo:

5 | Página
imagen inicial @680000 . ..
Puesta en marcha: , construido 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, built 2008/06/18_15-16-25_UTC].
CPU: SH7785 (>= 5º corte, modo clk 20. 4xDDR), 792MHz
RAM: 512 MB (probada, DBCONF=e30002)
FLASH: Spansion S29GL512N (32 bits): 512 sectores x 256K
FPGA: PL_MMI3G_FPGA_9308_D1_09324A (0ms)

*** Marca anticuada encontrada en IFS @0x1c0000: .zero=0x3000001e


*** Marca anticuada encontrada en IFS @0x680000: .zero=0x10000000

imagen inicial @680000 . ..


Puesta en marcha: , construido 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
Falla

El ejemplo anterior dice que el MMI falló al arrancar cuando intentaba direccionar la imagen de lanzamiento
0x680000, y ese es el problema ya que un buen IFS debería estar localizado en la dirección 0x780000. Así que
una solución fácil para esto sería para arrancar el MMI con el comando:
arranque 780000

Un incidente como este puede ocurrir debido al hecho de que el MMI fue flasheado con un firmware
personalizado que tenía IFS de la dirección 0x680000 y lo rompió. Si el MMI arranca bien con ' boot 780000',
entonces usted debe entrar en el menú de ingeniería y reflash con el firmware correcto de inmediato.

Aquí tiene una lista con información sobre las imágenes de los modelos 9307, 9308 y 9309:
Nº de imagen Dirección de la imagen Nombre de la imagen Inicio Fin Talla
2. 0x00000000 IPL 63264 262144 256kb
3. 0x00040000 FPGA 746472 786432 768 kb
4. 0x00100000 EMERGENCIA FPGA 746472 786432 768 kb
5. 0x001C0000 IFS EMERGENCIA 4,666,284 6,029,312 5888kb (5MB)
6. 0x00780000 IFS - RAÍZ 36866456 50855936 49664kb (48MB)
7. 0x03800000 EFS EXTEND 23,068,672 58,720,256 57344kb (56MB)
8. 0x04E00000 SISTEMA EFS 20971520 20971520 20480kb (20MB)
9. 0x06200000 PERSISTENCIA EFS 30,408,704 31,457,280 29696kb (29MB)
10. 0x07f00000 BIOS
11. 0x08000000 FIN DE FLASH

La misma lista puede extraerse para otros modelos y variantes utilizando el archivo metainfo2.txt de los discos
de firmware. La información figura en la sección de diseño de imágenes.
Capítulo 2 - arranque en emeg a través de IPL y reflash
Siempre puede iniciar el MMI en modo IPL (descrito anteriormente), Cuando la ventana de terminal muestre "
=> ", escriba help y pulse enter, la pantalla será como la siguiente:
IPL: Audi 3G 9308 (SH7785) / QNX 6.3.0 [PL_qnx_ipl-3g_9308-sh7785_08253A, built 2008/06/18_15-16-25_UTC].
CPU: SH7785 (>= 5º corte, modo clk 20. 4xDDR), 792MHz
RAM: 512 MB (probada, DBCONF=e30002)
FLASH: Spansion S29GL512N (32 bits): 512 sectores x 256K
FPGA: PL_MMI3G_FPGA_9308_D1_09324A (0ms)
Al entrar en la CLI, escriba '?' o 'help' para obtener ayuda
=> ayuda
? - alias para 'help
bconf - muestra la configuración del gestor de arranque
bios - iniciar BIOS
boot - imagen de arranque en memoria/flash
diag_p1j - diagnóstico del problema de fluctuación del reloj PLL1
download - descarga del IFS a través de la línea serie (protocolo sendnto) echo - eco de los argumentos
fpga - cargar FPGA desde imagen en memoria/flash
go - saltar a 'addr
help - imprimir ayuda en línea
hwconf - vuelca la configuración del hardware

6 | Página
md - visualización de la memoria
memperf - prueba de rendimiento de la memoria (benchmark)
memtest - test de memoria
mt - alias para 'memtest
pci - lista los dispositivos pci
qinfo - mostrar información de compilación de QNX
rsupdate - consulta del modo de actualización del desplazador de lectura (solución para la limitación #48 de SH7785)
rz - alias para 'zmodem'
scan - escanear flash en busca de imágenes (FPGA, IFS, paquete BIOS)
versión - imprimir la versión del programa
zmodem - descarga IFS o FPGA a través de línea serie (protocolo Z-Modem)

Ahora puede intentar arrancar en ifs de emergencia (también conocido como SO de recuperación), escribiendo

el siguiente comando: boot 1c0000

Si el SO de recuperación es válido, entonces el MMI arrancará, verás algo como esto:


=> arranque 1c0000
imagen inicial @801c0000 ...
Puesta en marcha: PL_qnx_startup-sh7785_08362A, construido 2008/09/02_07-53-12_UTC
RAM : 256 MB @0x08000000
FLASH: 128 MB @0x00000000
Página del sistema en phys:0800a000 user:0800a000 kern:8800a000
Iniciando el siguiente programa en v88046840
Bienvenido a QNX 6.3.2 (RL_qnx_os_632_PSP3_08124A) MMI3G Audi EMERGENCY SETUP 9308 D1 09431A iniciar controlador pci
*** init FPGA registers ***
inicio de dev-ipc para COI
inicializar el controlador IPC
arranque del controlador de red
inicio del controlador atapi - configuración del dispositivo /dev/cam0
iniciando devc-pty
Ruta=0 - XILINX MMI3G_8
target=0 lun=0 CD-ROM(5) - FJ-TEN DVD-ROM DV-05FT2 Rev: 1B20
Ruta=1 - XILINX MMI3G_8
target=1 lun=0 Direct-Access(0) - TOSHIBA MK4050GA Rev: TG10
arranque del controlador flash
inicio del controlador SDCard
empezar sin controlador de red
Se inicia el IFS de emergencia. La aplicación de emergencia intenta restaurar la aplicación.
49169 ejecutando /usr/bin/devg-NVTIRM
DMA desactivado
dma desactivado, prioridad del hilo de interrupción = 100
49171 ejecutando /sbin/io-media-nvidia
49172 ejecutando /usr/sbin/io-display
49173 ejecutando /usr/apps/MMI3GEmergencyApp
Shell de emergencia iniciado, arregle su sistema y reinicie de nuevo discplayer_init: EN
nvidia_render_manager_init: EN
# Aplicación FPGA válida 1
FPGA de emergencia válida 1
Desactivación del perro guardián del COI
EmergencyApp-MMI3G: versión 22.30.1642, fecha de compilación 14.10.2009
<-- MUCHO MÁS TEXTO HE RECORTADO AQUÍ -->
¡¡¡¡** DeveloperMode está desactivado!!!! **
# ¡El sistema se apagará pronto! # **
** ¡¡¡NO FLASHEES CON SCRIPTS EN ESTE MODO!!! **
***********************************************************
*Puedes activar el modo desarrollador así* **
** echo dummy > /HBpersistence/DeveloperMode **
***********************************************************
Establecer DisplayStatus a 2
Activación del perro guardián del COI
Iniciar el apagado (después del tiempo de espera de BEM)...
OnOff: procesar evento IPC HWsample 209 HWvariant 7 FinalShutdown 0

7 | Página
Desde aquí hay un comando que puede ejecutar para evitar que el MMI se apague automáticamente después
de 60 segundos, ejecute este comando:
slay -9 MMI3GEmergencyApp

Después de ejecutar el comando anterior ahora tiene tiempo ilimitado para recuperar, ahora puede reflash
desde la tarjeta SD, mediante la ejecución de los siguientes comandos:
Modelo Firmware Comando
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

Después de ejecutar cada comando flashit se llega a ver un proceso de 3 etapas; borrar, programar y verificar.

*** borrando ...


*** programación ...
*** verificando ...
Una vez que haya completado todos los comandos flashit para su MMI, entonces usted puede seguir adelante
y reiniciarlo.

Nota: Si el MMI se inicia con todas las luces encendidas y el ventilador girando rápido entonces es muy poco
probable que pueda recuperarlo usted mismo, el chip V850 tendrá que ser programado con el archivo
D1_OS81050_FW_V01_10_07_CS_V02_01_11.ipf desde el disco de firmware. Tengo scripts especiales para
realizar esto. La programación se realiza iniciando los dispositivos 'dev-i2c- hbfpga' y 'dev-inic-flasher', luego se
dirige a IPC-SWDL con el comando sendReqDownload, las sintaxis son: cmnd: 34h \ addr: 01h 00h 00h \ type:
01h \ format: 06h \ size: 01h 00h 00h \ max blk len: 00h FFh...

****************** borrando V850 ... ********************


CHBSWDLMMI3GFileData : La longitud de es 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 (size)
01h 00h 00h (max blk len) 00h FFh terminado ********************
****************** emp
leo ****************** programación V850 ... ********************
CHBSWDLMMI3GFileData : La longitud de es 65536
****************** trabajo terminado ********************
****************** verificando V850 ... ******************** CHBSWDLMMI3GFileData : La
longitud de es 65536 ****************** trabajo terminado ********************
****************** ¡HECHO! ******************** Capítulo 3 - ¿Cuál es el mejor atajo para
recuperar?
Es absolutamente esencial intentar arrancar primero en la imagen de recuperación de Emergencia, como se

8 | Página
explica en el Capítulo 2 y luego intentar reflashear... Pero si no puedes encontrar el camino en ese complejo
método, entonces puedes probar la función 'piloto automático'.
Si se produce un error crítico (por ejemplo, un corte de corriente) al realizar el parpadeo en el MMI, se llevará a
cabo una programación de emergencia. Esto ha sido diseñado por el fabricante de MMI para automatizar la
recuperación, yo llamo a esta característica como "piloto automático", ya que como cliente se llega a ver una
información muy limitada en la pantalla, su entrada no es necesaria, todo el proceso de recuperación está
automatizado.
Pero para activar este proceso automatizado hay que seguir algunos pasos. Este método borrará la FPGA y las
imágenes raíz del IFS, y en el siguiente reinicio de la MMI la unidad será forzada al modo de recuperación del
piloto automático.
Haz esto:
A. Arranque la unidad en modo IPL (descrito en el paso 17).
B. Arranque en el IFS de emergencia (también conocido como SO de recuperación), escribiendo el
siguiente comando: boot 1c0000

Después de ejecutar el comando anterior y en algún lugar hacia el final, antes de ver Enabling IOC watchdog
texto, la pantalla MMI se vuelve rojo, con las palabras AppFPGA es válida, y luego intenta apagar en 60
segundos.

C. Esos 60 segundos dados para realizar cierto proceso no son suficientes, por lo tanto, necesitará
extender esto solo ejecute el siguiente comando:
slay -9 MMI3GEmergencyApp

D. Borrar las cabeceras de bloque FPGA ejecutando el comando:


flashit -a 40000 -e 1000

E. Borre las cabeceras de bloque IFS-root ejecutando el comando:


flashit -a 00780000 -e 1000

F. Después de ejecutar el comando anterior tendrá que insertar la tarjeta SD de firmware en la unidad
MMI, asegúrese de que el firmware está diseñado para esta unidad MMI en particular.

G. Reiniciar MMI

H. Cuando el MMI se inicie esta vez, debería mostrar la siguiente pantalla verde con "Descarga de
emergencia - proceso de borrado":

9 | Página
I. Cada proceso de eliminación completado es seguido por un proceso de Programación, como éste:

J. Los procesos de borrado y programación se realizan varias veces, hasta que se han actualizado todos
los componentes del MMI. Espere a que finalice el proceso de programación y el sistema se reinicie
automáticamente.

K. Una vez que el MMI se haya reiniciado automáticamente, debería arrancar con éxito.

He elaborado este documento a partir de la recopilación de una gran cantidad de información de muchos foros
en línea diferentes; conversaciones PM, notas fuera de línea, la experiencia práctica, muchas noches sin dormir
de ingeniería inversa ... con el objetivo de ayudarle a recuperar su bricked MMI y espero que ayude.

FIN DEL DOCUMENTO

10 |
Página

También podría gustarte