how to recover a bricked audi mmi 3g or 3g plus

10
Recovering a dead MMI 3G and 3G Plus By Keldo Gliana – written Q2 2014, updated Q1 2015 – Version 3 Document Summary: You’re reading this document because you have probably had unsuccessful firmware update on MMI 3G or 3G Plus unit, or possible you have killed your MMI during hacktivation. There are two main categories of faults, 1) hardware faults, 2) software faults. This document covers the repairs of software faults only. The symptom of software faults range from MMI not starting at all (black screen) with being able to internal HDD spinning, to all MMI lights on and fan spinning fast, to MMI starting but you also get no background light on button control panel. Purpose: The purpose of this document is to help you to attempt to recover your dead MMI, this is done by accessing the MMI via RS232 terminal communication (also known as COM port). There several techniques that can be used to rectify the fault, ‘zmodem’ or IPL (Initial Program Load) techniques can be used to push the OS image back into the MMI’s flash chip. Scope: All information in this document refer to the MMI 3G 9307/9308. However, in theory all other MMI variants (9309, 9411, 9498, etc…) should be the same. Disclaimer: This document is provided to you for free, feel free to learn and benefit from it. At no stage I take responsibility of your actions or any of my notes that may mislead you. Therefore, and like my all other documents I say “use at your own risk”. I have repaired 50+ MMI units from 16 countries around the globe. So when everything fails, you can post me your MMI (or just the motherboard) and I will repair it and post it back to you. I repair all type of hardware and software faults at very affordable prices. Contact me to find out. Open MMI unit: Open MMI unit by unscrewing all the screws at the top and bottom. 1. Opening the top cover 1 | Page

Upload: keldo-gliana

Post on 28-Dec-2015

14.629 views

Category:

Documents


391 download

DESCRIPTION

This is a how-to document to recover a dead Audi MMI 3G and 3G plus units; the document is provided as best effort and for free, therefore it's expected the user to run at their own risk.

TRANSCRIPT

Page 1: How to recover a bricked Audi MMI 3G or 3G Plus

Recovering a dead MMI 3G and 3G Plus By Keldo Gliana – written Q2 2014, updated Q1 2015 – Version 3

Document Summary: You’re reading this document because you have probably had unsuccessful firmware update on MMI 3G or 3G Plus unit, or possible you have killed your MMI during hacktivation.

There are two main categories of faults, 1) hardware faults, 2) software faults. This document covers the repairs of software faults only.

The symptom of software faults range from MMI not starting at all (black screen) with being able to internal HDD spinning, to all MMI lights on and fan spinning fast, to MMI starting but you also get no background light on button control panel.

Purpose: The purpose of this document is to help you to attempt to recover your dead MMI, this is done by accessing the MMI via RS232 terminal communication (also known as COM port). There several techniques that can be used to rectify the fault, ‘zmodem’ or IPL (Initial Program Load) techniques can be used to push the OS image back into the MMI’s flash chip.

Scope: All information in this document refer to the MMI 3G 9307/9308. However, in theory all other MMI variants (9309, 9411, 9498, etc…) should be the same.

Disclaimer: This document is provided to you for free, feel free to learn and benefit from it. At no stage I take responsibility of your actions or any of my notes that may mislead you. Therefore, and like my all other documents I say “use at your own risk”. I have repaired 50+ MMI units from 16 countries around the globe. So when everything fails, you can post me your MMI (or just the motherboard) and I will repair it and post it back to you. I repair all type of hardware and software faults at very affordable prices. Contact me to find out.

Open MMI unit: Open MMI unit by unscrewing all the screws at the top and bottom.

1. Opening the top cover

1 | P a g e

Page 2: How to recover a bricked Audi MMI 3G or 3G Plus

2. Remove DVD flexi cable and then remove the hard drive

There is a small pin that holds the drive, just gently push-in the clip

(where the arrow is pointing in the above picture) and the drive should pop out.

3. Remove the flexi cable that comes from the front panel (blue end). 4. If you haven’t done so already, flip the MMI up-side-down, and remove the two screws that

hold facia panel, see below:

5. Now go ahead and remove all the other screws marked in red circles.

2 | P a g e

Page 3: How to recover a bricked Audi MMI 3G or 3G Plus

6. Now go ahead and remove the facia panel. 7. By now you should be at the stage shown above, if not, make your way to achieve it. 8. Now go ahead and remove the motherboard. You will have two tabs to push in to release the

motherboard (they’re secured by the front of the board), also try to avoid misplacing thermal pastes.

