Re-Partitionierung/Vergrößerung des internen Telefonspeichers bei MTK65xx

blackbox

New Member
Achtung: Anleitung für Fortgeschrittene


Nachdem mich bei meinem Star Note N9770 mit Jelly Bean 4.1 schon 2 Monate die Meldung "kein Speicher frei" nervte, hab ich mich entschlossen, dieses umzupartitionieren, also den "internen Telefonspeicher" auf Kosten der FAT-Partition bzw. "USB-Speicher" genannt, zu vergrößern.

Also durch diverse Anleitungen gearbeitet.
Mit 'nem Link auf die SD-Card wollte ich nicht arbeiten - war mir zu langsam und umständlich. Nein, der überflüssige und nutzlose "USB-Speicher" muß herhalten. Wozu der gut sein soll, hat sich mir noch nie erschlossen

Keins der üblichen Dinge wie "MTK6577_Data_Repartition.7z" oder "Data_sdcard_19.zip" usw. funktionierte richtig.
Dies liegt daran, daß die Speicheraufteilung unter Jelly Bean 4.1 anders als unter 4.0 ist und diese Tools noch für 4.0 sind.
Alle Tools dieser Art pfuschen lediglich an der Partitionstabelle im sogenannten EBR1 Bootsektor rum. Was wie gesagt dazu führt, wenn man die unter 4.1 anwendet, das Handy gar nicht mehr bootet :no2:
Diesen EBR1 kann man ganz einfach mit dem SP Flash Tool auslesen und einspielen (Thread ist hier ganz oben gepinnt).


Was man braucht:
- passendes Flash Tool, z.B. "SP_Flash_Tool_v3.1222.00"
- zum Chipsatz passendes "Scatter"-File, z.B. "MT6577_Android_scatter_emmc.txt"
- MTK Pre-Loader Treiber für den PC, muß bereits installiert sein (siehe Anleitung SP Flash Tool)
- passendes CWM Recovery, muß bereits ins Handy geflasht sein, z.B. "MT6577_N9770_recovery.7z"
- beliebigen Hex-Editor für den PC


Vorgehensweise
1. Backup Daten
- Handy ganz runterfahren
- in CWM Recovery booten (Power + Vol+ drücken und Power nach 5s loslassen)
- komplettes Backup auf SD-Karte machen: "backup and restore" -> "backup"
ACHTUNG, dauert lange (!)
NICHT auf "internal sdcard", denn gerade die geht ja anschließend "in die Binsen"
- "reboot system"
- das Backup liegt dann auf der SD-Karte in "clockworkmod"
- diesen Backup-Ordner unbedingt auf PC sichern!!!
- zur Sicherheit kann man die SD-Karte aus dem Telefon rausnehmen

2. EBR1 auslesen
- Flash Tool starten und Scatter-File laden
- "begin address" von EBR1 aufschreiben (ist bei mir 0x604000)
- oben auf "Read Back" Reiter drücken und dann alle Sektionen löschen
- "Add", Datei EBR1.BIN eintippen, als "Start Address hex" die aufgeschriebene 0x604000 eingeben, als Länge reicht 0x400 (1kByte)
- Handy in PreLoader-Mode versetzen: ganz runterfahren, Akku raus, Power + Vol+ halten
- "Read back" drücken und USB-Kabel reinstecken
- dann nach einer kurzen Weile erscheint erst ein gelber und dann ein roter Balken, danach ein grünes "Ok"
- Handy abziehen
- die Datei EBR1.BIN am PC doppelt und dreifach sichern!!!

3. EBR1 modifizieren

Siehe Screenshot-Grafik, blau vorher, rot nachher.

Zum Aufbau:
- die Datei enthält eine normale Partitionstabelle (wer will kann das in der Wikipedia nachlesen)
- diese enthält 4 Einträge die ich mit rot, gelb, grün und blau gekennzeichnet habe
- die erste Partition (rot) ist der interne Telefonspeicher, eine Linux-EXT3 Partition, erkennbar an der 83h
- die zweite Partition (gelb) ist der "USB-Speicher", eine FAT-Partition, hier fälschlicherweise auch als Linux-EXT3 Partition mit 83h gekennzeichnet!
- die eingerahmten Bereiche sind der Start und die Länge der 1. Partition (beides sind sogenannte long-Zahlen mit 4 Byte Länge, wobei das niederwertigste Byte zuerst steht) sowie der Start der 2. Partition

Beispiel: 20 D7 29 00 liest sich also als 0029D720 hex oder (wie uns der Windows Taschenrechner sagt) 2742048 dezimal

