Related
Could you explain please (very short description) how you modified the xip chain for rom kitchen?
All I can see is the following:
- no length (0)
- no RSA1 signature
- only file entries
What I want to know:
- how to find phys. (ROM) position (do you use unused holes in rom?)
- is 0 length for ROM = autolength
- how to choose the RAM position
- why can length of RAM be 0
Please help. (I need this info for a smartphone project)
I did not bother setting the length, only the 'pvAddr' field is used.
I only make fileentries, because I have yet to implement the generation of modules. ( if I ever do ).
yes, I use unused holes in the rom.
actually, if you don't care about xip updates of other sections, you
may use addresses anywhere in the rom, where your data fits.
It does not nescesarily have to be contigous.
I just copied the ram setting from the other xip entries.
Thank you for the information.
Why don't you take romimage.exe from platformbuilder to generate a XIP block. You only have to write a little .bib file for it. This tool can handle modules and compression as well.
John
P.S. Source code for romimage.exe is available in PB 4.2 private build tree.
I hadn't found that tool yet when I wrote makexip, and then we couldn't have made the romkitchen with it, since romimage.exe runs only under windows.
Don't waste your time with this crap tool (romimage.exe). Some needed files are missing (e.g. bin2xip.exe).
How can I be sure to choose a good phys. addr.? There might be some memory mapped devices...
I have one additional difficult question:
Modules are relocated when embedded into XIP's. Even there seems to be a modification to the import table of the module (e.g. references to coredll.dll will be checked/updated?)
If I extract a module (e.g. a *.dll) from a XIP of an other phone do I have to re-relocate it / modify it's import section even if I place it in a FILES section?
Thanks
John
converting bin to xip is not that difficult. see http://www.xs4all.nl/~itsme/projects/xda/wince-flashfile-formats.html
do you mean the 'physfirst' field in the romheader? that is just the startaddress in the rom.
since the relocation information is not stored in rom, the only way to really
recover it, is to disassemble the file, and find the offsets to stuff that
needs to be reallocated.
so that is a lot of work. and dumprom only extracts nonrelocatable .exe and .dll modules.
if your extracted dll is fixed to a memory location that overlaps with an already existing dll, you will have a problem I think.
I am not even sure, if an extracted dll works at all, I only use them for reverse engineering.
Yes, I mean phys first field. But how can I be sure to choose a valid address for the new XIP block?. My idea is to use address space between existing XIP blocks. Or can I simply choose a very high address (e.g. 8F000000) and hope not to use a region where memory mapped devices are located?
Since I used (your?) dumprom to extract the *.dll files do you think they are "nonrelocated"?
John
I ask so much because I crashed my lovely smartphone a week ago. :-(
My new XIP seems to be invalid... so it doesn't boot anymore. Unfortunately I've killed the bootloader too...
When I try next time (I've ordered a new one) this must not happen!
I am sure they are nonrelocated, fixed to run from a specific memory location.
( just wrote another post about this )
maybe even the module loader does not allow non-xip modules to be loaded in xip reserved memory.
THANK YOU VERY MUCH
I've got it. My Smartphone now have a new XIP block with some files in it...
Only thing left is to rewrite some *.dll files (only resource dlls with no function exports) to extend the language of the MIO 8380.
Are you familiar with languages on smartphone? There are multiple .mui files (resource dlls containing all the dialogs and strings). I've exported all resources and (re)created the dll's as resource only. Unfortunately they don't work ... yet ...
Are there some other files for language extension? What about "wince.nls" or "mxip_lang.vol" ?
Thanks again for your great tools. I will setup a site containing detailed information about this hack soon.
John Smith
cool, I am always interested to see how things work out that I haven't actually tried myself yet.
is this how you create resource only dll's:
http://www.xs4all.nl/~itsme/projects/programming/icondll.html
Currently I'am a little bit confused. PB 4.2 docu says MUIs are resource only .dlls and sample in smartphone sdk adds a dllmain...
I will have to investigate this things a little bit more...
John
O.K.
I've tried anything. The only thing left is that the new resource dlls are not XIPed as modules...
The sample mui app works fine (regardless of resource only / normal dll).
John
P.S. I've successfully changed all other settings some things already appear in the new language. Only poutlook, homescreen and control panel will not change!
Now after some more testing (included a dllmain into the mui file which logs the loading/unloading to file) it seems that my mui.dll is never loaded by system (if I load it manually with LoadLibrary the log is written).
Here is my question:
I've looked a little bit deeper into the dumped mui.dll and found a pointer in security section (pe header) which points to nowhere (just after the [virtual] end [rva] of all of the e32/o32 sections).
Could it be, that I've missed something? Does dumprom fill in this values correctly?
One other interesting idea could be to exchange only the data section of the module (since I want to patch resource only .dlls). But since english is a very short term language all other files will be bigger...
John
>>> I've got it <<<
the new (mui-language) modules have to be REAL xip modules...
So I've build a custom.bib file and used RomImage from CE3.0 Platformbuilder. Even compression is possible now.
Note: romimage.exe does the same thing as makexip.pl
To share my results here is the content of the .bib file I've used:
Code:
MEMORY
; Name Address Size Type
MYXIP 81f00000 0013f000 RAMIMAGE
RAM 8c020000 00fe0000 RAM
CONFIG
COMPRESSION = ON
PROFILE = OFF
ROMFLAGS = 2
ROMSTART=81f00000
ROMSIZE=13f000
ROMWIDTH=32
DLLHIGHADDR=00b00000
MODULES
; Name Path Memory Type
; ------------------------- ------------------------------- ------ ----
outres.dll.0407.mui input\outres.dll.0407.mui MYXIP SHU
syncres.dll.0407.mui input\syncres.dll.0407.mui MYXIP SHU
tapres.dll.0407.mui input\tapres.dll.0407.mui MYXIP SHU
tshres.dll.0407.mui input\tshres.dll.0407.mui MYXIP SHU
wmplayer.exe.0407.mui input\wmplayer.exe.0407.mui MYXIP SHU
FILES
; Name Path Memory Type
; ------------------------- ------------------------------- ------ ----
Busy.0407.mid input\Busy.0407.mid MYXIP
mxip_lang_799.rgu input\mxip_lang_799.rgu MYXIP
ms_splash.gif input\ms_splash.gif MYXIP
carrier_splash.gif input\carrier_splash.gif MYXIP
- The MYXIP region in MEMORY section is a hole in the ROM I've found with calcgaps.pl.
- The RAM region is copied from the other sections (they all use the same)
- ROMSTART and ROMSIZE have to be the same values as defined in MYXIP
- DLLHIGHADDR has to be the !!!lowest!!! loading address found with dumprom (header: dlls=...-... ).
Example: If the lowest address found is "header: dlls=00b00000-00c90000 ..." then DLLHIGHADDR has to be 00b00000
Don't care about the warning the warning "Unable to do imports from ... to COREDLL.dll - will late bind". Thats because coredll is in another XIP.
John
P.S. Thanks a lot for all of your support.
DETAILED INFORMATION ABOUT THIS HACK CAN BE FOUND HERE:
http://smartphonerom.tripod.com (only download the "detailed information")
HI
i downloaded WM6CB and extract it now i have 2 nbf file
nk.nbf 64MB Size
ms.nbf 10MB Size (Empty_Extended_rom)
i want to extract these
I tested dumprom.exe and HTC64 Extended ROM Tool.exe but i can't extract these
if i use dumprom then i can't extract it when i use HTC64 and i use dumprom with nk.fat file argument then i can extract some files and get this error
Code:
9073265c - 907338b6 L0000125a o32 region_2 rva=00042000 vsize=000027f0 real=01f9
2000 psize=0000125a f=40002040 for coredll.dll
907338b8 - 907351b9 L00001901 filedata boot.hv
907351bc - 907380a4 L00002ee8 filedata default.hv
907380a4 - 907380a4 L00000000 rom_00 end
907380a4 - 9443fc00 unknown
i used this arguments
For NBF File
dumprom nk.nbf -d mydirectory\
dumprom -5 nk.nbf -d mydirectory\
For FAT File
dumprom -5 nk.fat -d mydirectory\
dumprom nk.fat -d mydirectory\
And I can't Extract Empty Rom with this way
I want to extract windows mobile 6
Please help me for further information
Thanks
Regards
Hi,
I try to cook a rom based on an official rom for Vox (HTC FRA 1.34).
I would understand all steps of cooking, i have already made this :
1 - Extract RUU_Vox_HTC_FRA_1.34.406.1_4.1.13.54_03.10.90_Ship.exe to RUU_signed.nbh (7-zip)
2 - Extract RUU_signed.nbh to IPL.nb/PrimarySpalsh.nb/Radio.nb/SPL.nb/Windows.nb (nbhtool.exe)
3 - Dump rom Windows.nb with prepare_imgfs.exe and viewimgfs.exe
4 - Move dump files in OEM/SYS folders with PKGTool
If i understood well, i must extract XIP from Windows.nb, before cook.
I have tried some soft like nbsplit/rommaster/buildxip, but i have errors, could someone help me for this step ?
Thanks.
And sorry for my poor english.
fireburned said:
Hi,
I try to cook a rom based on an official rom for Vox (HTC FRA 1.34).
I would understand all steps of cooking, i have already made this :
1 - Extract RUU_Vox_HTC_FRA_1.34.406.1_4.1.13.54_03.10.90_Ship.exe to RUU_signed.nbh (7-zip)
2 - Extract RUU_signed.nbh to IPL.nb/PrimarySpalsh.nb/Radio.nb/SPL.nb/Windows.nb (nbhtool.exe)
3 - Dump rom Windows.nb with prepare_imgfs.exe and viewimgfs.exe
4 - Move dump files in OEM/SYS folders with PKGTool
If i understood well, i must extract XIP from Windows.nb, before cook.
I have tried some soft like nbsplit/rommaster/buildxip, but i have errors, could someone help me for this step ?
Thanks.
And sorry for my poor english.
Click to expand...
Click to collapse
have u try msflshtool
Thanks for this idea.
I test it, with this command :
msflshtool.exe Windows.nb -d
I obtain 3 files :
- Windows.nb.part0
- Windows.nb.part1
- Windows.nb.part2
Here is the part info :
Code:
***********************************************************
msflsh50dump v0.1 code by blueboy
***********************************************************
partinfo
part <0> offset <00000400> size <00217400>
part <1> offset <00217800> size <00333000>
part <2> offset <0054A800> size <03586800>
end
What is the newt step ?
Thanks you.
fireburned said:
Thanks for this idea.
I test it, with this command :
msflshtool.exe Windows.nb -d
I obtain 3 files :
- Windows.nb.part0
- Windows.nb.part1
- Windows.nb.part2
Here is the part info :
Code:
***********************************************************
msflsh50dump v0.1 code by blueboy
***********************************************************
partinfo
part <0> offset <00000400> size <00217400>
part <1> offset <00217800> size <00333000>
part <2> offset <0054A800> size <03586800>
end
What is the newt step ?
Thanks you.
Click to expand...
Click to collapse
usually it is in part0 or part1 ... use xipport to see which have the boot.hv & boot.rgu ... u only need those files ... around 20-40Kb files
Then u can put it in ROM folder in ur Kitchen
Thank you cruzzmz for your replies
I used XIPort to extract Windows.nb.part0/Windows.nb.part1.
I obtain this :
Code:
Windows.nb.part0
OUT\
PARTHDR.txt
ROMHDR.txt
\FILES
boot.hv
boot.hv.imageinfo.txt
ceconfig.h
ceconfig.h.imageinfo.txt
default.hv
default.hv.imageinfo.txt
initobj.dat
initobj.dat.imageinfo.txt
user.hv
user.hv.imageinfo.txt
\MODULES
busenum.dll
cecompr.dll
ceddk.dll
cereg.dll
certmod.dll
coredll.dll
device.exe
devmgr.dll
diskcache.dll
encfilt.dll
fatfsd.dll
fatutil.dll
filesys.exe
fsdmgr.dll
imgfs.dll
mmtimer.dll
mspart.dll
nk.exe
OMAP850_SDHC.dll
ONDisk.dll
packageinfoapi.dll
pm.dll
ramdisk.dll
rawfs.dll
regenum.dll
romfilter.dll
sdbus.dll
sdmemory.dll
serial.dll
uldrui.dll
updateapp.exe
busenum.dll.txt
cecompr.dll.txt
ceddk.dll.txt
cereg.dll.txt
certmod.dll.txt
coredll.dll.txt
device.exe.txt
devmgr.dll.txt
diskcache.dll.txt
encfilt.dll.txt
fatfsd.dll.txt
fatutil.dll.txt
filesys.exe.txt
fsdmgr.dll.txt
imgfs.dll.txt
mmtimer.dll.txt
mspart.dll.txt
nk.exe.txt
OMAP850_SDHC.dll.txt
ONDisk.dll.txt
packageinfoapi.dll.txt
pm.dll.txt
ramdisk.dll.txt
rawfs.dll.txt
regenum.dll.txt
romfilter.dll.txt
sdbus.dll.txt
sdmemory.dll.txt
serial.dll.txt
uldrui.dll.txt
updateapp.exe.txt
Windows.nb.part1
OUT\
PARTHDR.txt
ROMHDR.txt
\FILES
42d1aab7-6dfa-4c03-9797-d66f7620883d.dsm
42d1aab7-6dfa-4c03-9797-d66f7620883d.dsm.imageinfo.txt
7da1c1a8-1fd2-4a18-a081-84e4825266b1.dsm
7da1c1a8-1fd2-4a18-a081-84e4825266b1.dsm.imageinfo.txt
966f2a5f-b510-8a60-28bc-6c06a3376c66.dsm
966f2a5f-b510-8a60-28bc-6c06a3376c66.dsm.imageinfo.txt
b5332311-48f1-4b76-ad70-8efa5db8fa3a.dsm
b5332311-48f1-4b76-ad70-8efa5db8fa3a.dsm.imageinfo.txt
b5332311-48f1-4b76-ad70-8efa5db8fa3a.rgu
b5332311-48f1-4b76-ad70-8efa5db8fa3a.rgu.imageinfo.txt
boot.hv
boot.hv.imageinfo.txt
boot.rgu
boot.rgu.imageinfo.txt
e7cdacc2-b776-1926-fd10-4b8c9b712e9b.dsm
e7cdacc2-b776-1926-fd10-4b8c9b712e9b.dsm.imageinfo.txt
initflashfiles.dat
initflashfiles.dat.imageinfo.txt
mxip_initdb.vol
mxip_initdb.vol.imageinfo.txt
mxip_lang.vol
mxip_lang.vol.imageinfo.txt
wince.nls
wince.nls.imageinfo.txt
\MODULES
busenum.dll
cachefilt.dll
cecompr.dll
ceddk.dll
certmod.dll
coredll.dll
device.exe
devmgr.dll
diskcache.dll
encfilt.dll
fatfsd.dll
fatutil.dll
filesys.exe
fsdmgr.dll
fsreplxfilt.dll
hd.dll
HtcFsdspy.dll
imgfs.dll
mspart.dll
nk.exe
ONDisk.dll
osaxst0.dll
pm.dll
ps2fatutil.dll
regenum.dll
busenum.dll.txt
cachefilt.dll.txt
cecompr.dll.txt
ceddk.dll.txt
certmod.dll.txt
coredll.dll.txt
device.exe.txt
devmgr.dll.txt
diskcache.dll.txt
encfilt.dll.txt
fatfsd.dll.txt
fatutil.dll.txt
filesys.exe.txt
fsdmgr.dll.txt
fsreplxfilt.dll.txt
hd.dll.txt
HtcFsdspy.dll.txt
imgfs.dll.txt
mspart.dll.txt
nk.exe.txt
ONDisk.dll.txt
osaxst0.dll.txt
pm.dll.txt
ps2fatutil.dll.txt
regenum.dll.txt
The good files are in Windows.nb.part1 ?
Next step : copy boot.hv/boot.rgu in ROM/XIP folder ?
Thank you very much !
And another question, i have "missing files" when i use PKGTool :
Code:
[Missing Manifests]
(Maybe):\ROM\XIP\b5332311-48f1-4b76-ad70-8efa5db8fa3a.dsm
(Maybe):\ROM\XIP\7da1c1a8-1fd2-4a18-a081-84e4825266b1.dsm
(Maybe):\ROM\XIP\42d1aab7-6dfa-4c03-9797-d66f7620883d.dsm
(Maybe):\ROM\XIP\e7cdacc2-b776-1926-fd10-4b8c9b712e9b.dsm
(Maybe):\ROM\XIP\966f2a5f-b510-8a60-28bc-6c06a3376c66.dsm
It's a problem ?
fireburned said:
And another question, i have "missing files" when i use PKGTool :
Code:
[Missing Manifests]
(Maybe):\ROM\XIP\b5332311-48f1-4b76-ad70-8efa5db8fa3a.dsm
(Maybe):\ROM\XIP\7da1c1a8-1fd2-4a18-a081-84e4825266b1.dsm
(Maybe):\ROM\XIP\42d1aab7-6dfa-4c03-9797-d66f7620883d.dsm
(Maybe):\ROM\XIP\e7cdacc2-b776-1926-fd10-4b8c9b712e9b.dsm
(Maybe):\ROM\XIP\966f2a5f-b510-8a60-28bc-6c06a3376c66.dsm
It's a problem ?
Click to expand...
Click to collapse
dont think it is a problem as long as when u do buildOS u dont get any error (hint: if there is error check the temp folder open log.txt)
I created a *.bat file wich does this :
1- nbhextract "RUU_Signed.nbh" to "00_IPL.nb 01_SPL.nb 02_MainSplash.bmp 02_MainSplash.nb 03_GSM.nb 04_OS.nb"
2- dumprom.exe 04_OS.nb wich extract files in "Temp" folder :
Code:
boot.bin
msflsh.bin
romhdr.bin
\Imgfs (1599 objects)
\XIP (37 objects)
3- pkgtool.exe : Temp\Imgfs => Temp\Imgfs\OEM and SYS
4- move Temp\Imgfs\OEM and SYS in root kitchen directory
My problem :
* When i try to re-"BuildOS" (to test if my dump works), i have an error : Error, last status: "Creating initflashfiles.dat..."
I have found a file "initflashfiles.dat" in my ROM\XIP foler. What is the problem ?
Thanks you.
Help me please... I tried... But i'm blocked...
fireburned said:
I created a *.bat file wich does this :
1- nbhextract "RUU_Signed.nbh" to "00_IPL.nb 01_SPL.nb 02_MainSplash.bmp 02_MainSplash.nb 03_GSM.nb 04_OS.nb"
2- dumprom.exe 04_OS.nb wich extract files in "Temp" folder :
Code:
boot.bin
msflsh.bin
romhdr.bin
\Imgfs (1599 objects)
\XIP (37 objects)
3- pkgtool.exe : Temp\Imgfs => Temp\Imgfs\OEM and SYS
4- move Temp\Imgfs\OEM and SYS in root kitchen directory
My problem :
* When i try to re-"BuildOS" (to test if my dump works), i have an error : Error, last status: "Creating initflashfiles.dat..."
I have found a file "initflashfiles.dat" in my ROM\XIP foler. What is the problem ?
Thanks you.
Click to expand...
Click to collapse
I dont seem to hv that file on my ROM\XIP folder, maybe u can try deleting all files inside XIP except for boot.hv & boot.rgu
then try buildOS again
BTW what is the size of both files?
I deleted all files in XIP folder, except boot.hv/boot.rgu
boot.hv = 40 Ko
boot.rgu = 27 Ko
Again, BuildOS fails : Error, last status: "Creating initflashfiles.dat..."
When i search in OEM and SYS folders, i don't have a "initflashfiles.dat" file.
An idea ?
fireburned said:
I deleted all files in XIP folder, except boot.hv/boot.rgu
boot.hv = 40 Ko
boot.rgu = 27 Ko
Again, BuildOS fails : Error, last status: "Creating initflashfiles.dat..."
When i search in OEM and SYS folders, i don't have a "initflashfiles.dat" file.
An idea ?
Click to expand...
Click to collapse
dunno if this can help
If you did something like the following sequence:
typho5 -x nk.nbf
prepare_imgfs.exe 80040000-OS_0.nb -nosplit
viewimgfs.exe imgfs_raw_data.bin
Then the initflashfiles.dat should definitely be in the 'dump' folder.
Did you remember the -nosplit option for prepare_imgfs.exe?
Edit: Just a thought. The initflashfiles.dat is hidden plus the .dat extension is normally used by system files, so could it be something so simple as the fact that your explorer is not showing hidden and/or system files?
Click to expand...
Click to collapse
seems like the initflashfiles.dat is in the dump folder after u do a viewimgfs
You can put initflashfile.dat inside imgfs (for example OEM/OEM_LANG_XXX) and delete it from XIP.
Buildos.exe from Bepe search initflashfiles.dat insiede IMGFS:
cruzzmz : I tried your solution
Code:
typho5 -x nk.nbf
prepare_imgfs.exe 80040000-OS_0.nb -nosplit
viewimgfs.exe imgfs_raw_data.bin
But, in dump folder, i haven't initflashfiles.dat
I tested several solutions, and each time, initflashfiles.dat is in my XIP folder.
cicciocant : I tried to put initflashfiles.dat in dump folder, and run PKGTool, but file is not copy to OEM_Lang_XXXX folder (missing dsm ???), and BuildOS fails, with same error.
I tested to put initflashfiles.dat in OEM_Lang_XXXX manualy, and i have an other error when i try to BuildOS : "initflashfiles.dat is a directory not a file! copying the File!!!"
In my XIP folder, i have :
Code:
busenum.dll
cachefilt.dll
cecompr.dll
ceddk.dll
certmod.dll
coredll.dll
device.exe
devmgr.dll
diskcache.dll
encfilt.dll
fatfsd.dll
fatutil.dll
filesys.exe
fsdmgr.dll
fsreplxfilt.dll
hd.dll
HtcFsdspy.dll
imgfs.dll
mspart.dll
nk.exe
ONDisk.dll
osaxst0.dll
pm.dll
ps2fatutil.dll
regenum.dll
42d1aab7-6dfa-4c03-9797-d66f7620883d.dsm
7da1c1a8-1fd2-4a18-a081-84e4825266b1.dsm
966f2a5f-b510-8a60-28bc-6c06a3376c66.dsm
b5332311-48f1-4b76-ad70-8efa5db8fa3a.dsm
b5332311-48f1-4b76-ad70-8efa5db8fa3a.rgu
boot.hv
boot.rgu
e7cdacc2-b776-1926-fd10-4b8c9b712e9b.dsm
initflashfiles.dat
mxip_initdb.vol
mxip_lang.vol
wince.nls
An idea ?
And thanks for your help.
seems like my rom that i cooked doesnt have initflashfiles.dat in the XIP folder.
Maybe you can try ask around in hypercore kitchen thread
Thanks cruzzmz, i posted my question.
Special Thanks
Abusalza (for the most initial start off guide)
Cmonex (for the “MOST” important finishing touches)
!Aman! (for all the testing and Hex edit helping)
Noonski (for being the inspiration to keep going )
Ervius (for developing the kitchen tool to perform all the operations)
In this forum there are many many tools from experts and likes for porting XIP, rebuilding dumped ROMs etc. This threads aims at showing or sharing what goes in the background of these automated tools and also aims at answering all the many unanswered questions about various factors of ROM cooking / editing I have come across in this forum
Suggestions / comments always welcome to make these tutorials even better
Index of Tutorials
Manual XIP Porting Guide: CLICK HERE
XIP Porting Updates from members: CLICK HERE
XIP Porting for Himalaya devices & others (Nokser): CLICK HERE
Misc XIP Updates: CLICK HERE
PagePool Changing Guide (for Diamond & Raphael): CLICK HERE
Gain More Storage Memory (Increase imgfs size) Guide: CLICK HERE
ULDR Partition Size Reduction Guide: CLICK HERE
MBR and MSFLSH50 Regions Screenshots: CLICK HERE
Gain More Storage Memory (compress imgfs) with LZX algorithm: CLICK HERE
Get High File System Index (!Aman!): CLICK HERE
Ervius's GUI kitchen thread to perform all operations, Noonski's amazing RunCC & AutoRun & SDAutorun tutorial thread
Ervius's post on patching nk.exe to change the EndRam address for more available RAM in device (original credits to cmonex )
Da_G's amazing new initiative to utilise the ULDR partition to upgrade ROM without re-flash
All the above guides and updates are compiled in pdf file also for offline reading, attached in this post as All Guides.zip
The imgfs Gain.zip is actually the 5th guide with pictorial seperatly put up for members who would want to refer only to that process
The Pictorial.zip is the 7th picture reference for offline reading
Donations for this hard work and research are much appreciated. Below are the links whom you may choose to provide those to
Donation to Abusalza, Donation to Cmonex, Donation to !Aman!, Donation to Ameet
Index of Threads (Manila related)
Ameet's Mode9 script editing ideas thread
l3v5y's tutorial thread for editing Manila files
NisseDILLIGAF's Manila Hash tool
Manual Full XIP Porting
Tools you need: (attached the tools in this thread for easy access)
HEX Calculator (recommended – HEX workshop (Not Free)), suggested Windows Calculator
XIPPort.exe
M’Reloc.exe
NBMerge.exe
Insert.exe
OS.nb.payload from 19965 build (shipped ROM)
Cup of nice strong Coffee (A Must)
Brief:
There are many different ways to port the XIP. Few mention of using the 723*.dsm for the build number, few others mention of using the coredll.dll module to have the latest build numbers. As my friends, Noonski and !Aman! always say “Only numbers are just eye wash, core system is what matters the most” Based on this as inspiration, I am posting this guide for manual XIP porting. A few places you may find colors in this guide, these are to visually link the data for easy understanding
The only files removed from the ported XIP are (these are removed to keep the new XIP within the original size):
osaxst0.dll + osaxst0.dll.imageinfo.txt
hd.dll + hd.dll.imageinfo.txt
bmui.nb0 + bmui.nb0.imageinfo.txt
Process:
Prepare OEMXip base
Dump your original XIP.bin (from 19965 build) with XIPPort.exe, and click “write maps” to get MAP.txt in the OUT folder
Open the MAP.txt and go through what you will need to achieve for a full port. I advice to keep this MAP.txt as a backup, just in case
Click “make pkgs” to get “OEMXipKernel” and “MSXipKernel” folders inside \Files and \Modules
Delete MSXipKernel folders from \Files and \Modules both
Now our base OUT folder is ready with OEMXipKernel
Prepare MSXip donor
Dump your donor XIP.bin (from 20758 build) with XIPPort.exe, and click “make pkgs” to get “MSXipKernel” folder inside \Files and \Modules
Delete osaxst0.dll + osaxst0.dll.imageinfo.txt, hd.dll + hd.dll.imageinfo.txt and bmui.nb0 + bmui.nb0.imageinfo.txt to get the new XIP within the original RAM size. If you don’t wish to delete these files, then you will need to increase the “physlast” in ROMHDR.txt. Process of which is not covered under this guide
Copy the MSXipKernel folders from \Files and \Modules both to the \Files and \Modules in the base OUT folder
Now our OUT folder is ready to be ported with the OEMXipKernel and MSXipKernel
Now to proceed with the reallocing you need to re open the packages which have been created. Open XIPPort.exe and click "undo" then click “realloc P” to re calculate the reallocation addresses. Then click “write maps” to get the new MAP.txt file
Open this MAP.txt and look in the o32_realaddr and e32_vbase addresses. Busenum.dll must be the last entry in both tables. Here you may find overlaps of the modules in a few or most places (seen as !!!!!!!!!!!!!!!!!!)
These are the overlaps which need to be taken care of by reallocating the modules in Initialized Data and Virtual Base addresses
You need to work our way up from the bottom of the list since the busenum.dll is reallocated at the last address of the memory
For example:
03f4c000 03fe3000 L00097000 Virtual base address of coredll.dll
03fe2000 03fe3000 L00001000 !!!!!!!!!!!!!!!!!!
03fe2000 03ff0000 L0000e000 Virtual base address of certmod.dll
03ff0000 03ffb000 L0000b000 Virtual base address of cachefilt.dll
03ffa000 03ffb000 L00001000 !!!!!!!!!!!!!!!!!!
03ffa000 04000000 L00006000 Virtual base address of busenum.dll
Meaning, e32_vbase address of cachefilt.dll is overlapping that of busenum.dll by 1000 (L00001000) Similarly e32_vbase address of coredll.dll is overlapping that of certmod.dll by 1000 (L00001000)
I recommend you use M’Reloc.exe for reallocating the addresses in imageinfo.bin and Notepad to reallocate the addresses in the corresponding imageinfo.txt files. Since the binaries (S000, S001...) must actually be relocated using M'Reloc, it is not enough to just adjust the values in the imageinfo.txt files
To calculate the revised addresses (in below example, the e32_vbase) of the overlapping module, open Hex Calculator. To do that you will need to know the e32_vsize of the overlapped module. To find that out open overlapped module (for e.g. cachefilt.dll) in M’Reloc.exe and see the e32_vsize (0000B000)
Now to correct the e32_vbase of cachefilt.dll, follow this calculation as a base (e32_vbase busenum.dll - e32_vsize cachefilt.dll = e32_vbase cachefilt.dll)
Meaning, (03FFA000 – B000 = 03FEF000) hence the correct e32_vbase address is 03FEF000
03ff0000 03ffb000 L0000b000 Virtual base address of cachefilt.dll
03ffa000 03ffb000 L00001000 !!!!!!!!!!!!!!!!!!
03ffa000 04000000 L00006000 Virtual base address of busenum.dll
Now since the cachefilt.dll is reallocated using the above calculation, the modules next in line above that will also have to be reallocated. Namely, certmod.dll (although not overlapping yet above the cachefilt.dll). To calculate the e32_vbase of certmod.dll you will need the revised e32_vbase address of cachefilt.dll which you got just now
I recommend writing down the e32_vbase, e32_vsize, o32_realaddr and o32_vsize of each module so it will be easier to calculate the correct addresses for reallocation)
Remember, you need to work our way up from the bottom of the list since the busenum.dll is reallocated at the last address of the memory
To reallocate the addresses for o32_realaddr, follow the above calculation, only this time replace the e32_vbase busenum.dll with o32_realaddr and e32_vsize with o32_vsize
Now open the corresponding imageinfo.txt file for each module and change the e32_vbase and o32_realaddr address values in the txt file of the values mentioned with V= and D=, seen for e.g. like this
Module name: cachefilt.dll
e32_vbase: V=03FEF000
o32[1].o32_realaddr: D=01FFE000
You will notice that the FLASHDRV.DLL module has the realaddr at 2 regions. Although I have not found a way to calculate the difference between both regions but I change the values as per Abusalza’s MAP.txt
o32[1].o32_realaddr: D=01FCC000
o32[3].o32_realaddr: D=01FD4000
Since the OEMXipKernel modules never change, I only correct values of the ported MSXipKernel modules
This is helpful if the MSXipKernel modules ported from donor ROMs are similar in the sizes. If not then you will need to do the calculation and correction of values
Once through with the address reallocation, open XIPPort.exe and click “realloc P” to re calculate the addresses for writing maps. It will show you errors regarding some regions, ignore those and click “write maps”. Open the new MAP.txt and recheck for (!!!!!!!!!!!!!!!!!!) If none found that means the XIP has been ported well
Now click “build xip_out.bin” to create the resulting XIP to be inserted into the ROM .payload file. Use this command for inserting the xip_out.bin into the .payload (presuming you already have the shipped OS.nb.payload file in the same working folder
insert.exe -i xip_out.bin -o OS.nb.payload -d 0x00320000 -s 0x004C0000
Check these values with your device imgfs since in Diamond the XIP starts at 0x00320000 and the imgfs starts at 0x007A0000, but for some reason the imgfs signature in Diamond is at 0x007E0000
Build OS.nb for use in the ROM folder from the .payload you just updated with the new XIP. Please note these commands are for Diamond device. Please check with your device on the same before building
nbmerge.exe –kaiser OS.nb
Now put this OS.nb file in the ROM, put the boot.rgu from 19965 (shipped ROM) into the \ROM\XIP folder and do not include any of the OEMXipKernel or MSXipKernel folders in OEM & SYS folder while cooking. I observed for some reason, WinCeNls_WWE folder cannot be taken out of XIP and included in SYS. Device wont boot, so keep that in XIP (found a working solution by spocky12: Here (last quote)
Please note the insertion of xip_out.bin can also be done through XIPPort.exe directly
Before clicking “write xip_out.bin to:” replace the name “nk.nb” with “OS.nb.payload” and the address to “00320000” all without quotes
IMP: There may be chances that although the XIP is working fine, but the windows are seen as QVGA versions. The solution to that is either of the below
XIP & SYS of the same builds or
XIP and the OS\Gwes.exe from same build
Cook the new ROM with your favorite kitchen (whichever doesn’t do anything with the XIP) and use this OS.nb file as base template for the ROM with the new XIP
With this note, I hope this guide will serve many as a guiding light and answer many questions on manual full XIP porting. Happy porting
Members Porting Updates
This is where we showcase the updates on XIP porting provided by our kind forum members
Original quote - Cmonex
Code:
[COLOR=royalblue][B]Quote=ababrekar[/B] - Busenum.dll must be the last entry in both tables[/COLOR]
Actually the values are arbitary, even though Microsoft decided to place coredll.dll as the last entry, i.e. at the highest memory address, it doesn't really matter. So, the values are arbitrary, but of course only within limits: the addresses must be divisible by 0x1000 (pagesize of the platform), and they must be inside the memory range reserved for XIP. part of that is the dllfirst and dlllast values in ROMHDR.txt. The other part (the higher addresses, 0x03xxxxxx) are determined by the following way: IMGFS .VM tells you the limits for IMGFS memory range, and XIP is beyond that range. So, if your OS doesn't want to boot, you can check if IMGFS .VM is overlapping with XIP memory range as per your MAP.txt for xip and dump_memorymap.txt (or .VM folder, etc) for IMGFS.
For example if IMGFS ends at 0x03DE0000, then the higher part of your XIP must start later than 0x03DE0000. You can of course modify this to make more space for XIP
If xipport crashes on writing maps it means you definitely have some overlaps left in. So yes, best to work with the maps from the original XIPs and only use the final XIP map to verify you got everything right
[COLOR=red]Btw, XIPPort's insertion function was found buggy on one device once, but cannot remember the details. It wasn't my device, so just posting this as a possible warning[/COLOR]
Oh, same applies to ROMMaster.exe, it is buggy when you try to use that to extract the XIP some ROMs
[COLOR=royalblue][B]Quote=ababrekar[/B] - Few mention of using the 723*.dsm for the build number, few others mention of using the coredll.dll module to have the latest build numbers[/COLOR]
Btw, coredll.dll replacement only works for that pre-WM6.1
And a last tip for [B]debugging [/B]if your OS doesn't want to boot: if you already checked that the maps are all ok and IMGFS doesn't overlap, etc., then if you have a new enough HTC device (for example HTC Athena and later is new enough), then go to SPL using mtty or putty or qmat and there the "task 37" command (without the quotes) will show KITL log, with lots of debug messages, that can be very helpful. (first you must issue "task 32", for "task 37" to work) - this doesn't appear to work on some Raphaels
Original quote - cruzzmz
Code:
If porting for [B][COLOR=teal]Zinc[/COLOR][/B]. After finish with all the MReloc, you need to Hex the S000 of nk.exe in the MODULES folder. The value can be found in MAP.TXT under the Modules
[COLOR=royalblue][B]Quote=ababrekar[/B] - 802FAA9C - 802faaf0 L00000054 rom_00 header: dlls=01f901fd-02000000 phys=80180000-803dc4fa, 24 modules, 10 files, 2 copyentries ext=8018265c ram=803dd000-83c00000 cputype=000001c2[/COLOR]
Open S000 in ur fav hex editor, then go to [B]Offset 1658[/B]
Change the original value i.e: [COLOR=red][B]802FAA9C [/B][/COLOR]and Hex edit it to [COLOR=blue][B]9CAA2F80[/B][/COLOR]
Original quote - DupinBJK
Code:
The addresses on the 80xxxxxx range should be on a [B]WORD [/B]boundary - Divisible by [B]4[/B]
Original quote - spocky12 (how to move wincenls to IMGF from XIP)
Code:
This is related to BootPhase key in boot.rgu. [URL="http://msdn.microsoft.com/en-us/library/ms885267.aspx"]According to Microsoft[/URL]
If this value is 0, then related filesystem is loaded prior to initialization of locale. But for this to work, the filesystem has to be loaded in Autoload key, like this :
[B][COLOR=red][HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FLASHDRV][/COLOR][/B]
[B][COLOR=red] "DriverPath"="Drivers\\BuiltIn\\FLASHDRV"[/COLOR][/B]
[B][COLOR=red] "LoadFlags"=dword:1[/COLOR][/B]
[B][COLOR=red] "Order"=dword:0[/COLOR][/B]
[B][COLOR=red] "MountAsRoot"=dword:1[/COLOR][/B]
[B][COLOR=red] "MountAsBootable"=dword:1[/COLOR][/B]
[B][COLOR=red] "BootPhase"=dword:0[/COLOR][/B]
With this, autoload will regsiter access to the imgfs filesystem before wince.nls is loaded. Then, when it'll be required, if it's not present in xip, it should be found in imgfs
Here is where we showcase miscellanous updates on XIP porting / MBR / MSFLSH50 which doesnt fall under the above categories. These are the updates which are not harming the system in any ways if left as is. Yet just a know how or just in case
Removing modules from XIP: Original quote - Cmonex
Code:
You can always remove osaxst0.dll, osaxst1.dll, hd.dll, kd.dll, and also bmui.nb0 - the latter is just a SplashScreen saying your OS can't boot and reflash or something (I forget the exact text)
The other files are Kernel debuggers and similar, best to remove them, because it just takes up space and can also cause problems if you somehow manage to use the wrong versions of them. They are mapped directly to the Kernel memory space, and if your device uses a different range (i.e. you didn't keep your original debugger dlls), it will prevent the rom from booting
Also I found it's ok to remove (m)encfilt.dll and cachefilt (put them in IMGFS if you want them)
[I][B]Physlast [/B][/I]can be changed up to [I]ulramstart [/I]value without problems (of course not if you don't have enough space in the flash, but that's not really a real life possibility). Of course that also assumes we are not talking about some older devices that have the xip mapped to a different memory range than [I]ulramstart[/I]
You can move [I]ulramstart/ulramfree [/I]too if you relocate nk.exe data section (usually S002) with M'Reloc-nk. Also relocation is needed for any other modules (such as giisr.dll, on some non HTC devices) that have mappings similar to nk.exe (so they have a data section in the map that points into [I]ulramstart/ulramfree [/I]range). on HTC devices I didn't really see such modules so not a real problem usually
Increasing the free RAM (Part 1): Detailed explanation here by DupinBJK
Simple explaination for easy understanding: (the below values are from a sample MAP.txt and dump_memoryMaps.txt (View attachment Examples.zip)) for trying to explain what comes from where and the actual values may differ from your files
Code:
8019e9a4 - 8019e9f8 L00000054 rom_00 header: dlls=[COLOR=red]01f801fc[/COLOR]-[COLOR=black]02000000[/COLOR] phys=[COLOR=black]80000000[/COLOR]-[COLOR=blue]8030c7b3[/COLOR], 28 modules, 10 files, 1 copyentries ext=80002b4c ram=8030d000-83000000 cputype=000001c2
[COLOR=blue]8030c7b3 [/COLOR]- 8030c7b3 L00000000 End: highest physical address
The blue value that mentioned is the physlast value. In the dump_memoryMaps.txt, you will find:
Code:
01F7F000 - 01F7FFFF (4095 bytes): bthasplugin.dll
after which the dllfirst starts in MAP.txt with a difference of 1FD length and
Code:
03D66000 - 03D6FFFF (40959 bytes): bthasplugin.dll
after which the e32_vbase starts (03dcb000 - 03dd4000 L00009000 Virtual base address of wce_rex.DLL) in MAP.txt with a difference of 5B001 length
Increasing the free RAM (Part 2): by Ameet
Changed the size of ROM in G'Reloc from 83000000 to 83400000 and increased the ulRAMEnd to the same value (83400000) getting free RAM space of L0306C000 (I dont know how to translate this into the actual size in % or in bytes) but with the original of 83000000 the RAM space was L02C6C000
Having done this, I get about 62% free memory without TF3D and approx 54% free memory with TF3D at system start
Extracting the XIP from any ROM: Detailed explanation here by boggsie
More explaination about XIP processes & editing OS version on 1st splash screen: by FormerPalmOS
Code:
[B][COLOR=red]1) [/COLOR][/B]The Initial Program Loader copies the XIP partition from the FLASH to SRAM - in Diamond and Touch Pro there is a custom Samsung chip that includes both NAND FLASH and SRAM. The overall physical RAM space where this is loaded is also hard-coded - see below. The amount of RAM used is variable - this info comes from a header in the XIP section - basically how much RAM does the XIP need? What's left is what you get for program memory.
[B][COLOR=red]2) [/COLOR][/B]IPL executes a jump to a hard-coded address within the SRAM - this should be busenum.dll, which is why busenum.dll has to be at a specific physical and virtual memory location.
[COLOR=red][B]3) [/B][/COLOR]busenum.dll does its thing (not sure entirely what) but eventually calls nk.exe. nk.exe is the kernel. nk.exe loads the other modules, initializes the hardware (that's why nk.exe is device-specific), and initializes the filesystem and basic device drivers (again why those are device-specific).
[COLOR=red][B]4) [/B][/COLOR]Once this process has completed, the filesystem proceeds to load the imgfs filesystem and turn control over to the full OS.
The virtual memory map for WM consists of a number of slots. The memory management unit in the CPU translates virtual memory references into physical memory addresses. Every loaded dll or exe must occupy a portion of virtual memory for its code and will likely also use some of the available RAM for its data. The location within virtual memory where the code for a dll or exe is loaded is determined at load time unless the dll or exe is a module (everything in the XIP is a module) in which case the virtual memory location is specified during cooking. In the XIP, the location of the RAM used is also specified - the process of relocating a module in the XIP specifies the virtual memory location for the code and and data in the case of nk.exe, the physical RAM location.
There are four VM sections we care about (note - I'm taking some liberty here - these don't exactly correspond with what Microsoft refers to as a VM slot). Slot 0 runs from 0x00000000 to 0x01FC0000 (in the CDMA Touch Pro). The end of slot 0 is a function of the number of and size of the data regions for the DLL modules in the XIP. This number plus 0x1FC is stored in the ROM header (and can be examined in ROMHRD.txt) - it is referred to as dllfirst. This is also the slot 0 you see when you do G'Reloc.exe (the value in G'Reloc.exe is the last address of slot 0 plus one). These two must match!!! What the XIP uses must not overlap with what your ROM uses.
The next slot is the XIP DLL initialized data. This runs from dllfirst to dlllast. dlllast is fixed (in the Touch pro) at 0x02000000. The XIP DLL data sections are loaded starting at 0x02000000 and working backwards.
The next slot is again available for the OS and runs from dlllast to wherever the code in the XIP starts. You can see this in your XIP memory map - this again must match (the end of slot 1 in G'reloc.exe must match the first DLL virtual base address in your XIP - in mine this is 0x03DC0000). The XIP DLL and EXE code occupies from this virtual memory address to 0x03FFFFFF.
The OS will load DLLs and EXEs (other than XIP) into this slot starting at 0x03DC0000 and working backwards, then will move to the slot below 0x01FC0000. Recall, I'm using my numbers here. Any modules in the ROM will have their virtual memory slot and address pre-assigned. Any non-module DLL or EXE will be relocated to an available slot and VM address at load (this is why modules load quicker).
So in summary, my VM map looks like this:
0x00000000 - 0x01FC0000 - OS available (G'Reloc.exe slot 0)
0x01FC0000 - 0x01FFFFFF - XIP data
0x02000000 - 0x03DC0000 - OS available (G'Reloc.exe slot 1)
0x03DC0000 - 0x3FFFFFFF - XIP modules code
The actual physical XIP RAM address starts at 0x80000000 in the Touch Pro (this is physfirst in the ROMHDR.txt) and ends at 0x83400000 (in the Verizon Touch Pro - this is ulRAMEnd). The XIP is copied from the NAND flash starting here with the ROM header occupying 0x80000000 - 0x80001000. Then come the various XIP components, hopefully none of which overlap. The XIP should end at or before a ROMHDR.txt value called physlast. Thus physlast - physfirst is the size your XIP has to fit into.
Following physlast comes ulRAMStart - this is where the RAM required for nk.exe is located. This RAM ends at ulRAMFree. What remains after ulRAMFree until ulRAMEnd is available for your OS. Shrinking your XIP and relocating nk.exe will allow you to recover wasted space and give you more program memory, but it buys you nothing to move a module out of the XIP if it is required by the system. Only things that aren't required (like debuggers and hard drive drivers) should be removed.
Also, the least significant 16 bits must be zero (lower four hex digits) of the end of vm slot 0 and slot 1 in G'reloc.exe and in your ROMHDR.txt. The least significant 14 bits must be zero (the lower four digits can only be 0000, 4000, 8000 or C000) of the RAM address (ulRAMStart and ulRAMFree).
Code:
Hex edit the S000 file in the nk.exe module folder and search for the revision string. You can find it by doing a search for the unicode string "[B][COLOR=red]Kernel Built[/COLOR][/B]" (Hex String [B][COLOR=red]4B 00 65 00 72 00 6E 00 65 00 6C 00 20 00 42 00 75 00 69 00 6C 00 74 00[/COLOR][/B]). Shortly after that will be the revision that is displayed on the phase 1 boot screen (small red letters in the lower right corner of the device on CDMA Touch Pro). Change that (make sure to overwrite, not to insert, and limit it to 12 characters in unicode format.
When you rebuild your xip.bin and cook with it, you should see this value on the screen during phase 1 boot. The only other way would be to insert a marker into the boot registry
Change PagePool through Hex editing (for Diamond & Raphael)
I'm putting this up here so to answer one more unanswered question about this especially for Diamond & Raphael ROMs
To change PP of Diamond ROMs:
Open the OS.nb in Hex editing software
1. Go to offset 0x37AD68 to find 03 25 A0 E3 03 15 A0 E3 00 20 83 E5 hex string (If this string is not found at the 37AD68 offset, then search for this hex string)
Replace the string with 20 83 E5 with 00 A0 E1
This will make the string NOP (No Operation) meaning, the ROM wont set the PP to default 12MB but will allow the change in below offset
2. Now go to offset 0x3A7F94 to find E0 E2 04 80 00 00 60 00 hex string
again, if this hex string not found at the 3A7F94 offset, then search for the hex string. Just as a hint, this string is after the second NKKD8 (search for text string)
60 is the size of PP that you can now modify to suit your liking
e.g. I made mine 00 to get 0MB PP. Or change it to 80 to get 8MB PP, so forth and so on
With changing the first hex string and making the Kernel NOP, you can also use the tool to change PagePool and it does work
Also to make it a permanent change you can hex edit the first mentioned string in S000 of nk.exe module in XIP and then modify the PP with the program or by hex on OS.nb
To change PP of Raphael ROMs:
Search for hex string: 03 15 A0 03 02 15 A0 13 00 10 82 E5 and change the last 4 bytes to 03 15 A0 03 02 15 A0 13 00 00 A0 E1 then the normal PP Changer tool will work
This is the 2nd string, ignore the 1st one coz that's in ULDR
Gain more Storage Memory (increase imgfs size)
There are 4 partitions in Diamond ROMs
part00 – ULDR
part01 – XIP
part02 – IMGFS
part03 – FAT (This partition exists only on few devices)
We all port XIP from different devices to exclude few modules to gain space and to upgrade the kernel and make the XIP partition smaller in size. Although the new XIP is smaller in size but because of the insertion addresses of XIP & imgfs, there is a gap of wasted space filled with FF between end of XIP & start of imgfs. Although there is no way we can include this space into XIP as free RAM but make use of this space in imgfs and gain whatever storage space we can
Files used as example for this tutorial
xip_out.bin: My own ported XIP of size (30CA12 in Hex, 3195154 in bytes)
os.nb.payload: My own cooked payload (since I also wanted the final ROM to be a cleaner ROM)
imgfs start: in my payload at 0x7A0000 (unedited)
XIP start: in my payload at 0x320000 (unedited)
Before we move into hex editing, let me give an overall outlook of the MBR & MSFLSH regions of the ROM
MBR is the Master Boot Record of the ROM (512 bytes) from 0x0 to 0x1FF. The infomation of partitions types Flags in hex offsets are called from the registry entry mentioned in boot.rgu below
The starting block (LBA) and number of sectors for each partition are defined as shown below
part00. 1C6 – 1C9 (starting block) 1CA – 1CD (number of sectors)
part01. 1D6 – 1D9 (starting block) 1DA – 1DD (number of sectors)
part02. 1E6 – 1E9 (starting block) 1EA – 1ED (number of sectors)
part03. 1F6 – 1F9 (starting block) 1FA – 1FD (number of sectors)
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"04"="FATFS" ; (hex: 1F2)
"20"="BOOT" ; (hex: 1C2)
"23"="RAWFS" ; (hex: 1D2)
"25"="IMGFS" ; (hex: 1E2)
MSFLSH50 is the Flash region of imgfs from 0x800 (see post #8 for screenshots, shown here is for Diamond) to 0xFFF. The starting block of imgfs is located in MSFLSH at 81C
e.g. if your device ROM's sector size is 200 then the MSFLSH50 region will starts at 0x200 and so on
Moving into the hex editing mode for making use of the wasted space between the actual XIP end & start of imgfs partitions
The new xip_out.bin is 30CA12 in total size (check your actual xip_out.bin size, shown here is just example) starting at 0x320000 (check you device XIP start, shown here is for Diamond) and ideally should end at 62CA12. But since the starting block of imgfs must be divisible by 20000 (see post #8 for screenshots, shown here is for Diamond) the imgfs needs to start at 640000. So the new XIP will have to be inserted into the payload at 0x320000 till 0x640000 with XIP size of 320000 and reduced wastage of 135EE bytes
The imgfs can also start at 630000 since this is directly after the XIP and also divisible by 20000, used here is 640000 as expansion for future xip_out.bin
Open the existing os.nb.payload in hex editor. Delete everything from 0x640000 till 0x79FFFF. This will move the imgfs from 0x7A0000 to 0x640000. Since we are now moving the imgfs partition next to new XIP, the number of sectors in new XIP and new LBA of imgfs needs to be edited to the revised value in the MBR region
To calculate the new starting block of imgfs partition we need the number of sectors in new XIP. To calculate that, use the following method
In Hex calc
Number of sectors = size of partition / sector size
e.g. (new XIP) 320000 (shown above) / 800 (see post #8 for screenshots, shown here is for Diamond) = 0640
since the coding is in little endian, we have to reverse these values to 40 06 00 00
Go to offset 0x1DA and change the values to 40 06 till 1DB and then 00 00
Now realloc the LBA of imgfs since we revised the number of sectors in XIP and to calculate that, use this method
In Hex calc
Logical Block Address (LBA) = Previous Partition LBA + Previous Partition number of sectors
e.g. (XIP LBA) 0640 + (XIP no of sectors) 0640 = 0C80
since the coding is in little endian, we have to reverse these values to 80 0C 00 00
Go to offset 0x1E6 and change the values to 80 0C till 1E7 and then 00 00
Logical Block Address (LBA) should be equal to (Previous Partition LBA + Previous Partition number of sectors * Sector Size)
e.g. (XIP LBA) 0640 + (XIP no of sectors) 0640 * 800 (see post #8 for screenshots, shown here is for Diamond) = 640000 (size of imgfs partition)
Similarly to imgfs calculate and change the LBA of FAT at 1F6 and 1F7 using the default imgfs no of sectors (use these since the cooking tools will change these as per actual size)
We have changed the LBA and number of sectors in MBR, but the OS needs to know the block address of imgfs in MSFLSH50 region
To calculate that, use this method
In Hex calc
MSFLSH50 Block Address = imgfs partition starting address / 20000 (see post #8 for screenshots, shown here is for Diamond)
e.g. (imgfs starting address) 640000 (shown above) / 20000 = 32
Go to offset 0x81C and change the value to 32
Save and close the os.nb.payload file in hex editor. Insert the new XIP into this file using this command
“insert.exe -i xip_out.bin -o OS.nb.payload -d 0x00320000 -s 0x00320000” (check your insert start address, shown here is for Diamond)
To calculate the size of XIP from MBR, use this method
In Hex calc
Size of XIP = Number of Sectors * Sector Size
e.g. (if the no of sectors in little endian) 0640 (shown above) * 800 (see post #8 for screenshots, shown here is for Diamond) = 320000 (sector size for diamonds)
This value shall be the "-s" while using insert.exe tool and to calculate the start of the XIP, use this method
In Hex calc
XIP Start = imgfs Start + "-s"
Reduce ULDR Partition Size
“ULDR” stands for “Update Loader”, and is part of the Image Update system. This system allows deployed devices to be updated with new software after they ship. The Update Loader reads a configuration stored in persistent memory and downloads and installs new versions of operating system or OEM files
Also known as part00 in the ROM, is something we all wish to get rid of and use the space as additional storage memory. This tutorial currently aims at reducing the size of this partition by 3.0 MB
Tools you need
NBSplit.exe
NBMerge.exe
Hex editor
Ervius's Payload Reducer
IMPORTANT NOTES
The template OS.nb used is the same OS.nb in which the XIP is inserted at 320000 and of size 320000
For best results use Ervius's Payload Reducer to reduce the size of payload from shipped ROM use nbmerge.exe to cook OS.nb as template for further cooking
This ROM is assumed to be from Diamond and check your device values as per the guide below
The hex offsets of (L)ogical (B)lock (A)ddress and number of sectors and imgfs block address are mentioned in tutorial above or in the post #8 below
Process
Extract OS.nb.payload from the OS.nb (nbsplit.exe –kaiser (check your device) OS.nb)
Run the OS.nb.payload through Ervius's Payload Reducer tool to remove all files from the imgfs and keep only the partition headers
Open this OS.nb.payload in your hex editor. We need to change LBA values of the partitions and number of sectors of ULDR partition since we are reducing the size
In the MBR region (partition Flag 20) LBA of ULDR partition remains same since we are not moving it anywhere. The existing number of sectors of ULDR is 3E 06 from little endian it will be 063E. We are removing 0600 sectors from this partition (0600 * 800 (size of sector, see post #8 for screenshots) = 300000) so, 063E – 0600 = 00 3E. Write it in little endian at hex offset 1CA and 1CB to 3E 00
To physically reduce the partition, remove all data between hex offsets 0x20000 till 0x31FFFF. This will make the XIP start from hex offset 0x20000 till 0x33FFFF and the imgfs partition start at 0x340000
Now since we have reduced the size of ULDR partition, the LBA values of XIP and imgfs partitions will have to be changed in the MBR region
Now change the LBA of XIP. To calculate that, use this method
In Hex calc
Logical Block Address (LBA) = Previous Partition LBA + Previous Partition number of sectors
e.g. (ULDR LBA) 00 00 00 02 + (ULDR no of sectors) 00 00 00 3E = 00 00 00 40
since the coding is in little endian, we have to reverse these values to 40 00 00 00
Go to offset 0x1D6 and change the values to 40 00 00 00 till 1D9
Now change the LBA of imgfs. To calculate that, use this method
In Hex calc
Logical Block Address (LBA) = Previous Partition LBA + Previous Partition number of sectors
e.g. (XIP LBA) 00 00 00 40 + (XIP no of sectors) 00 00 06 40 = 00 00 06 80
since the coding is in little endian, we have to reverse these values to 80 06 00 00
Go to offset 0x1E6 and change the values to 80 06 00 00 till 1E9
We have changed the LBA and number of sectors in MBR, but the OS needs to know the block address of imgfs in MSFLSH50 region
To calculate that, use this method
In Hex calc
MSFLSH50 Block Address = imgfs partition starting address / 20000 (see post #8 for screenshots, shown here is for Diamond)
e.g. (imgfs starting address) 340000 (shown above) / 20000 = 1A
Go to offset 0x81C and change the value to 1A
Save and close the os.nb.payload file in hex editor. Insert the new XIP into this file using this command
“insert.exe -i xip_out.bin -o OS.nb.payload -d 0x00020000 -s 0x00320000” (check your insert start address, shown here is for Diamond) (ignore this if the XIP is already inserted and shifted to this location with this size)
The value (02) seen at hex offset 0x1BF should not be changed or touched since that value tells the OS that first partition starts from the third Sector of the ROM (0x800 (sector size) + 0x800 = hex offset 0x1000) Currently the reduced ULDR partition starts from third sector
Now create the OS.nb from the edited OS.nb.payload to be used as template for cooking using this command
“nbmerge.exe –kaiser (check your device) OS.nb” (without -conservative switch)
NOTE
For best results directly use the OS.nb.payload as template for cooking without merging it into OS.nb. For this you will need to edit the CreateROM.bat
Note the change in red and delete the blue lines from this bat file
copy ROM\OS.nb.payload temp\OS.nb.payload
..\TOOLS\NBSplit -kaiser OS.nb
Rem rename os.nb.extra os-new.nb.extra
!Aman!'s awesome tutorial on removing ULDR partition from devices which don't have the FAT partition (part03) can be refered here: http://forum.xda-developers.com/showthread.php?t=446506
Screenshots of MBR and MSFLSH50 Regions
MBR Region
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
MSFLSH50 Region
Attached these images in Pictorial.zip with post #1 for offline reference
Gain more Storage Space with LZX compression
Thanks to:
spocky12 for cecompr_nt.dll (attached)
ivanmmj for cecompr.dll (attached) This module supports LZX compression as well as the default XPR algorithm
Replace the cecompr.dll found in the OEMXipKernel (or whichever folder you have your XIP modules) with the attached cecompr.dll module that supports LZX compression
The LZX compression takes a load of your RAM while cooking which makes the continuing IMGFSFromDump tool crash. To avoid that replace the attached cecompr_nt.dll file found in “Tools/IMGFS” folder of your kitchen
Pause your kitchen process right after it extracts the IMGFS.bin and before it inserts the files into it. (A simple “PAUSE” in the batch file will suffice). Then open up your IMGFS.bin in hex editor of your choice and search for the string "XPR". Replace the FIRST one, FIRST & ONLY ONE with "LZX". Close the hex editor, save the file and let your kitchen continue with the cooking
After flashing the ROM cooked with this module should give you approx. 10MB more space in the storage memory
Original Posts:
ivanmmj: http://forum.xda-developers.com/showpost.php?p=3678382&postcount=877
spocky12: http://forum.xda-developers.com/showpost.php?p=3690996&postcount=904
Space for Donors
High value real estate space for donors for all my work on XDA
Special Thanks
Piranha1 $5
Vippie $5
Steven Ellis $10
Guitarguy $5
Ckpv5 $5
Letama $10
!Aman! $5
LoriInWa $10
Noonski $15
Kevin $5
Dogmale $1
Nazaliyah $1
Miscellanous uploads related to XIP porting
Kitchen Files
I use "DiamondKitchen_v0.4" kitchen to cook Diamond ROMs. The XIPInsert file is something that I made to automate the insertion and nbmerge process (well, something automatic is better than complete manual )
If you select to use the XIPInsert batch file then you must have DiamondKitchen_v0.4\XIP\xip_out.bin and DiamondKitchen_v0.4\XIP\OS.nb.payload to use this option, else the existing OS.nb file in \ROM folder will get deleted
Note: The insert values used in the batch file is for Diamond ROMs. Please check and edit these as per your devices
Code:
[B][U][I]!COOK.cmd[/I][/U][/B]
Modified to provide options to include the below batch file or to continue without it
Also included necessary warning
Code:
[B][U][I]8a.XIPInsert.bat[/I][/U][/B]
@echo off
cd [COLOR=green]XIP[/COLOR]
..\TOOLS\insert.exe -i [COLOR=green]xip_out.bin[/COLOR] -o [COLOR=green]OS.nb.payload[/COLOR] -d 0x00320000 -s 0x004C0000
..\TOOLS\nbmerge -kaiser OS.nb
copy OS.nb ..\ROM\OS.nb
del OS.nb
del *.payload
del *out.bin
exit
Deprotecting ROMs: My friend, Ervius has made a small tool to "deprotect" a protected ROM , here: http://forum.xda-developers.com/showthread.php?t=465642
First to say THANKS
Cheers
and second to say this is real hard work...but u have done it bro..
congrats
another amazing work by the XIP Master
Thanks for sharing the info, ababrekar! I'm sure this will help out many people (myself included ).
Bite Down and Don't Give Up.
Sounds like someone i know from.... hey, it is you!
Good Job,
ababrekar said:
Use this command for inserting the xip_out.bin into the .payload (presuming you already have the shipped OS.nb.payload file in the same working folder
insert.exe -i xip_out.bin -o OS.nb.payload -d 0x00320000 -s 0x004C0000
Check these values with your device imgfs since in Diamond the XIP starts at 0x00320000 and the imgfs starts at 0x007A0000, but for some reason the imgfs signature in Diamond is at 0x007E0000
Click to expand...
Click to collapse
just to make it more clear, the value for "-s"= (starting offset of imgfs - starting offset of XIP)
PS: wonderful job writing this guide brother
Ouch - too much like work, but it is nice to know how to do it.
Thanks for your effort!
Best regards,
-boggsie
So, how does one get hooked into the flow of new releases?
Perhaps would be a good idea to use one of your reserved posts as a repository of good XIP.BIN files with versions and info about the ROM extracted, so all we can use in our ROMs... only a tought...
jcespi2005 said:
Perhaps would be a good idea to use one of your reserved posts as a repository of good XIP.BIN files with versions and info about the ROM extracted, so all we can use in our ROMs... only a tought...
Click to expand...
Click to collapse
That is a good idea but I'll do that for posting the unedited XIP.bin files from dumped ROMs since the xip_out.bin I build would be for my device. People wont want to ruin their ROMs with someone else's ported XIP, right?
Hey guys!
After reading through more pages than I'd like to admit and literally trying for hours I have to open this thread hoping that you guys can manage to figure out, what I did wrong trying to create my own WM6.5-ROM for my Blackstone phone.
I used osKitchen 1.1.3 and tried the following packages:
Topaz - WWE OEM/ROM/XIP/NK, 6.5 kernel
28230 [NEW] All Resolutions (DPIs), All Languages (Locales)
All_New SYS_4 - New Sys 28230/23534
I get an error stating the XPI or OEM versions seem incompatible.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Edit:
Also, how can I test my ROMs without flashing them to my precious phone?
I already got the Windows Mobile SDK 6 and the emulator v3 for win x64 but I don't see how it should work.
What am I doing wrong?
You can't use the stuff for the topaz, the kernel has to be the one for blackstone, same for the xip. Also, the folder structure for the XIP is incorrect, the xip must go in a folder with the number of windows mobile build as name. Try importing a blackstone ROM and starting from that.
So, I experimented some further and using
All_New SYS_1 - New Sys 24001/23519/23102/23096
and
-HTC Touch HD-MR_2009-RUU_BlackStone_HKCSL_WWE_1.57.831.1_Radio_52.64.25.34_1.14.25.24_Ship
I even got to cook my own ROM.
But on flashing my Blackstone phone, after 1%, it stops, stating the ROM is not suitable for the device.
View attachment 285098
What did go wrong?
You want to flash without HardSPL?
I used USLP. Is that wrong?
Why does BlackstonecustomRUU state that my ROM consisting only of files for Blackstone is not suitable for the phone?
Ok now... since finally IoDa00 helped me get the what I hope are the right ingredients (for 24001), I managed to cook my own ROM AND even got to flash it to my Blackstone phone successfully (that is without any error messages).
But now, when the Windows Screen should be visible, there is just nothing and the phone is unresponsive...
What did go wrong?
Same prob here!
Even I am stuck with the same issue. I cooked a ROM for my Artemis using the files from Shady's 28005 original microsoft kitchen. I was able to cook the ROM and it loaded on my phone without any errors. But since the, the phone hangs at first screen.
Any advice!
Here's the log of rom cooked:
======================================
Cleaning up
Starting a new build process. Actual Locale: 0409
Configuring kitchen to USE:
DPI: 96
ResH: 240
ResV: 320
Device name: Artemis
Native 6.5 Kernel: False
Creating folders
Copying OEMs...
Copying XIP...
Copying SYS...
Copying EXT and scanning for all add2* files
Applying ROM tweaks...
OK, Letting Device-specific preparations...
Deleting unneeded resolutions in Titanium
Running Platformrebuilder
----------------------------
Running Tool: Resources\Tools\platformrebuilder.exe
Working Folder: Build
Arguments:
PLATFORMREBUILDER Copyright (c) 2008-2009 bepe Feb 15 2009 22:53:49
Building for old kernel!
Build: Premium
Locale: 0409
Preparing release structure...
... done!
Collecting standard packages and initializing hives...
XIP: 3 packages
IMG: 77 packages
... done!
Processing standard packages...
MSXIPKernelLTK
MSXIPKernel
OEMXipKernel
SIM_TKit
SMIME
AlarmSounds
Bth_A2DP
LockscreenEA
DRM
CHome
MediaOS
RUNTIMES
GPSID
SMS_Providers
ppgprov
OneNote
ConfettiCore
BaseAppsFiles
MediaOSFiles
Riched20
IMPORTANT - NetCF3.7.8345.00
Entertainment
Lockscreen
SQLCE
BronzeEA
OSFiles
SYSTEM_DEFAULT_FONTS
bronze
BROWSINGCORE
CommonEA
Metadata
OS
BROWSING
BaseApps
Webview
Office
browsingie
Shell
PhoneRedist
Redist
Phone
Bluetooth
INTERNETSHARING
Base
Base_Lang_0409
Bluetooth_Lang_0409
browsingie_Lang_0409
BROWSING_Lang_0409
Bth_A2DP_Lang_0409
CHome_Lang_0409
Entertainment_Lang_0409
MediaOS_Lang_0409
Office_Lang_0409
OneNote_Lang_0409
PhoneRedist_Lang_0409
Phone_Lang_0409
Redist_Lang_0409
16 - QuickGPS
16 - QuickGPS_Lang
3 - Comm Manager
3 - Comm Manager_Lang
5 - Ringtone Plugin
5 - Ringtone Plugin_Lang
IMPORTANT - Camera + Driver
IMPORTANT - Camera + Driver_Lang
IMPORTANT - Control Panel
IMPORTANT - Control Panel_Lang
IMPORTANT - DRMMiddleware
IMPORTANT - DShow
IMPORTANT - FILES FROM SYS 28005
IMPORTANT - mHubVO
IMPORTANT - Mortscript
IMPORTANT - OEMAPPS
IMPORTANT - OEMDrivers
IMPORTANT - OEMVersion
IMPORTANT - Optimizations
IMPORTANT - Psshutxp
OEM_Lang_0409
OPTIONAL - WLAN + Driver
OPTIONAL - WLAN + Driver_Lang
... done!
Processing extended packages...
zzz_feROM_version_pkg
Failed to parse value name HKEY_CURRENT_USER\ControlPanel\Sounds!!!
... done!
Finalizing and optimizing ROM structure...
... done!
Memory Map...
SLOT 0: 0x02000000 - 0x01df0000 (END: 0x00060000, 0 MODULES)
0x02000000 - 0x01fd0000 - ROM 0
0x01f90000 - 0x01df0000 - ROM 1
SLOT 1: 0x04000000 - 0x026e0000 (END: 0x02020000, 222 MODULES)
RAM IMAGE: 0x8c100000 - 0x8c3ac460
RAM: 0x8c3ad000 - 0x8c3da000 - Used for kernel modules
0x8c3da000 - 0x8fc00000 - 56 MB free
... done!
Donations...
If you're using one of my tools and feel a need to support development
and/or buy me a drink, please feel free to send a donation through PayPal.
Created link in the root of the kitchen.
Updating all files with add2*:
Inserting XIP
----------------------------
Running Tool: Resources\Tools\implantxip.exe
Working Folder: Build\Temp
Arguments: -xip "xip.bin" -payload "OS.nb.payload" -PP 8 -uldr -imgstart 0 -nocert
Implantxip & Payload Resizer v. 1.1 by ervius!!!
BLOCKS SIZE IS: 00010000
ROM Block is : 00000200
ImgStart MIN Val. SETTED - ULDR Reducing...
....................................
Preparing payload to be resized.....
....................................
Before:
XIP.BIN Target Size: 002AC460 AdjSize: 002AFFFF
ULRD in Payload Start:00000400 Size:0030FBFF End:0030FFFF
XIP in Payload Start:00310000 Size:0030FFFF End:0061FFFF
IMG in Payload Start:00620000 Size:0000FFFF End:0062FFFF
FAT in Payload Start:00000000 Size:00000000 End:00000000
After:
XIP.BIN Target Size: 002AC460 AdjSize: 002AFFFF
ULRD in Payload Start:00000400 Size:0000FBFF End:0000FFFF
XIP in Payload Start:00010000 Size:002AFFFF End:002BFFFF
IMG in Payload Start:002C0000 Size:0000FFFF End:002CFFFF
FAT in Payload Start:00000000 Size:00000000 End:00000000
XIP PagePool Sign not Found!
XIP PagePool from: 4 Mb, to: 8 Mb
XIP Successfully Nocert patched!
Payload resized and XIP Inserted into: OS.nb.payload
Getting IMGFS from NB
----------------------------
Running Tool: Resources\Tools\imgfsfromnb.exe
Working Folder: Build\Temp
Arguments: "os.nb.payload" "imgfs.bin"
ImgfsFromNb 2.1rc2
Sector size is 0x200 bytes
ImgFs partition starts at 0x002c0000 and ends at 0x002d0000
Dumping IMGFS at offset 0x002c0000 (size 0x00010000)
Done!
Generating IMGFS from DUMP
----------------------------
Running Tool: Resources\Tools\imgfsfromdump.exe
Working Folder: Build\Temp
Arguments: "imgfs.bin" "imgfs-new.bin"
ImgfsFromDump 2.1rc2 TURBO with Prefetching and MultiThreading Support, by Plax
Using compression type 'LZX'!
Sector size is 0x200
Total Sectors: 0x119d2
And putting IMGFS into NB
----------------------------
Running Tool: Resources\Tools\ImgfsToNb.exe
Working Folder: Build\Temp
Arguments: "imgfs-new.bin" "OS.nb.payload" "OS-new.nb.payload" -bigstoragemove
ImgfsToNb 2.1rc2
Using bigstorage mode
Sector size is 0x200 bytes
Writing imgfs to offset byte 0x2c0000, sector 0x1600
Padding ImgFs from 0x233a400 bytes (0x119d2 sectors)
to 0x2340000 bytes (0x11a00 sectors)
Not conservative mode. Changing imgfsEnd from 0x2d0000 to 0x2600000
Partition entry before:
File System: 0x25
Start Sector: 0x00001600
Total Sectors: 0x00000080
Boot indicator: 0x00
First Head: 0x00
First Sector: 0x01
First Track: 0x2c
Last Head: 0x7f
Last Sector: 0x01
Last Track: 0x2c
Partition entry after:
File System: 0x25
Start Sector: 0x00001600
Total Sectors: 0x00011a00
Boot indicator: 0x00
First Head: 0x00
First Sector: 0x01
First Track: 0x2c
Last Head: 0x7f
Last Sector: 0x01
Last Track: 0x25f
ImgFs Flash Region log blocks was 0x1, now is 0x234
No Storage Flash Region found!
Done!
Generating NBH
----------------------------
Running Tool: Resources\Tools\htcrt.exe
Working Folder:
Arguments: /buildrom ".\FLASH\ferom.htcrtproj" ".\FLASH\RUU_Signed_0409.nbh"
Cleaning again
DONE! Now you can flash!
======================================
Hey Ondraster... im currently a user of EVK and want to change to OSKitchen... so i did everything to set the SYS as the doctor said... my oem and EXT pkgs too... but i set UPX compression in EXT pkgs... and the log screen turns white like it stops working.. and it says "Doing UPX on EXT directory" and it stucks i leave it almost 30 minues and nothing.... still stucks. I did something wrong?
Thanks for all your pacience man!
Part of my log
Code:
Copied the directory "Sources\EXT\Must_to_Add\AdvancedConfigurationToolv33" to "Build\EXT\Must_to_Add\AdvancedConfigurationToolv33"
Copied the directory "Sources\EXT\Must_to_Add\AdvancedNetwork_1_0_9_0" to "Build\EXT\Must_to_Add\AdvancedNetwork_1_0_9_0"
Copied the directory "Sources\EXT\Must_to_Add\Apps Flashlight" to "Build\EXT\Must_to_Add\Apps Flashlight"
Copied the directory "Sources\EXT\Must_to_Add\Arcsoft_MMS_5_0_31_98R5" to "Build\EXT\Must_to_Add\Arcsoft_MMS_5_0_31_98R5"
Copied the directory "Sources\EXT\Must_to_Add\BOOTLAUNCHER_1_0_35330_2_IOLITE" to "Build\EXT\Must_to_Add\BOOTLAUNCHER_1_0_35330_2_IOLITE"
Copied the directory "Sources\EXT\Must_to_Add\BT_FTP 1_2_29968_1" to "Build\EXT\Must_to_Add\BT_FTP 1_2_29968_1"
Copied the directory "Sources\EXT\Must_to_Add\ConnectionSetupDB" to "Build\EXT\Must_to_Add\ConnectionSetupDB"
Copied the directory "Sources\EXT\Must_to_Add\ConnectionSetup_HTC_ALL" to "Build\EXT\Must_to_Add\ConnectionSetup_HTC_ALL"
Copied the directory "Sources\EXT\Must_to_Add\DeviceUpdate_v2.1.1.1" to "Build\EXT\Must_to_Add\DeviceUpdate_v2.1.1.1"
Copied the directory "Sources\EXT\Must_to_Add\Dopod_SIM_Manager_1436365_by_NiTroGen" to "Build\EXT\Must_to_Add\Dopod_SIM_Manager_1436365_by_NiTroGen"
Copied the directory "Sources\EXT\Must_to_Add\Dummy_FWUPDATE" to "Build\EXT\Must_to_Add\Dummy_FWUPDATE"
Copied the directory "Sources\EXT\Must_to_Add\IP_fix" to "Build\EXT\Must_to_Add\IP_fix"
Copied the directory "Sources\EXT\Must_to_Add\RingtonePlugin_1_00_080624_2" to "Build\EXT\Must_to_Add\RingtonePlugin_1_00_080624_2"
Copied the directory "Sources\EXT\Must_to_Add\USBTOPC" to "Build\EXT\Must_to_Add\USBTOPC"
Copied the directory "Sources\EXT\OLD_OEM\Files" to "Build\EXT\OLD_OEM\Files"
Copied the directory "Sources\EXT\SIP\Keyboard Layout 8525" to "Build\EXT\SIP\Keyboard Layout 8525"
Copied the directory "Sources\EXT\SIP\MSIMAR_96dpi_BlkSkin" to "Build\EXT\SIP\MSIMAR_96dpi_BlkSkin"
Copied the directory "Sources\EXT\SIP\SIPChange" to "Build\EXT\SIP\SIPChange"
Copied the directory "Sources\EXT\Skins_Themes_UI\Z_UI change for 6.5.1" to "Build\EXT\Skins_Themes_UI\Z_UI change for 6.5.1"
Copied the directory "Sources\EXT\Titanium_plugins\lpaso TitaniumCustomizer" to "Build\EXT\Titanium_plugins\lpaso TitaniumCustomizer"
Copied the directory "Sources\EXT\Tweaks\App Buttons" to "Build\EXT\Tweaks\App Buttons"
Copied the directory "Sources\EXT\Tweaks\Performance" to "Build\EXT\Tweaks\Performance"
Copied the directory "Sources\EXT\Tweaks\Registry - Enable Auto TimeZone from Network and icons" to "Build\EXT\Tweaks\Registry - Enable Auto TimeZone from Network and icons"
Copied the directory "Sources\EXT\Tweaks\touchresponse_azharsunny_enchanced sensitivity" to "Build\EXT\Tweaks\touchresponse_azharsunny_enchanced sensitivity"
Copied the directory "Sources\EXT\Tweaks\zz_MODS 651" to "Build\EXT\Tweaks\zz_MODS 651"
Copied the directory "Sources\EXT\Tweaks\z_Icons" to "Build\EXT\Tweaks\z_Icons"
Copied the directory "Sources\EXT\Utilities\xTask" to "Build\EXT\Utilities\xTask"
Doing UPX on EXT directory
Device Hermes, Native 6.5, build 21644.
EDIT:
well i disabled the upx on ext pkgs and now i have platform rebuilder error crash... some XIP or OEM modules incompatibility
BTW as i have native kernel it must say native 6.5 kernel : true... but mine says false :s
am i doing something wrong?
You should not have any others foders in your oemapps, maybe this is the problem. It was in my case
you can not test roms on emulator, only on your phone
sory for my english
somebody helps me Kane159 the define.txt was wrong set...
Nobody xplains how to use it...