9. The motherboard is out, and it looks like this:

10. We’re interested in the connector highlighted in the above picture, familiarise yourself with it. 11. Either find yourself one of these Card Edge Slot Connectors:

Card Edge Connector Card Edge connector for ribbon cable Card Edge IDC connector

3 | P a g e

Page 4: How to recover a bricked Audi MMI 3G or 3G Plus

OR

Do things the cheap and ugly way by soldering wires directly to the board. The choice is yours but you must follow the schematics below, so let’s identify which side is which:

This is TOP:

This is BOTTOM:

Please note: In German, it was once common practice to label the Bestückungsseite (assembly side) with BS, and the Lötseite (solder side) with LS. Fortunately this is no longer appropriate as technical environment where English is more common, the abbreviation “BS” may be misunderstood as “bottom side”! We therefore recommend a uniform inscription using TOP and BOTTOM to indicate the upper and lower sides.

Function Pin RxD Top – Pin 5 TxD Bottom – Pin 5 Ground Bottom – Pin 10

If you don’t have a computer with COM port (RS232) you will need a good quality USB UART adapter that has FT232RL Chip, I recommend something like this:

OR

The main thing to remember is connect the MMI’s RxD and TxD in mirrored way when connecting to your RS232 adapter\cable, this to allow mouth to ear type of communication. More importantly, you need to make a switch in the circuit to block the RxD channel on the MMI. This is required for IPL procedure, something like this:

4 | P a g e

Page 5: How to recover a bricked Audi MMI 3G or 3G Plus

12. After connecting the wires or Edge connector, put the motherboard, hard drive, DVD, thermal pastes, screws, facia board and everything else in the metal casing, just in the reverse order. From step 10 back to step 2.

13. Configure your COM port with the following settings: Port: 1 – 4 (just to simplify things) Speed: 115200 for MMI variant 9303, 9304 and others. (9302 max speed has to be 57600) Data bits: 8 Stop bits: 1 Parity: none Flow control: XON / XOFF

14. Get yourself a good terminal application such as TeraTerm or PuTTY

15. Connect it all up and start Troubleshooting: If the MMI is not completely dead then try to troubleshoot before you try to attempt to zmdem, jtag or removing any of the chips.

16. Here is an example of troubleshooting plan: A. Start MMI in normal mode (none IPL mode) B. Check the text that appears in your terminal window, and try to understand where the fault is. C. Attempt to resolve the problem, consult a QNX or Linux administrator, or contact me for guidance. D. Start MMI in IPL mode E. Boot into Emergency IFS F. Re-flash from SD cards G. Delete FPGA headers, IFS root and trigger into emergency recovery H. Blank persistency block and wait until the MMI rebuilds it. I. Flash bolo J. Program V850 chip K. Use custom recovery OS images L. Zmodem the ifs-root.ifs image. M. Connect JTAG and access all flash space N. If you haven’t recovered by now, chances are you will never be able to recover, thus consider

posting me the MMI.

17. How-to initiate IPL process: a. Turn on RS232 adapter’s switch (or somehow connect MMI’s RxD to Adapter’s ground) b. Restart MMI using the 3 reboot buttons. c. Turn off Adapter’s switch (remove the connection between MMI’s RxD and ground) d. MMI will now go into boot mode IPL.

Please note: That IPL is always at address 0 and it only kicks in when MMI’s RxD terminal port is connected to GND port at the power up. Otherwise MMI searches the memory header for ifs-root and fpga, when these are found then it triggers MMI unit into them.

5 | P a g e

Page 6: How to recover a bricked Audi MMI 3G or 3G Plus

Understanding what the text means in Terminal window Chapter 1 – Loading normal ifs-root.ifs OS The Terminal window should provide you enough information to learn what stage you have reached and where to begin your troubleshooting, a line similar to the one highlighted below is a good example:

starting image @680000 ... Startup: , built 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 (>= 5th cut, clk mode 20. 4xDDR), 792MHz RAM: 512 MB (probed, DBCONF=e30002) FLASH: Spansion S29GL512N (32bit): 512 sectors x 256K FPGA: PL_MMI3G_FPGA_9308_D1_09324A (0ms) *** Old-fashioned mark found on IFS @0x1c0000: .zero=0x3000001e *** Old-fashioned mark found on IFS @0x680000: .zero=0x10000000 starting image @680000 ... Startup: , built 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 Fail

The above example says the MMI failed to start when it was attempting address the launch image 0x680000, and that’s the problem as a good IFS should be located at the address 0x780000. So an easy fix for this would be to boot the MMI with command:

