[Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Modifiche a hardware, software e accessori dei chinafonini

[Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi janniz il 28/02/2011, 16:05

Premessa:
Posseggo un cinafonino Ciphone C6A da ormai quasi un anno.
Ho acquistato questo telefono più che altro per avere la possibilità di incominciare a 'cucina' su WM senza dover per forza spendere un capitale in hardware...

Inutile dire che mi sono scontrato, nei mesi scorsi, con la mancanza di informazioni cronica che gravita intorno a questo genere di cellulari, e anche un po' con la maleducazione di alcuni utenti sul forum 'ufficiale' di questo telefono... (tendo a rispettare le scelte di coloro i quali, pur avendo scoperto qualcosa non voglia condividerlo... rispetto un po' meno chi interagisce con gli altri con insulti et similia...).

Ciononostante ho spulciato, cercato, provato... fino a quando non sono riuscito ad ottenere dei risultati accettabili.

Oramai da alcuni mesi riesco a cucinare ROM stabili per questo telefonino (Non ho modo di provarlo... ma credo che grossomodo il medesimo procedimento si possa applicare a quasi tutti i telefonini basati su processore Hisilicon K3), e visto che, certamente quanto letto su questo forum è stato fonte di grande ispirazione nei miei esperimenti, ho deciso di pubblicare qui, in primo luogo i risultati ottenuti...

Non è molto... ma spero che possa servire come base di partenza per altri, e possa ripagare un minimo le informazioni che ho ricavato da questi lidi :D

Tutorial
Questo primo tutorial mostra come fare a cucinare una ROM per Ciphone C6A usando la mia cucina (JCooker, scaricabile qui: JCooker v1.0.0) e, come ingrediente principale, una qualsiasi ROM funzionante per il medesimo telefonino.

Cucinare una ROM a partire da una ROM esistente.
Step 0: preliminari

Posizionarsi all'interno della directory della cucina.
Immagine
Lanciare il batch 0_cleansrc.bat per ripulire la directory src (Attenzione: la directory src verrà svuotata, quindi procedere con un backup del contenuto se lo si ritiene necessario).
- Copiare la ROM sorgente all'interno della directory src. Il file della ROM deve chiamarsi ciphone.bin, procedere quindi rinominandolo nel caso si chiamasse in modo differente.

Step 1: dump
Lanciare lo script 1_dump.bat

Dietro le quinte di 1_dump.bat
Questo script, prima di tutto, crea quattro sottodirectory in src, chiamate rispettivamente 1, 2, 3 e 4. Queste sottodirectory vengono utilizzate per raccogliere il risultato dei singoli passi di spacchettamento della ROM sorgente.
Nella directory 1 ci sarà il risultato del comando viva.exe ciphone.bin:
{L_CODE}: {L_SELECT_ALL_CODE}
      
viva.exe ciphone.bin

-----------------------------------------------------------------------
¦·¦·VIVA ROM 'BIN 2 NB0'¦ñ¥¯ V1.5 -> http://www.592cx.com
-----------------------------------------------------------------------
NB0+-+¦ú¦  RAMInit.nb0  ¦ß+í¦+¦ª
NB0+-+¦ú¦  USBLoad.nb0  ¦ß+í¦+¦ª
NB0+-+¦ú¦    XLDR.nb0  ¦ß+í¦+¦ª
NB0+-+¦ú¦    IPL.nb0  ¦ß+í¦+¦ª
NB0+-+¦ú¦   FLASH.nb0  ¦ß+í¦+¦ª


Durante questo passaggio la ROM viene scomposta nelle sue componenti: RAMInit.nb0, USBLoad.nb0, XLDR.nb0, IPL.nb0 e FLASH.nb0.

Il nostro ingrediente principale per cucinare la ROM sarà FLASH.nb0. Lasceremo pertanto le altre componenti da parte sino a quando non sarà il momento di riassemblare il tutto.

Lo script quindi va ad eseguire il comando osnbtool -sp flash.nb0:
{L_CODE}: {L_SELECT_ALL_CODE}
osnbtool -sp flash.nb0
      
OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000008
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
flash.nb0.PRE written.
-------------------------------------------------
Sector counters (extra-data) found in source file.
Partition 0 true offset:00000002    true size:0000027E   Len:0000027E
Partition 1 true offset:00000280    true size:000006C0   Len:000006C0
Partition 2 true offset:00000940    true size:0000BD00   Len:0000BD00
Partition 3 true offset:00000000    true size:00000000   Len:00012DC0
flash.nb0.OS.NB written.

Il risultato, consistente nei due file flash.nb0.PRE e flash.nb0.OS.NB viene salvato all'interno della directory 2.
Il passo successivo (sempre eseguito da 1_dump.bat) consiste nell'estrarre le 4 partizioni: boot.bin, xip.bin, imgfs.bin e legitDos.bin contenute in flash.nb0.OS.NB.
{L_CODE}: {L_SELECT_ALL_CODE}
osnbtool -d flash.nb0.os.nb 0 boot.bin

OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000000
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
Signature: SRPX
CompressVersion: 5
Uncompressed size: 300000
Deompress processing...
Successfully decompressed to boot.bin

{L_CODE}: {L_SELECT_ALL_CODE}
osnbtool -d flash.nb0.os.nb 1 xip.bin
OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000000
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
Can not find compression signature.
Part-1 de-packing...
Successfully de-packed to xip.bin

{L_CODE}: {L_SELECT_ALL_CODE}
osnbtool -d flash.nb0.os.nb 2 imgfs.bin

OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000000
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
Can not find compression signature.
Part-2 de-packing...
Successfully de-packed to imgfs.bin

{L_CODE}: {L_SELECT_ALL_CODE}
osnbtool -d flash.nb0.os.nb 3 legitDos.bin

OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000000
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
ERROR - Part-3 size is wrong!

Il risultato di queste operazioni trova posto nella directory 3.
L'ultima passo di estrazione (dump) della ROM consiste nello scompattare imgfs.bin e xip.bin e nel ricostruire i pacchetti originari.
Per imgfs.bin si procederà dunque così (In teoria si dovrebbe poter usare xidump -b per ricostruire la struttura dei pacchetti anche per imgfs… ma su alcune rom xidump divide erroneamente i pacchetti tra OEM e SYS e quindi prediligo utilizzare packagebuilder per la ripacchettizzazione (In teoria si dovrebbe poter usare xidump -b per ricostruire la struttura dei pacchetti anche per imgfs… ma su alcune rom xidump divide erroneamente i pacchetti tra OEM e SYS e quindi prediligo utilizzare packagebuilder per la ripacchettizzazione):
{L_CODE}: {L_SELECT_ALL_CODE}
xidump imgfs.bin

XIDUMP v1.0 Beta  Copyright (c) 2009-2010 bepe  Oct 27 2009 00:17:17

Inizializing RAW Data layer

Found IMGFS Partition...
.hst
.ROM
.VM
01cfec30-34b0-4ab8-9c07-89c16b720030.dsm

........
........
........
........

ZipView.exe
zlib.dll

Done!

{L_CODE}: {L_SELECT_ALL_CODE}
packagebuilder.exe IMGFS

PACKAGEBUILDER 3   Copyright (c) 2007-2008 bepe   Apr 23 2008 22:12:21

[Versions]
SYS: 5.2.23500 5500
SYS: 5.2.23515 5500

........
........
........
........

[Missing Manifests]
723fb954-d931-4348-b672-82a188e587b5.dsm
cb60b333-da30-aaba-ecca-33a4568f566f.dsm

Done!

Analogamente per xip.bin:
{L_CODE}: {L_SELECT_ALL_CODE}
xidump -b xip.bin

XIDUMP v1.0 Beta  Copyright (c) 2009-2010 bepe  Oct 27 2009 00:17:17

Inizializing RAW Data layer

Found XIP Partition...
busenum.dll
cachefilt.dll
cecompr.dll

........
........
........
........

sysroots.p7b

OS:
16512.5 (Build: 5500) MSXIPKernel

Done!


Step 2: BuildOs
Lanciare lo script 2_cleanbuildOS.bat per ripulire la directory BuildOS (Vale lo stesso discorso per il backup visto precedentemente).

Lanciare 3a_buildos_from_dump.bat

Quando compare la finestra di BuildOS premere il tasto con la freccia verde, attendere che completi la sua opera e chiuderlo.
Immagine


Dietro le quinte di 3a_buildos_from_dump.bat
Il batch provvede innanzitutto a popolare le directory necessarie a BuildOs:
Copia src\4\IMGFS\OEM —> BuildOs\OEM
Copia src\4\IMGFS\SYS —> BuildOs\SYS
Copia src\4\XIP\MSXIPKernel\boot_ms.rgu —> BuildOs\ROM\XIP\
Copia src\4\XIP\OEMXIPKERNEL\boot.rgu —> BuildOs\ROM\XIP\

Genera le voci di registro necessarie, esportandole dai default.hv e user.hv della ROM sorgente, e le converte in UTF-16
{L_CODE}: {L_SELECT_ALL_CODE}
rgucomp.exe -o default.hv > default.txt
rgucomp.exe -o user.hv > user.txt
iconv.exe -t UTF-16LE default.txt > default.ucs-2le
iconv.exe -t UTF-16LE user.txt > user.ucs-2le

copia Tools\rguheader.UCS-2LE + default.ucs-2le + user.ucs-2le ---> 034e7cf6-8a37-40ad-85bd-6851b921866a.rgu


A questo punto viene avviato BuildOS.exe che provvederà a creare la struttura del filesystem e ad aggiungere le chiavi contenute nei file *.rgu dentro i file default.hv e user.hv prelevati da SYS/Metadata/. Il risultato delle operazioni di BuildOS viene salvato dentro la directory BuildOS/temp

Step 3: ExtReloc
Solite operazioni di pulizia del piano di lavoro:
4_cleanextreloc.bat
5_cleannew.bat

Lanciare 6a_extrelocandbuildxipfrombin.bat
Se non si ha intenzione di modificare moduli in imgfs o nello XIP, si possono saltare i sottopassi successivi di rilocazione dei moduli. In tal caso chiudere le finiestre di xipport e extreloc quando si presentano e copiare direttamente il file xip.bin da src\3 in new\1 (creare la directory new\1 nel caso non esistesse) e procedere con -- Step 4: build imgfs --


{L_CODE}: {L_SELECT_ALL_CODE}
**********************
* [xipport] Dump xip *
* [xipport] Close  *
**********************


All'apertura della finestra di XIPPort premere dump xip.bin e poi chiudere tranquillamente XIPPort (Avremmo potuto utilizzare il dump di XIP ottenuto precedentemente, tuttavia il formato prodotto da XIPPort è più conforme a quello che ExtReloc si aspetta di ricevere in ingresso, e quindi è meno laborioso procedere con il redump di xip.bin).
Immagine
Il file xip.bin sarà quindi scompattato nella cartella ExtReloc\OUT.
Dopo aver chiuso XIPPort sarà automaticamente lanciato ExtReloc. Seguire scrupolosamente i passi indicati a video:
{L_CODE}: {L_SELECT_ALL_CODE}
********************************************************
* [extreloc] Import xipport          *
* [extreloc] ReallocV           *
* [xipport]  Realoc P           *
* [xipport]  Write maps          *
* [extreloc] Realloc nk.exe, gsiir, ... button    *
* [xipport]  Realloc P again         *
* [xipport]  Write maps          *
* [extreloc] Drag the vertical white line to the left *
* [extreloc] Realloc imgfs          *
* [xipport]  Build xip_out.bin        *
* [extreloc] Close xipport and extreloc      *
********************************************************

e cioè, spiegato in maniera più estesa:
In Extreloc:
- Import xipport (Rilancia XiPPort, ci servirà successivamente).
- ReallocV
Immagine
In XiPPort:
- ReallocP
- Write maps
Immagine
In Extreloc:
- Realloc NK.EXE, GSIIR, DLL, etc
Immagine
In XiPPort:
- ReallocP (di nuovo)
- Write maps (Questo passo credo non serva a nulla… ma nel dubbio lo lascio…)
Immagine
In Extreloc:
- Trascinare la linea bianca verticale verso il bordo sinistro per visualizzare la schermata relativa al realloc di IMGFS
- Realloc IMGFS modules
Immagine
In XIPPort:
- Build xip_out.bin
Immagine
Chiudere la finestra di XIPPort, chiudere la finestra di Extreloc.
Se tutto è andato a buon fine dovremmo avere il file xip.bin dentro la directory new\1

Step 4: build imgfs
Lanciare il file 8_imgfsfromdump.bat per ricostruire il nuovo imgfs.bin a partire da quanto contenuto in BuildOS\temp.
Il nuovo imgfs sarà creato all'interno della directory new\1

Step 5: riassemblare flash.nb0
Lanciare 97_pmud1.bat.
Verrà ricostruito FLASH.nb0, iniettando i nuovi imgfs.bin e xip.bin nel flash.nb0.os.nb presente in src\2, e unendo il tutto con il file flash.nb0.PRE ottenuto precedentemente e anch'esso memorizzato in src\2.
Il risultato viene post in new\4

Step 6: assemblaggio di ciphone.bin
Lanciare 99_IDT.bat per avviare IDT e ricostruire la nuova ROM ciphone.bin.

Se compare la finestra Password premere Cancel (la finestra compare solo nel caso non ci sia un file chiamato ciphone.bin nella directory di IDT).
Dal menù selezionare View ? Image merge
Platform select: GSM/EGPRS
Premere il tasto di merge
Immagine
Confermare l'operazione
Inserire l'hw version: 1.0.0.0 (Il valore dovrebbe essere indifferente, avendo disabilitato nelle opzioni la verifica dell'hw version).
Salvare l'immagine con il nome ciphone.bin nel percorso proposto.
Chiudere la scheda di image merge
A questo punto è possibile effettuare direttamente il flash rilanciando IDT e mettendo il telefono in modalità flash.
Nota 1: L'immagine logo.bmp corrisponde all'immagine visualizzata nelle prime fasi di avvio del telefono ed è archiviata in new\0.
Nota 2: Verificare che gli elementi elencati in RAMInit, USBLoad, XLDR, IPL siano corretti ed esistano nel path indicato [I]src\4. In caso contrario si potrebbe brickare irrimediabilmente il telefono.[/I]

Personalizzare la ROM
Eseguendo i passi soprastanti, è possibile scomporre, e successivamente riassemblare una ROM pre-esistente. L'operazione di per se è abbastanza sterile, e acquista senso soltanto quando il cuoco è intenzionato ad apportare delle modifiche alla ROM originale per personalizzarla secondo le proprie esigenze.

A tal fine è possibile intervenire modificando il filesystem nel passo 2:
  • Dopo il lancio di 3a_buildos_from_dump.bat e prima di premere la freccia verde per quanto riguarda le modifiche a pacchetti contenuti in BuildOS\OEM, BuildOS\ROM e BuildOs\SYS.
  • Al termine delle operazioni di BuildOs andando ad operare direttamente nella directory BuildOs\temp
Qualora le personalizzazioni richieste contemplino la modifica dello XIP, allora si dovrà agire nel passo 3, dopo aver eseguito il dump dello XIP, andando a lavorare nella directory ExtReloc\OUT prima di eseguire le operazioni di rilocazione di ExtReloc.

Postfazione
Questo è quanto...

Questa guida è stata adattata al formato di questo forum basandomi su quanto da me originariamente scritto qui: Cucinare una ROM a partire da una ROM esistente.

Nello scrivere questa guida ho cercato di rispettare il regolamento. In particolare non ero (non sono) sicuro di poter includere i link alle pagine del mio wiki sul quale ho scritto originariamente la guida (e che uso come riferimento e appunti), o il link alla pagina della cucina stessa. Nel caso avessi infranto qualche regola, prego gli amministratori di farmelo sapere, ed li autorizzo ad apportare le correzioni che ritengono necessarie, posto che lo spirito della guida rimanga immutato.

Grazie...
janniz
chinanovizio
 
Messaggi: 44
Iscritto il: 25/05/2010, 10:43

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi janniz il 28/02/2011, 16:06

Riservato per aggiornamenti futuri.
janniz
chinanovizio
 
Messaggi: 44
Iscritto il: 25/05/2010, 10:43

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi janniz il 28/02/2011, 16:06

Riservato per aggiornamenti futuri.
janniz
chinanovizio
 
Messaggi: 44
Iscritto il: 25/05/2010, 10:43

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi janniz il 28/02/2011, 16:07

Riservato per aggiornamenti futuri.
janniz
chinanovizio
 
Messaggi: 44
Iscritto il: 25/05/2010, 10:43

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi karl1 il 28/02/2011, 18:31

Janniz, che dire....
complimenti per il lavoro svolto.
:applausi:

Non so se hai violato regolamenti o altro, se il materiale è il tuo, non credo ci siano problemi.
Aspettiamo lumi dal Kapo :-)

