Jump to content

[Tutorial] Create your own Custom Firmware!

Guest prayaas1998

Recommended Posts

Guest prayaas1998

I decided to compile a tutorial for those people who want to do something adventurous. How about making your own custom firmware? It definitely isn’t Rocket Science. To begin with, we’ll learn some terminology.

OFW - Official/Original FirmWare

CFW - Custom/Cooked FirmWare

Cooking - Customizing

MCU - It is the core part of your firmware. Maximum stuff is included in it if it's not repartitioned. Most CFWs would be repartitioned. Repartitioning gives us more space to put in our stuff in the section of the firmware we can easily modify.

PPM - It consists of the ROFS files. They are the ones that can be modified without causing much damage to the phone.

APE - It is the UDA file of the firmware. It goes to the C: drive (Phone Memory) of your phone. Thus it's better to leave it untouched if you want sufficient free phone memory.

Mods - Modifications. Any ready made file, which on adding to your ROFS files will bear an impact on the phone. eg. A speed mod might help you increase your phone's speed.

Brick - Death of your phone due to improper modification of files.

Note: Should you need any more help, leave a comment.

Firmware Tools

Navifirm – Download all your OFWs

Nokia Firmware Editor (NFE 0.3) – ROFS2 editor

Nokia Cooker – Lets you edit UDA directly

Nokia Editor Beta 7 – ROFS2, UDA editor (requires 3rd party software) Very slow (for me atleast)

Nokia Firmware Cleaner – Lets you remove certain components from your CFW to free space.

SisContents - Will help you integrate an app in your CFW.


First of all, modifying the Core file is extremely dangerous. The core undergoes a hash check which will fail if we modify it. Ofcourse there are new tools to modify core too, but I prefer modifying ROFS. Safest way. Now, ROFS is of two types. ROFS2 and ROFS3. The core file contains another type - the ROFS1. In some older phones, you might find ROFX too.

When we deal with CFWs, we mostly prefer repartitioned ones. The reason was explained above. In repartitioned CFWs, there exists no ROFS3. Instead, the ROFS3 is put into Core. To repartition, we needed to modify core. Then hash check would fail, so we added an unmodified ROFS3 which has a valid hash, into Core. The ROFS1 in the repartitioned files in in ROFS2 itself.

So, we'll we talking basically about editing ROFS2, and UDA.

Whatever we edit in the ROFS2 goes to drive Z: of your phone. This is a hidden drive that is Read-Only. You can't change it from the phone itself. To modify it, you have to modify the files in ROFS2 and then reflash your phone.

Changes in UDA go to C: (Phone Memory). Hard resetting might wipe away all your C: files. But, if you want that they shouldn't, add all the files you don't want to be wiped off to 100059c9/exludelist.txt in the UDA.

The ROFS2 of the OFW has a maximum size of ~ 33 MB. The repartitioned one has a maximum size (partition size of Z:) of ~110 MB. But then, even it's contents are more. By default you have some 10 MB free on the repartitioned ROFS2. The size if exceeds the partition size, will brick your phone. Thus we have tools like Nokia Firmware Cleaner to remove off the junk.

All the files in the .C00 (core) are first flashed to Z: drive. Don’t try to edit it. You may end up bricking your phone. Then ROFS2 is also flashed to Z: drive but no files except for some bookmarks and some other txt files are overwritten. If anything is overwritten, it results in a brick. So, we do not add mods to Core so that our files do not clash. ROFS3 does the same but is not used in repartitioned files (including C6 and N97 ports). The reason has been explained above. The default theme in OFW is in ROFS3. Since, it has become a part of core, it can not be removed, though hidden.

I personally use Nokia Firmware Editor (NFE 0.3) for editing ROFS2. So I’ll be explaining how to use it in this tutorial.

Having a base for your CFW

A stable codebase is extremely important. So I recommend that you decide whether you want your CFW to be based on OFW, C6, or N97. Each has its advantages and disadvantages. The OFW has the best RAM management. C6 has widgetized homescreen with new features like smart dialer and many more. N97 has widgetized homescreen. Some say it's better than C6 in RAM management. Not my opinion, though.

If you want it to be based on C6 or N97 port, download your files from here first. If you want to base it on OFW, then download the OFW files from NaviFirm. At some places, repartitioned OFW files are also available. It's recommended to use those.

Starting the REAL business

Once you are done with downloading the files, we can start off the REAL deal.

Analyze your files.

The .Vxx file is your ROFS2. It may have a name like “RM-356_52.0.007_prd.rofs2.V01”. Size ~ 100 MB. We’ll be editing it. Follow the steps below.

1) Open NFE 0.3 The window looks like this

Posted Image

2) Now click on Open File. Goto the directory where your files are located. Select it.

[img width=560 height=420]https://lh6.googleusercontent.com/-V-8xf_1am_s/TmDuhNzRFFI/AAAAAAAAAE0/a7qTvDswqu8/s800/NFE2.PNG

3) Click on Extract.

[img width=554 height=420]https://lh3.googleusercontent.com/-9lHC6oabiuA/TmDuh86HspI/AAAAAAAAAFA/GkYLiJT6Db8/s640/Nfe3.PNG

4) After extraction, wait for Done! Ready for Cooking! In the bottom left corner.

5) Close the Window.

6) Open the folder which has the name of the rofs2. It can be found in the folder where NFE exe was located. In my case, the folder is “RM-356_52.0.101_PRD.ROFS2”

