Samstag, 2. Februar 2013

MMI 2G / 3G / 3GP metainfo2.txt Checksummenberechnung

Vor einiger Zeit habe ich mich mal damit befasst, wie denn eigentlich die Checksummenberechnung der diversen 2G / 3G / 3GP Software-Update metainfo2.txt Files durchgeführt wird.
Dieses Verständnis ist z.B. nötig, um geänderte Files über den normalen MMI Update-Mechanismus einzuspielen, welche ihrerseits mit einer Checksumme im metainfo-File hinterlegt sind.

Also...
Grundsätzlich basieren alle metainfo2.txt Checksummenberechnungen auf einem normalen crc32 (cyclic redundancy check mit 32 Bit Checksumme) Algorithmus.
Nun gibt es von diesem verschiedene Ausprägungen.
- das verwendete Polynom
- initialer Wert der Checksumme (vor dem 1. Durchlauf)
- finaler XOR mit 0xffffffff oder nicht

Bei den genannten MMI Versionen kommt ein Polynom 0xEDB88320 zum Einsatz.
Initialisiert wird der Checksummenbuffer mit 0xFFFFFFFF und dieser wird nach der Berechnung mit 0xFFFFFFFF XOR verknüpft.
Die Berechnung fängt immer bei Adresse 0 an und geht bis einschließlich zum letzten Byte.

So ein metainfo2.txt File besitzt zuerst einmal eine "globale" Checksumme, welche die Integrität des jeweiligen metainfo-Files sicherstellt.
Zu erkennen ist diese Checksumme an der Variablenbezeichung "MetafileChecksum".

An dieser Stelle ist es wichtig, dass bei einer Änderung dieser "globalen" Checksumme, keine Berechnung mit der Checksumme in dem File enthalten möglich ist.
(was ja logisch betrachtet eigentlich auch klar sein sollte...)
Also, wenn man die MetafileChecksum neu berechnen möchte, muss man diese komplette Zeile aus der Datei löschen, die Checksumme (nach oben beschriebenen Muster) berechnen und dann die Zeile wieder hinzufügen. (natürlich dann mit der neu berechneten Checksumme)

Die übrigen Checksummen in den metainfo-Files werden auch nach oben beschriebenem Muster berechnet.
Einzig, wenn Files größer als 512 Kilobyte groß sind, dann wird alle 512k jeweils über die vorherigen 512k eine Checksumme berechnet und abgelegt.
Checksum, Checksum1, Checksum2 etc. sind dann die jeweilig zu findenen Variablen.

Für einfach Berechnungen funktioniert das DF CRC-SFV Tool.
Leider nicht für Files mit mehr als 512k Größe, da es immer nur eine Checksumme über das gesamte File berechnet.
Wenn man sich einen Checksummenberechner selber schreibt, dann ist die Sache natürlich einfach gelöst.
Notfalls kann man sich bei großen Files mit filesplit32 behelfen und die großen Files in kleine Häppchen splitten und über diese kleineren Stücke dann mit DF CRC eine Checksumme berechnen.

In Verbindung mit dem MMI 2G Startscreen-Format, könnte die Checksummenberechnung - insbesondere über das DF CRC-SFV Tool aber durchaus hilfreich sein.

Ich möchte nur extra noch einmal darauf hinweisen, dass Modifikationen an Update-CDs/DVDs nicht ungefährlich sind.
Insbesondere beim MMI 3G / 3GP ist nach einem Fehler häufig die EmergApp (der Emergency-Mode) der nächste Halt.
Ist man erst einmal in diesem Modus, so muss man unbedingt die Checksumme der zuletzt verwendeten metainfo2.txt sichern und gut aufheben.
Das 3G / 3GP (5F) akzeptiert im Emergency nur noch ein Update von der zuletzt verwendeten Quelle (SD1 / SD2 / DVD) und auch nur mit der zuletzt verwendeten Checksumme.
Man bekommt die 5F Unit auch in so einem Fall wieder aus dem Emergency, das Vorgehen in so einem Fall ist aber ein Thema für einen der nächsten Blogeinträge.

Kommentare:

  1. Hallo Leute,
    hab ein riesen Problem mit dem MMI 3G. Und BITTE EUCH UM HILFE/RAT!!!!

    Ich war neugierig über die Einstellungen im MMI, bin über folgenden Link ins Hidden Menü gekommen,

    http://www.stemei.de/pages/coding/audi-a6-4f/mmi-3g-hidden-menue.php

    Hab´s nicht so mit dem Englischen, hab deshalb Ausversehen irgendetwas verändert.
    Der Bildschirm geht jetzt nicht mehr aus und es steht folgende Meldung:



    MMI 3G EmApp 21.29.1642
    MU 9307
    Starting update
    Erase
    update failed! retry after reset....



    MMI 3G EmApp 21.29.1642
    MU 9307
    Starting update
    no medium
    update failed! retry after reset....



    Kann damit überhaupt nichts anfangen...
    Ich hoffe einer von euch kann mir weiterhelfen!
    Bin für jede Antwort dankbar!

    AntwortenLöschen
  2. Du bist im Emergency Boot gelandet.
    Um die Unit dort wieder herauszubekommen, brauchst du eine Update-DVD.
    Diese steckst du dann in das Laufwerk und die Mainunit sollte anfangen wieder eine funktionierende Firmware auf die Unit zu schreiben.

    AntwortenLöschen
  3. Danke für die Antwort.
    Weißt du wie die Update-DVD genau heißt und wo bekomme ich diese her? Runterladen-Kaufen?
    Werden dann alle vorherigen Einstellungen auf der Unit gelöscht oder überschrieben?
    Kannst du mir sagen, was das genau bedeutet "MMI 3G EmApp 21.29.1642
    MU 9307"

    AntwortenLöschen
  4. Ich versuche ein metainfo2.txt zu andern, aber die "MetafileChecksum" soll ich dan berechnen.
    Ich bin eine bestehende Datei zu testen, aber ich bekommen nicht die richtigen Code.
    ich habe diese komplette Zeile aus der Datei gelöscht und die checksum berechnet.

    Bitte hilfe...

    AntwortenLöschen
  5. schreib mir an ladadens1@aol.com
    kann dir helfen.
    gruss

    AntwortenLöschen
  6. Dieser Kommentar wurde vom Autor entfernt.

    AntwortenLöschen

  7.  
    Ich habe gleiche Problem

    MMI 3G EmApp 21.29.1642
    MU 9307
    Starting update
    no medium
    update failed! retry after reset.... 
     
    Kann mir jemand helfen? 
     

    AntwortenLöschen