Di certo, posso dirti che il procedimento è applicabile per molti telefoni con processore K3, ma non
credo che funzioni sulle ultime ROM, i nostri simpatici amici, hanno spostato un po di cose...
Tant'è che sono uscite almeno 4 release di K3 kitchen (il sostituto di VIVA.EXE) e malgrado ciò non si riesce
ad aprire la rom del mio G7 :bua:

Grazie per il contributo!!!!!!!!!
:ciao:
Avatar utente
karl1
Moderatore
 
Messaggi: 6920
Iscritto il: 16/10/2008, 10:01
Chinafonini posseduti: Dapeng A8500+ - Samsung Galaxy S2

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi frk il 28/02/2011, 19:31

No problem Karl, ho già dialogato in privato con l'amico janniz per ringraziarlo dell'ottimo contributo apportato, e concedergli i link al suo sito personale è il minimo che si possa fare. :ehgia:

...forse abbiamo trovato qualcuno che ti possa dare una mano a mantenere viva l'area Laboratorio Modding! :-D
Evitate TIM e Kena Mobile come la peste!!!
Avatar utente
frk
Site Admin
 
Messaggi: 27121
Iscritto il: 10/09/2008, 12:03
Chinafonini posseduti: Prince A960, JinPeng S6186, Smart M89, A7272+, Mpie MP108

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi janniz il 01/03/2011, 9:58