- die Partitionstabelle enthält immer Sektoren zu je 512 Byte, wenn man rechnet, also jede Zahl * 512 nehmen

Wir ändern nun lediglich 2 Zahlen, die Länge der ersten Partition, auf Kosten der zweiten Partition und damit deren Startpunkt:
- die erste (Telefonsp.) ist bei mir 100000h lang, also 512MB, daraus mache ich 100000h + 390000h = 490000h, also ca. 2,25GB
- die zweite fängt nun um genau den Betrag von 390000h später an, also ändern wir den Startpunkt von 39DF20h auf 72DF20h

- das ist noch nicht das maximal mögliche, von der zweiten Partition bleiben dann im Handy noch ca. 26MB übrig
- eine 1 im dritten Byte der Länge sind genau 32MByte; man könnte mit den beiden niederwertigsten Bytes auch noch die letzten paar MByte abziehen, aber das genügte mir erstmal so
- die Datei abspeichern z.B. EBR1NEU.BIN

4. EBR1 flashen
- im Flash Tool oben auf "Download" drücken
- nur Haken bei "EBR1" setzen, alle anderen ausschalten
- bei EBR1 die Datei EBR1NEU.BIN laden
- Handy in PreLoader-Mode versetzen: ganz runterfahren, Akku raus, Power + Vol+ drücken
- "Download" drücken und USB-Kabel reinstecken
- nach dem "Ok" Handy abziehen

5. Partitionen formatieren
- Akku rein
- wieder in CWM Recovery booten
- "wipe data/factory reset"
- "wipe cache"
- "mounts and storage" -> "format data", "format cache"
- "reboot system"
- nach dem Hochfahren ist das Handy leer und die Speicherbereiche müssen so aussehen wie im Bild gezeigt

6. Backup einspielen
- runterfahren
- wieder in CWM Recovery booten
- Restore: "backup and restore" -> "restore"
- "reboot system"

Bei der Anpassung des Speichers kann man auch schrittweise vorgehen. Wer sich nicht sicher ist, ändert z.B. die 10h erstmal auf 40h und nicht gleich 49h. Dann kann man sich ja ausrechnen wie viel noch bleibt. Eine 1 mehr im dritten Byte sind immer 32MByte.

Bingo :hihihi:

sp2.jpgsp1.jpgebr1.jpg
 
Hat perfekt bei meinen H7000+ funkioniert. Vielen Dank! Hatte allerdings vergessen, meinen internen Speicher mit zu backuppen.... aber das war kein echtes Problem.
 

Bernd23

New Member
Frage wegen Partitionierung

Hallo blackbox,
habe versucht deine Anleitung umzusetzten. Scheitere aber bis jetzt immer ;) Vermutlich habe ich irgendetwas falsch verstanden beim HEXen...
Mein Smartphone basiert auch auf dem MT6577 (Alcatel One Touch 997D - MT6577 | 1GB RAM | 4GB Intern | 32GB SDCARD | Dual SIM), es hat eine zusätzliche CUSTPACK Partition im EMMC. Und der EBR1 ist auch etwas anders aufgebaut. Die FAT (05) kommt darin direkt vor. Könntest Du mir bei der Anpassung helfen? Da die ganzen fertigen Tools leider nicht funktionieren. Mein Ziel ist es den internen FAT Speicher auf 100 MB zu trimmen und den Rest DATA zuzuweisen.

Anhänge:
EBR_997D.png scatter.png

