Milestone SBF Recalc für Motorola Milestone erweitern?

Dieses Thema im Forum "Motorola Forum" wurde erstellt von rplayer, 24. März 2010.

  1. rplayer

    rplayer Neues Mitglied

    Registriert seit:
    17. März 2007
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo erstmal,

    da jetzt nun im irc (#milestone-modding) die Frage aufkam,
    inwieweit es möglich oder geplant ist SBF RECALC um das Milestone zu erweitern,
    dachte ich, ich frage mal an der Quelle nach. Ich glaube die Hoffnungen der ganzen
    Milestone Community ruhen auf Meiner Einer. :)
    Danke schonmal im vorraus.

    mfg

    rplayer
     
  2. Meiner Einer

    Meiner Einer Vertrauensmitglied

    Registriert seit:
    21. Aug. 2006
    Beiträge:
    5.795
    Zustimmungen:
    15
    Ja, ich arbeite dran...


    Moto hat derartig viele, manchmal nur klitzkleine Änderungen eingebaut, das es praktisch auf ein Neuschreiben hinausläuft.

    Beispiele: Der erste Flash für Cliq/Dext war wieder im alten SHX-Format. Soweit nicht schlimm. Nur das Moto ihr eigenes Format derart gegen ihre eigene Norm modifiziert hat, daß ich da mal eben schnell ein Update bringen mußte, damit es wieder fehlerfrei decomprimiert werden konnte. Prompt kommen diese Flashes jetzt wieder als SBF, aber nun mit einer Art "Scrambling" oder wie man das nennen will.

    Dann wurde "mal eben" das Verfahren für die Berechnung der Checksummen verändert

    Das jetzt alles aufzuzählen würde vermutlich hier zu weit führen.

    Man staunt nur immer wieder, wie "gezielt" manche Änderungen eingebaut wurden.


    Es ehrt mich, aber andererseits macht es mich auch stark verlegen.
     
  3. Dumba

    Dumba VIP Mitglied

    Registriert seit:
    26. Jan. 2007
    Beiträge:
    890
    Zustimmungen:
    26
    Da es hier keinen Danke Knopf gibt, applaudier ich halt mal :)
     
  4. rplayer

    rplayer Neues Mitglied

    Registriert seit:
    17. März 2007
    Beiträge:
    2
    Zustimmungen:
    0
    Ja ich hab auch schon gesucht. :)
    Auf jeden Fall schonmal danke für deine Bemühungen.
    Ich hoffe das wird noch was mit dem Stein, wäre schön
    die gleichen Möglichkeiten zu haben wie andere Geräte auch.
    Aber noch bin ich guter Dinge, endlich überhaupt mal wieder was von Moto.... :)

    mfg
     
  5. Skrilax_CZ

    Skrilax_CZ Neues Mitglied

    Registriert seit:
    4. Apr. 2008
    Beiträge:
    47
    Zustimmungen:
    0
    I started playing with sbfs too (mainly Android).

    I was able to parse the P2K Superfile SBFs for CLIQ / DEXT / BACKFLIP ... (Motoblur phones) and recompile them succesfully (tested by OCM on his CLIQ).
    But the Milestone P2K Superfile and Droid Multi-Interface recompilation is working, with the exception of the checksums. Anybody figured out the new checksum algorithm? I also noticed the MotoBlur P2K Superfile is having 16bit sum as checksum on the RAMDLD, but stock ones have on CG2 some different checksum, however 16bit sum also works.

    You can actually make custom sbf for the Milestone using the RSD Lite; when the checksum mismatches, open the log, it will say the correct one.
     
    #5 Skrilax_CZ, 11. Apr. 2010
    Zuletzt bearbeitet: 11. Apr. 2010
  6. Meiner Einer

    Meiner Einer Vertrauensmitglied

    Registriert seit:
    21. Aug. 2006
    Beiträge:
    5.795
    Zustimmungen:
    15
    Thanks - i knew the Log from RSD-Lite. You will show for each flash in the Log and correct the Header manually? Only as temporary solution OK...
     
  7. Skrilax_CZ

    Skrilax_CZ Neues Mitglied

    Registriert seit:
    4. Apr. 2008
    Beiträge:
    47
    Zustimmungen:
    0
    I did some research:
    It i flashed blank RAMDLD (RAMDLD zeroed out), it would produce 0x7D00 + normal 16-bit checksum
    When I modified one byte by adding 1 in existing RAMDLD, the checksum would change: + 0x1 or + 0x100 or + 0x1FF.
     
  8. Meiner Einer

    Meiner Einer Vertrauensmitglied

    Registriert seit:
    21. Aug. 2006
    Beiträge:
    5.795
    Zustimmungen:
    15
    Thank you for your help. I Thing, this is a mix with Bitshift, Bitwise Complement and signed Variables.
     
  9. Skrilax_CZ

    Skrilax_CZ Neues Mitglied

    Registriert seit:
    4. Apr. 2008
    Beiträge:
    47
    Zustimmungen:
    0
    And here is the code for it :) (written in C#, but should serve well as pseudocode)
    Code:
    public static UInt16 GenerateSholsChecksum(byte[] bytes)
    {
    	UInt32 a = 0;
    	UInt32 b = 0;
    
    	var end = bytes.Length - (bytes.Length % 4);
    
    	for (var i = 0; i < end; i += 4)
    	{
    		a += (UInt32)((bytes[i + 1] << 8) + bytes[i    ]);
    		b += (UInt32)((bytes[i + 3] << 8) + bytes[i + 2]);
    	}
    
    	//if the bytes are not multiply of four, pad it with 0
    	var diff = bytes.Length - end;
    	if (diff > 0)
    	{
    		var nbytes = new byte[4];
    
    		for (var j = 0; j < 4; j++)
    		{
    			if (j < diff)
    				nbytes[j] = bytes[end + j];
    			else
    				nbytes[j] = 0;
    		}
    
    		a += (UInt32)((nbytes[1] << 8) + nbytes[0]);
    		b += (UInt32)((nbytes[3] << 8) + nbytes[2]);
    	}
    
    	return (UInt16)(a + b + (a >> 16));			
    }
    
    NOTE: For yaffs2 partitions (they have code 0028) you checksum 2048 bytes and skip next 64 (spare parts).

    EDIT: Actually, seeing the DROID sbf; the above applies for address greater than 0xD0000000 mainly.
     
    #9 Skrilax_CZ, 13. Mai 2010
    Zuletzt bearbeitet: 13. Mai 2010
Die Seite wird geladen...