karl1 {L_WROTE}:Janniz, che dire....
complimenti per il lavoro svolto.
:applausi:

Grazie a tutti per il caloroso benvenuto... :D

karl1 {L_WROTE}:Di certo, posso dirti che il procedimento è applicabile per molti telefoni con processore K3, ma non
credo che funzioni sulle ultime ROM, i nostri simpatici amici, hanno spostato un po di cose...
Tant'è che sono uscite almeno 4 release di K3 kitchen (il sostituto di VIVA.EXE) e malgrado ciò non si riesce
ad aprire la rom del mio G7 :bua:


Non ero a conscenza di nuove versioni/sostituti di viva.exe (Ora mi informero' :P)

In realtà viva non fa nulla che non potresti fare tu a mano con altri strumenti (io uso spesso GNU dd)... e IMHO è troppo pignolo... molte ROM di telefonini K3 le ho dovuto scomporre a mano durante la fase di studio preliminare...

Sentiamoci via PM... Sarei curioso di dare un occhiata alla rom del tuo G7... chissà che insieme non si riesca a cavarci qualcosa :D
janniz
chinanovizio
 
Messaggi: 44
Iscritto il: 25/05/2010, 10:43

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi karl1 il 01/03/2011, 10:27

non è necessario il pm, possiamo discuterne apertamente qui sul forum, magari ci sono altri amici interessati che
vogliono imparare qualcosa....
:-)