Code:
Part_Name    Size                 StartAddr            T   MapTo
preloader    0x0000000000040000   0x0000000000000000   2   /dev/misc-sd
dsp_bl       0x0000000000ec0000   0x0000000000040000   2   /dev/misc-sd
mbr          0x0000000000004000   0x0000000000000000   2   /dev/block/mmcblk0
ebr1         0x0000000000004000   0x0000000000004000   2   /dev/block/mmcblk0p1
ebr2         0x0000000000004000   0x0000000000008000   2   /dev/block/mmcblk0
pmt          0x0000000000400000   0x000000000000c000   2   /dev/block/mmcblk0
nvram        0x0000000000300000   0x000000000040c000   2   /dev/block/mmcblk0
seccfg       0x0000000000020000   0x000000000070c000   2   /dev/block/mmcblk0
uboot        0x0000000000060000   0x000000000072c000   2   /dev/block/mmcblk0
bootimg      0x0000000000600000   0x000000000078c000   2   /dev/block/mmcblk0
recovery     0x0000000000600000   0x0000000000d8c000   2   /dev/block/mmcblk0
sec_ro       0x0000000000600000   0x000000000138c000   2   /dev/block/mmcblk0p2
misc         0x0000000000060000   0x000000000198c000   2   /dev/block/mmcblk0
logo         0x0000000000300000   0x00000000019ec000   2   /dev/block/mmcblk0
expdb        0x00000000000f4000   0x0000000001cec000   2   /dev/block/mmcblk0
pro_info     0x0000000000080000   0x0000000001de0000   2   /dev/block/mmcblk0
custpack     0x0000000019d00000   0x0000000001e60000   2   /dev/block/mmcblk0p3
mobile_info  0x0000000000800000   0x000000001bb60000   2   /dev/block/mmcblk0p4
android      0x0000000019d00000   0x000000001c360000   2   /dev/block/mmcblk0p5
cache        0x0000000013900000   0x0000000036060000   2   /dev/block/mmcblk0p6
usrdata      0x0000000059200000   0x0000000049960000   2   /dev/block/mmcblk0p7
fat          0x000000005c590200   0x00000000a2b60000   2   /dev/block/mmcblk0p8
otp          0xffffffffe87efe00   0x00000000ff0f0200   2   /dev/block/mmcblk0
bmtpool      0x0000000001500000   0x00000000ff0f00a8   2   /dev/block/mmcblk0

Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
T:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate

PS
SPL Flash ist eigentlich nicht nötig, kann man auch mit nem Updaterscript und flash_image machen. Habe so an die 10x bis jetzt damit den original/modifizierten EBR1 geflasht

Code:
assert(package_extract_file("EBR1", "/tmp/EBR1"),run_program("/sbin/flash_image","/dev/block/mmcblk0p1", "/tmp/EBR1"),delete("/tmp/EBR1"));
format("ext4", "EMMC", "/dev/block/mmcblk0p6");
format("ext4", "EMMC", "/dev/block/mmcblk0p7");
 
Zuletzt bearbeitet:

blackbox

New Member
Hallo Bernd23,

Du hast schon ganz richtig gerechnet :)
Die 4. Partition ist ein Dummy. Die FAT-Partition ergibt sich aus dem Rest der im Flash zur Verfügung steht. Du mußt lediglich die 3. Partition (usrdata) erweitern und neu formatieren.

Außerdem mußt Du beachten, daß in dem Flash-Listing absolute Adressen stehen und im EBR1 alles relativ zum EBR1 ist, d.h. die sind alle um 4000h versetzt. Das hilft beim Rechnen.
Ich hab das mal für Dich ausgerechnet:


lt. Tabelle:
android 0x0000000019d00000 0x000000001c360000 2 /dev/block/mmcblk0p5
1C35C000
cache 0x0000000013900000 0x0000000036060000 2 /dev/block/mmcblk0p6
3605C000
usrdata 0x0000000059200000 0x0000000049960000 2 /dev/block/mmcblk0p7
4995C000
fat 0x000000005c590200 0x00000000a2b60000 2 /dev/block/mmcblk0p8
A2A5C000
...
bis FEFEC200

EBR1:
-----
Start Größe Start Size
E1AE0 CE000 1C35C000 19C00000 422MB Android
Ende:
35F5C000

1B02E0 9C000 3605C000 13800000 320MB cache
Ende:
4985C000

24CAE0 2C8800 4995C000 59100000 1425 MB usrdata
Ende:
A2A5C000

Rest: FAT A2A5C000 5c590200 1478 MB FAT
Ende:
FEFEC200


neu:
100MB = 6400000h = 32000h Sektoren => F8BEC000 bis FEFEC200 FAT

24CAE0 579480 4995C000 AF290000 2870 MB usrdata
Ende:
F8BEC000

Rest: FAT F8BEC000 6400200 100 MB FAT
Ende:
FEFEC200

Also bei usrdata (3. Partition) mußt Du 579480, also 80 94 57 00 als Länge eintragen.

Gruß
blackbox
 
Zuletzt bearbeitet:

Bernd23

New Member
Vielen Dank blackbox für deine Mühen und die gute Erklärung, hat 1A funktioniert :feuerwerk:

Ein kleines Problem habe ich allerdings, nach dem installieren des EBR1 kommt nach dem ersten hochfahren, SD Karte fehlerhaft (was zu erwarten war).
Er bietet mir an diese zu formatieren, was er auch macht. Jetzt steht lustigerweise bei Interner Speicher der richtige neue Wert und bei Telefonspeicher der alte mit ca. 1GB
Kann ich den EBR1 so modifizieren das er mir den Telefonspeicher in der richtigen größe formatiert (100MB) ???