7) It contains two sub folders, ROFS2 and Temp. Open ROFS2. Now you have all the files extracted.

[img width=561 height=420]https://lh3.googleusercontent.com/-HIxuYEsVhMc/TmDuiQqJUvI/AAAAAAAAAFI/qEJ5e8MmzKw/s640/NFE5.PNG

8 ) Paste your mods here. Edit whatever you want in this folder.

9) Reopen NFE.

10) Now click “Reload from HDD”

[img width=554 height=420]https://lh4.googleusercontent.com/-yFjsHYYOwjo/TmDuhVU6jTI/AAAAAAAAAE4/ECOP7ssNE-w/s640/NFE%252520-%252520Copy.PNG

11) Click on Repack/Rebuild.

[img width=554 height=420]https://lh5.googleusercontent.com/-gM1D4eojupw/TmDuiIL8asI/AAAAAAAAAFE/mTUKGYk5bV0/s640/NFE4.PNG

12) This process typically takes a few seconds if you have a good RAM and CPU. If the process rb.exe gets a good CPU usage for itself and 200-300 MB free RAM, it takes 5 seconds. Beware! On 1 GB RAM, Windows 7, it took 30 minutes! If your ROFS2 size is greater than partition size, then you will be warned not to flash it to your phone.

13) Now, the repacked, edited ROFS2 is there in the same directory with a _Rebuilt appended to its name. In my case its RM-356_52.0.007_prd.rofs2_Rebuilt.V01. Remove the _Rebuilt by renaming. Now you have your new CFW! Flash it to your phone and enjoy!

Nokia Cooker

Usually we keep UDA empty so that we may get maximum free phone memory. But should you need to add something to it, there it is. The functionality is almost same as NFE.

I'll soon explain that too.

Other modding tools

You might want to integrate an app in your CFW. It’s simple! Use SisContents to do that.


1) Once you have downloaded SisContents, open extsis.exe. The window looks like this.

[img width=512 height=420]https://lh5.googleusercontent.com/-2kP9EFe7Ipk/TmDuijHiOqI/AAAAAAAAAFM/5-T07LwjZss/s640/sis.PNG

2) Click on the open icon (the yellow folder you see above).

3) Go to the directory where you have your sis/sisx file. Open the file. The Window looks like this now.

[img width=512 height=420]https://lh5.googleusercontent.com/-hg0pKgUKeGM/TmDui6ehGUI/AAAAAAAAAFQ/bHpQIWhGJg8/s640/sis2.PNG

4) Click on the Extract button (left to sign)

5) Now the sis/sisx has been extracted to a local folder. The folder automatically gets opened. You have many files with some folders.

[img width=561 height=420]https://lh5.googleusercontent.com/-zoNJ-DxXWhY/TmDujoQGB0I/AAAAAAAAAFY/A9KXqzwcZrw/s640/sis3.PNG

6) As you can see, there are 3 folders. (C_private, C_Resource, C_sys) You have to use Nokia Cooker to paste the contents of these folders in the respective folders in UDA. Had there been no C_ appended, you could have pasted them in ROFS2.

7) Now you have your app integrated.

Using SisContents to extract resources (MIF)

How about using siscontents to extract files from almost unopenable nokia FW files? For that, Click on New, Select the device for which the FW is meant.

Click on the contents icon.

[img width=512 height=420]https://lh3.googleusercontent.com/-WHvEvd7R2iU/TmDuju68hqI/AAAAAAAAAFU/9wNaoEMmh2w/s640/sis4.PNG

Now click on add entry – add file entry. Add the FW mif file you want to edit. Say “Series60Skin.mif”

A resource will appear added to the list. When you double click it, it shows all entries inside the resource files (like images). You can Extract the image, edit it and replace the original image with it. Just click on extract in the left pane, and then make any changes to the image. Now, click on your image. Replace resource in the left pane. Viola!

Using FW Cleaner

1) Open FW Cleaner. Enter the path to your ROFS2

Posted Image

2) A new window opens. Click on the components you want to REMOVE. Next, click on Backup if you want to be on the safer side. Then click on the green plus sign.

Posted Image

3) Click on the Red cross on the right hand side. You'll see a message "Done!"

It's done!

Now you have more free space.

After you are done, flash it to your phone. :)


Never try to downgrade your phone. You might PERMANENTLY kill it. More to be added soon!

Link to comment
Share on other sites

  • Replies 82
  • Created
  • Last Reply

Top Posters In This Topic

Some corrections ( Then ROFS2 is flashed, replacing all core files by ROFS2 files in Z:. ROFS3 does the same but is not used in C6 ports. ) Except some .txt and .dat files no files are replaced OR over written during flashing. The ROFS1 ,ROFS2 ,ROFS3 .exe ,.dll files are packed in such a way no overlapping takes place during flashing. Files can be added in UDA to get in to C drive but need to add all the file directory to the  100059c9/exludelist.txt. If the exludelist.txt is not edited all the files will go in thin air during hard reset. ROFS3 not used due to ROFS1 was replaced by ROFS3 during re partitioning. Thats why the default theme is in the ROFS1 . ROFS3 normally contain default theme. Now you can understand  why i said no file is replaced during flashing. The phone wont start if you flash with ROFS3 because it can not replace or over write the same files in the  ROFS1 contrary to the above  OFW RM-612 V 40 ROFS3  does not contain default theme. De fault theme is in the ROFS2.

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...