La rom del mio G7, è questa:
http://www.woofiles.com/dl-212266-h7cnoRsP-Filemail.comfiles20101113YCCAOTFSJKVHEST.zip
gentilmente fornita dall'amico "serdonato"

Su un forum cinese ho trovato questa spiegazione, per estrarre senza utilizzare il viva.exe, però
non ho il tempo (purtroppo) per mettermici seriamente...
Mettici anche, che per problemi al PC ho perso tutte le kitchen nuove per i K3, scaricate con fatica
dai forum cinesi, non fosse altro che per scaricare bisogna rispondere ai topic e per forza in cinese...
:bua:
http://www.woofiles.com/dl-230035-Qtlu3Y2q-G7decomposition.rar

Al limite per non andare troppo OT, possiamo spostarci sul mio topic "generico" sulle rom:
http://forum.chinafonini.it/viewtopic.php?f=19&t=6409


:ciao:
Avatar utente
karl1
Moderatore
 
Messaggi: 6920
Iscritto il: 16/10/2008, 10:01
Chinafonini posseduti: Dapeng A8500+ - Samsung Galaxy S2

Re: [Tutorial] Ciphone C6 - Cucinare una ROM a partire da una ROM esistente.

Messaggiodi janniz il 01/03/2011, 10:53

karl1 {L_WROTE}:non è necessario il pm, possiamo discuterne apertamente qui sul forum, magari ci sono altri amici interessati che
vogliono imparare qualcosa....
:-)

Si, si... il PM era per evitare di andare troppo OT qui... :D

karl1 {L_WROTE}:Al limite per non andare troppo OT, possiamo spostarci sul mio topic "generico" sulle rom:
http://forum.chinafonini.it/viewtopic.php?f=19&t=6409


Appunto... :bigsmile: proseguiamo pure li...
janniz
chinanovizio
 
Messaggi: 44
Iscritto il: 25/05/2010, 10:43


Torna a Laboratorio Modding

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti

cron