SD1.png SD2.png
 

blackbox

New Member
Hm da ist bei Deinem Telefon irgendwo noch eine Info gespeichert, die wir nicht kennen.

Ich hab im CWM Recovery alles formatiert, was ging.
Danach kam auch die Meldung mit der SD-Karte (also die FAT) und dann stimmte alles.
Die FAT-Größe rechnet sich Android irgendwo selber aus, fragt sich bloß wo.

Hast Du mit Deinem Updatescript auch mal versucht, anschließend nicht nur mmcblk0p6 und 7, sondern auch 8 mit zu formatieren?
 

Bernd23

New Member
Hast Du mit Deinem Updatescript auch mal versucht, anschließend nicht nur mmcblk0p6 und 7, sondern auch 8 mit zu formatieren?
Mit dem Updaterscript nicht, aber mit der Funktion Internal Storage Wipe / Format im TWRP. Habe jetzt einfach auch die letzten 100MB weggemacht und dann dieses "Disable_internal_SDcard" Script von XDA angepasst. Jetzt erscheint der Telefonspeicher erst gar nicht. Vielen dank nochmal für deine Hilfe.

Passe jetzt noch die Mounts im TWRP und Boot.img an und gut ist
 

Nordcappo

Member
Hallo, nachdem mit dem mit der App "meteos-mtk6589-rom-edit-en.apk" das Speichererweitern nicht geklappt hat versuche ich es jetzt auf diesem Weg. Benötige aber noch Hilfe.

Die ERB1 habe ich als BIN nach Anleitung gespeichert. Diese sieht im Hex Editor wie folgt aus:

ERB1.BIN.png


Ich möchte den Interen Speicher/USB Speicher (aktuell 197MB/0.98 GB) durch den Telefonspeicher/SD Karte (aktuell 0MB/1,70 GB) vergrößern. Gern maximal aber mindestens 2,5 GB.
Die Daten auf dem Foto sind nicht mehr ganz aktuell.

CIMG3569.JPG

Kann da bei den Zahlen jemand helfen?

Anhang anzeigen EBR1.rar


Hat sich erledigt. Ich habe es anders hinbekommen.
 
Zuletzt bearbeitet:

overfiend

Member
Würde mir eventuell jemand bei meiner ebr behilflich sein? Bei mir sieht das ganze etwas anders aus und bin mir nicht sicher was ich wie wo ändern soll / muss

System mtk6582 ist Intern 0,98GB Telefon 1,75GB soll Intern 2,5GB
@Nordcappo wie hast du es gelöst?



 

Samson1971

New Member
Hab da auch ein kleines Problem mit der Partition-Tabelle von mein Cynus T7

Das angehängte Bild ist das was DroidTools ausgelesen hat.

Wenn ich mir nur die EBR1 im Hex-Editor ansehe, finde ich keiner der Werte die man im Bild sieht, also was userdata und die FAT angeht

Blockmap.jpg HEX.jpg
ich werde daraus nicht schlau, wo ist mein Denkfehler
 
L

lauterohre

Guest
Wenn ich mir nur die EBR1 im Hex-Editor ansehe, finde ich keiner der Werte die man im Bild sieht, also was userdata und die FAT angeht
In der EBR1 die Zeile 0x1E0 gibt die Größe der Data-Partition an:
200000 = Dez. 2097152 x 512 = 1073741824 Byte = 1024MB

Tja, die nachfolgende fat-Partition ist in EBR1 nicht ersichtlich.

Ich habe da auch schon in EBR1 die Data-Partiton erweitert.
Aber man müßte dann ja auch die nachfolgende fat-Partition entsprechend verkleinern, was ja aber in EBR1 nicht möglich ist.

Jedenfalls hatte ich nach der Änderung 2,7GB Data, lief auch alles soweit aber
nach einem -wipe data/factory reset (CWM) bliebt das Telefon schon
bei der Eingabe der Sim-Karten-Nr. hängen. Ich vermute wegen fehlerhafter Partitionen.

Hier habe ich einige Ansätze gefunden:
http://www.pocketpc.ch/samsung-galaxy-s3-root-rom/170953-tutorial-partitionsgroessen-aendern.html

und auch:
http://www.all-things-android.com/content/review-android-partition-layout