boot 780000 An incident like this may occur due to the fact the MMI was flashed with a custom firmware that had IFS from the address 0x680000 and it broke it. If the MMI boots ok with ‘boot 780000’ then you should enter engineering menu and reflash it with the right firmware straightaway.

Here is a list of image information for 9307, 9308 and 9309:

Image No. Image Address Image Name Start End Size 2. 0x00000000 IPL 63264 262144 256kb 3. 0x00040000 FPGA 746472 786432 768 kb 4. 0x00100000 FPGA EMERGENCY 746472 786432 768 kb 5. 0x001C0000 IFS EMERGENCY 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 EFS SYSTEM 20971520 20971520 20480kb (20MB) 9. 0x06200000 EFS PERSISTENCE 30,408,704 31,457,280 29696kb (29MB) 10. 0x07f00000 BIOS 11. 0x08000000 END OF FLASH

The same list can be extracted for other models and variants using the metainfo2.txt file from the firmware disks. The information are listed under image layout section.

6 | P a g e

Page 7: How to recover a bricked Audi MMI 3G or 3G Plus

Chapter 2 – boot into emeg via IPL and reflash You can always start the MMI into IPL mode (described above), When the terminal window displays " => ", type help and hit enter, the screen will be like below: 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 (>= 5th cut, clk mode 20. 4xDDR), 792MHz RAM: 512 MB (probed, DBCONF=e30002) FLASH: Spansion S29GL512N (32bit): 512 sectors x 256K FPGA: PL_MMI3G_FPGA_9308_D1_09324A (0ms) Entering CLI, type '?' or 'help' for help => help ? - alias for 'help' bconf - display boot manager configuration bios - start BIOS boot - boot image in memory/flash diag_p1j - diagnostic for the PLL1 clock jitter problem download - download IFS over serial line (sendnto protocol) echo - echo args fpga - load FPGA from image in memory/flash go - jump to 'addr' help - print online help hwconf - dump hardware configuration md - memory display memperf - memory performance test (benchmark) memtest - memory test mt - alias for 'memtest' pci - lists pci devices qinfo - display QNX build information rsupdate - query read shifter update mode (workaround for SH7785 limitation #48) rz - alias for 'zmodem' scan - scan flash for images (FPGA, IFS, BIOS packet) version - print program version zmodem - download IFS or FPGA over serial line (Z-Modem protocol)

You can now try to boot into emergency ifs (also known as recovery OS), by typing the following command:

boot 1c0000

If the recovery OS is valid, then the MMI will boot, you will see something like this:

=> boot 1c0000 starting image @801c0000 ... Startup: PL_qnx_startup-sh7785_08362A, built 2008/09/02_07-53-12_UTC RAM : 256 MB @0x08000000 FLASH: 128 MB @0x00000000 System page at phys:0800a000 user:0800a000 kern:8800a000 Starting next program at v88046840 ------------------------------------------------------ Welcome to QNX 6.3.2 (RL_qnx_os_632_PSP3_08124A) MMI3G Audi EMERGENCY SETUP 9308 D1 09431A starting pci driver *** init FPGA registers *** starting dev-ipc for IOC initialize IPC Driver starting network driver starting atapi driver - setup device /dev/cam0 starting devc-pty Path=0 - XILINX MMI3G_8 target=0 lun=0 CD-ROM(5) - FJ-TEN DVD-ROM DV-05FT2 Rev: 1B20 Path=1 - XILINX MMI3G_8 target=1 lun=0 Direct-Access(0) - TOSHIBA MK4050GA Rev: TG10 starting flash driver starting SDCard driver starting with no network driver =========================================================== Emergency IFS is started. Emergency app tries to restore the application. =========================================================== 49169 running /usr/bin/devg-NVTIRM DMA is Disabled dma disabled, interrupt thread priority = 100 49171 running /sbin/io-media-nvidia 49172 running /usr/sbin/io-display 49173 running /usr/apps/MMI3GEmergencyApp =========================================================== Emergency shell started, fix your system and restart again =========================================================== discplayer_init: IN nvidia_render_manager_init: IN # App FPGA valid 1 Emergency FPGA valid 1 Disabling IOC watchdog EmergencyApp-MMI3G: version 22.30.1642, date of build 14.10.2009 <-- A LOT MORE TEXT I HAVE TRIMMED HERE --> ** DeveloperMode is off!!!! ** ** The system will shutdown soon! ** ** DO NOT FLASH WITH SCRIPTS IN THIS MODE!!! ** *********************************************************** ** You can enable DeveloperMode like this: ** ** echo dummy > /HBpersistence/DeveloperMode ** *********************************************************** Set DisplayStatus to 2 Enabling IOC watchdog Initiate shutdown (after BEM timeout)... OnOff: process IPC event HWsample 209 HWvariant 7 FinalShutdown 0

7 | P a g e

Page 8: How to recover a bricked Audi MMI 3G or 3G Plus

From here there is one commands you can run to stop the MMI from automatically shutdown after 60 seconds, run this command:

slay -9 MMI3GEmergencyApp

After running the above command you have now unlimited time to recover, now you can reflash from SD card, by running the following commands:

Model Firmware Command 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+ (9411)

8R0906961DG flashit -a 0x00040000 -d -f /mnt/sdcard10t11/MU9411/fpga/51/default/SystemFPGA.hbbin 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+ (9498)

8R0906961DH flashit -a 0x00040000 -d -f /mnt/sdcard10t11/MU9498/fpga/41/default/SystemFPGA.hbbin 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

After running each flashit command you get to see a 3 stage process; erase, program and verify.

*** erasing ... *** programming ... *** verifying ...

Once you have completed all flashit commands for your MMI, then you can go ahead and restart it.

Note: If the MMI starts with all lights on and fan spinning fast then it’s very unlikely to be able to recover it yourself, the V850 chip will need to be programmed with file D1_OS81050_FW_V01_10_07_CS_V02_01_11.ipf from the firmware disk. I have special scripts to perform this. The programming is done by starting ‘dev-i2c-hbfpga’ and ‘dev-inic-flasher’ devices, then address IPC-SWDL with command sendReqDownload, the syntaxes are: cmnd: 34h \ addr: 01h 00h 00h \ type: 01h \ format: 06h \ size: 01h 00h 00h \ max blk len: 00h FFh… ****************** erasing V850 ... ******************** CHBSWDLMMI3GFileData : The length of is 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 ****************** job finished ******************** ****************** programming V850 ... ******************** CHBSWDLMMI3GFileData : The length of is 65536 ****************** job finished ******************** ****************** verifying V850 ... ******************** CHBSWDLMMI3GFileData : The length of is 65536 ****************** job finished ******************** ****************** DONE! ********************

8 | P a g e

Page 9: How to recover a bricked Audi MMI 3G or 3G Plus

Chapter 3 - What is the best shortcut to recover? It’s absolutely essential to attempt to boot into Emergency recovery image first, as explained in Chapter 2 and then try to reflash… But if you can’t find your way in that complex method then you can try the ‘auto-pilot’ feature.

If a critical error (e.g. a power failure) occurred when performing flashing on the MMI, an emergency programming will take place. This has been designed by MMI’s manufacture to automate the recovery, I call this feature as “auto-pilot” since as a customer you get to see a very limited information on the display, your input is not required, the full recovery process is automated.

But to trigger this automated process you have to follow some steps. This method will erase the FPGA and IFS-root images, and on the next MMI reboot the unit is forced into auto-pilot recovery mode.

Do this:

A. Start the unit in IPL mode (described on step 17). B. Boot into emergency IFS (also known as recovery OS), by typing the following command:

boot 1c0000

After running the above command and somewhere towards the end, before you see Enabling IOC watchdog

text, the MMI display turns red, with the words AppFPGA is valid, and then it tries to shutdown in 60 seconds.

C. Those 60 seconds given to perform certain process are not sufficient, therefore, you will need to extend this just run the following command: slay -9 MMI3GEmergencyApp

D. Delete FPGA block headers by running command: flashit -a 40000 -e 1000

E. Delete IFS-root block headers by running command: flashit -a 00780000 -e 1000

F. After you run the above command you will need to insert firmware SD card into the MMI unit, make sure the firmware is designed for this particular MMI unit.

G. Restart MMI

H. When the MMI starts this time, it should display the below green screen with “Emergency download - deletion process”:

9 | P a g e

Page 10: How to recover a bricked Audi MMI 3G or 3G Plus

I. Every completed deletion process is followed by Programming process, like this one:

J. The deletion and programming processes are performed several times, until all components of the MMI have been updated. Wait until the programming process is finished and the system automatically restarts.

K. Once the MMI has been rebooted automatically, it should start successfully.

I have put this document together from collecting a lot of information from many different online forums; PM conversations, offline notes, hands-on experience, many sleepless nights of reverse engineer… with aim to help you to recover your bricked MMI and I hope it helps.

END OF DOCUMENT

10 | P a g e