How to cook your own Android ROM


You will often hear to Android being referred to as Open Source. This means that the code that makes up the operating system is available for everyone to view, download , and if they wish, edit.

Android is now pretty mature, and having the option of tailoring the OS to your need is incredibly exciting , but something most people don’t even think about doing as they feel they need a degree in Computer Science to even start.

While its true that to truly develop the next CyanogenMod is going to take a fair bit of hard work and knowledge, there are a number of tools available that simplify the process. The easiest way to cook up your own ROM is to use one of the online Kitchens such as UOTKitchen or RomKitchen.

These online resources allow for a point and click interface where you chose the features you want, click generate and it spits out the ROM ready to flash. Before starting this guide it might be a good idea to have a quick hunt about and try out a few ROMS of your own. Online kitchens are great, but don’t offer a huge amount of flexibility or device support, and many of them are not up to date with the latest versions of Android.

In this guide though we are going to go a little deeper but still just basically adding and removing some features as a gentle introduction into building your own ROMs.

  1. Download the tools

    First off we need to navigate to dsixda’s Android Kitchen and download the tool. Its mainly for HTC devices , although others are supported. Depending on your operating system you will also need to install a few extra files.

  2. Download our source

    Next download CyanogenMod for your device from Choose the stable version and remember not to unzip the download.  If you want you could instead download standard Android AOSP from:, although this will involve some command line work.

  3. Run the Kitchen app

    Depending on your operating system the commands may differ slightly, but unzip the Kitchen files , then open up a Terminal or command line and move to that directory. Something like ‘cd user/documents/kitchen’. Once there type ./menu to run the app. You will then see the menu.

  4. Import our base ROM

    You can edit any .zip ROM image file you like , including stock ones. This is great if you want to remove unwanted apps from the image. To import our CyanogenMod ROM move the .zip to the ‘original_update’ folder in the Kitchen directory.

  5. Add ROM image to working directory

    In the menu press 1, then press enter to add the existing ROM to our working directory so that we can edit it. You will be given some options such as making a backup , and then a choice of ROM images within that directory. Choose the

  6. Rename the ROM

    Our first bit of personalization is to rename the ROM. In the Kitchen menu press ‘8’. You will be shown the original name , press ‘y’ and then type in your new name and press enter. This will then show in Settings->About when you boot the ROM.

  7. Add/Remove some Apps

    A common complaint with stock ROMS is that they come bundled with lots of apps that you don’t want. When cooking your own, you can add or remove apps by adding or deleting the .apk file in the system/app folder in the WORKING_myrom directory.

  8. ZipAlign your APKs

    After you have added or removed the apps you want, the next step is to zip align them. This process greatly speeds up access to the applications. In the Kitchen menu press ‘6’ and then press ‘y’. After this check for errors using option 23.

  9. Build the ROM

    Next we need to build the ROM. In the menu press ’99’ and then ‘1’. Make sure to choose ‘y’ when asked to sign the ROM. You can then rename the .zip file to something more personal. The ROM image will then be located in the Output_Zip folder.

  10. Boot the ROM

    Once the file is completed compiling ,copy the zip to the Sdcard and then boot into recovery by holding down the volume while turning on phone. Install as you would any other ROM and watch it load! Now go and try some more tweaks…

  • Lee Smith

    Hi there, I think this is what I sorta want to achieve with my Allwinner A13.

    I previously bought an Allwinner A13 7′ Android tablet for my dad (only £40 was well worth the money for him) until it lost some configuration setting and now the only ROMS i can get to work on it make the touch screen work in reverse or the alignment is slightly out. Ive tried many help forums so thought Id try here too … but everything Ive already tried never got it back like it originally was!

    NO PROBLEM I thought … I’ll buy another one for £40 and see if whatever software/updates/drivers are installed on the new A13 may just work on the old one (so I can also sell the old one on Ebay!)

    THEREFORE I wondered how easy it was to firstly backup the software/drivers from the current working one so that if the same thing happens I can put the working version back on it?

    AND ALSO could I attempt to get the working version software/rom/drivers onto the old one to see if it improves certain aspects of that one?

    I hope someone is able to point me in the right direction!

    Many thanks for reading and apologies for the odd bit of caps… I sometimes thinks it helps if ppl are just scanning posts!



  • Santiago Rodriguez Chávez

    I had a similar issue, what I did was to dump the important partitions as streams and back those up. Partitions are in /dev/block/ and have names nanda, nandb, nandc, etc.
    First you have to determine which partitions you want to backup, for instance dumping the sdcard partition will take a file the size of it (eg. 8GB).

    Android devices have standard partition distributions but AllWinner chose to modify that, what I found in mine is
    nanda – UBoot – Backup
    nandb – Bootloadet – Backup
    nandc – Boot (Linux kernel) – Backup
    nandd – System (Android and drivers) – Backup
    nande – Data (apps and stuff) – Optional

    nandh – Cache – No
    nandj – SDCARD – Optional (better to tar instead of dump or backup via usb-pc)

    Partitions A, B and C are the same for Allwinner and other android devices (as far as I know) and you should back them up.

    You need to ADB Shell into it your device, then check the rest by executing “mount” with no arguments and you’ll see where are system, data, cache and sdcard mounted.

    To dump you can do “cat” or “dd”, I prefer “dd” for no functional reason. You can go either way:
    Get adb shell to get a shell prompt from your device.
    For dd type: dd if=/dev/block/nanda of=/sdcard/nanda_back.img bs=512
    For cat type: cat /dev/block/nanda > /sdcard/nanda_back.img

    When using “dd”, ‘if’ is input and ‘of’ is output, ‘bs’ is block size in bytes, you can safely omit that argument, what this does it read byte by byte the stream specified by ‘if’ and when it gets a block it writes it into the file specified by ‘of’. This example is for backing up nanda, and the output will be stored in the sdcard partition. Substitute nanda for nandb and so on and substitute “/sdcard/” for the path where you want those files written. Then you can just do “adb pull /sdcard/nanda_back.img” and it will copy the resulting backup into your computer.

    Get the file with the backup info into your device for instance with adb: “adb push nanda_backu.img /sdcard/” then run “adb shell” and in the prompt execute the comand for dumping but this time in reverse:
    For dd type: dd if=/sdcard/nanda_backup.img of=/dev/block/nand
    For cat type: cat /sdcard/nanda_back.img > /dev/block/nanda
    Do this for nanda, nadnb, etc.

    Hope it helps.


  • George

    My win7 laptop recognizes my tablet as a media device and gives me direct access to the micro SD card. I can just copy the apk files directly to the card and then run install from the tablet, (developer options activated of course)

  • Camilo Jose Chaves Montilla

    Hello and Thanks in advance. I have a problem and believe me, I havent found a solution here in 2 days and seems like people do it easily but not in my phone… As I know I should:

    1. Root -> done

    2. Get Gapps to the SDCard -> done

    3. go to recovery mode and “install zip from sdcard” -> I dont have this option

    * Installing Gapps app by app gives parsing errors, so I want to install the whole .zip (as I see people do).

    My setup:

    Huawei Y511 + android 4.2.2

    I bought a Huawei Y511 in China, so there is no GAPPS (and I cant find a non-Chinese firmware for my phone), then I rooted and used this page tips to download the GAPPS (android 4.2) to the SDCARD. Every post says “go to recovery mode and install the zip”. Nobody explains this step, but I installed QuickBoot, which takes me to the recovery mode, but there is no “install zip from sdcard”.

    I only see “install using ADB”, but that seems difficult, I preffer the “install zip from sdcard” option.

    (The +Volume button while resetting takes me to a test mode, where I can test stuff, but no recovery options.)

    How can I enable the “install zip from sdcard” option? I am missing a step?

    • bob

      you need a custom recovery, download cwm for your device to your computer and use fastboot (or adb i cant remember) to flash it. Im sure you can find how to do that on google but you should have to type this: [ fastboot flash yourecoveryname.img ] no brackets then just boot into cwm recovery and that option will be there

      • Camilo Jose Chaves Montilla

        Hello Bob, thanks for the reply. I tried room manager, it says there is no CWM for my device. CWM says that in its page too. What to do then to get the “install zip from sdcard” option?

    • munna

      How do u rooted ur mbil can u xplain it pls