Ich komme aber nicht weiter. Schon der Versuch mit adb im Recovery die Partitionen anzeigen zu lassen scheitern:
Bild1.jpg
Sorry mehr Fragen als Antworten.[DOUBLEPOST=1394353872,1394353318][/DOUBLEPOST]Hm, mit "meteos-mtk6589-rom-edit-en.apk" habe ich meinen App-Speicher auf 2,5GB erweitert, 273MB fat-Speicher bleiben übrig. OK, wird im Handy auch so angezeigt und funktioniert.
Droid-Tools hingegen zeigt das:
Bild2.jpg
Hier werden die Grössen für usrdata und fat angezeigt als ob sie nicht verändert wären ???
 
Moderiert:

Ora

®
...
Jedenfalls hatte ich nach der Änderung 2,7GB Data, lief auch alles soweit aber
nach einem -wipe data/factory reset (CWM) bliebt das Telefon schon
bei der Eingabe der Sim-Karten-Nr. hängen. Ich vermute wegen fehlerhafter Partitionen.
...
Sorry mehr Fragen als Antworten...
Ich hole das hier noch einmal hoch.
@lauterohre @blackbox :
Das beschriebene Problem stellt doch den Ansatz in Frage. Stimmt das? Gibt es eine Lösung dafür?
 
Zuletzt bearbeitet:
L

lauterohre

Guest
Oh, ja danke Ora. Ich bin da nicht weiter gekommen.

Das beschriebene Problem stellt doch de. Ansatz in Frage.
Hm, wo legt Android die komplette Partitionstabelle ab, wo kann man das finden, bzw ändern?

Droidtools zeigt die Partitionierung an als ob nichts geändert wäre. (siehe #12 unten)
 

Ora

®
Gut, aber ist leider keine Antwort auf meine Frage:(
Deshalb vielleicht noch mal ein Versuch:
- ist das "patchen" des EBR1 hinreichend?
- müssen noch andere Veränderungen vorgenommen werden?
- was passiert bei einem Werksreset?
- muss das Boot.IMG angepasst werden?
- muss das CWM-R neu portiert werden?
- muss ein neues Scatterfile generiert werden?
- es hat sich ja wohl die Startadresse der Fat partition geändert...
 

N2k1

Well-Known Member
Irgendwo hatte ich schonmal ein Script hier veröffentlicht, mit dem ich zuvor mein MT6577-Gerät umpartitioniert hatte.
Mit der Suchfunktion wurde ich nicht fündig.

Code:
adb reboot recovery
pause
adb shell "mount -o rw /dev/block/mmcblk0p3 /system"
adb push reparted /system/bin
adb shell "chmod 777 /system/bin/tune2fs /system/bin/mke2fs /system/bin/mkdosfs /system/bin/e2fsck /system/bin/mbr.sh /system/bin/parted /system/bin/mbrinfo.sh"
adb shell "/system/bin/busybox dd if=/tmp/MBR of=/dev/block/mmcblk0 bs=512 count=1
"
adb push system/etc /system/etc
adb shell "/system/bin/parted /dev/block/mmcblk0 mkpart primary 1106 3830"
adb shell "/system/bin/mke2fs -t ext4 /dev/block/mmcblk0p5"
adb shell "/system/bin/e2fsck -pfD /dev/block/mmcblk0p5"
adb shell "/system/bin/parted /dev/block/mmcblk0 mkpartfs primary fat32 3830 3891"
adb shell "/system/bin/mke2fs -t ext4 /dev/block/mmcblk0p6"
adb shell "/system/bin/busybox dd if=/tmp/MBRInfo of=/dev/block/mmcblk0 bs=512 count=1
"
pause
Das Script auf meinem Rechner ist vom 2.11.2012 - die dazugehörigen Dateien sind noch älter.

Aber wie gesagt: Inzwischen gibt es eine App dafür!

KLICK
 
  • Like
Wertungen: Ora

N2k1

Well-Known Member
Klar, hier paßt es doch.
Zu der Zeit, als das Script entstand (getestet mit CWM-R) gab es die App noch nicht.
 

Ora

®
@N2k1 :
Was verstehe ich?
- Du machst zwei Partitionen neu
- formatierst diese
- kopierst einen anderen MBR
Fragen:
- wozu nutzt Du das reparted binary und wo ist das her?
- den MBR hast Du vorher wie beschrieben gepatch!?
- warum schreibst Du den MBR 2x?
- was bringst Du zusätzlich ins etc?
Wenn das hier zu sehr OT wird, gern auch PM
 
Oben Unten