[GUIDE] How to port Stock/GB/CM7/CM9/ICS/CM10/JB Based ROMs [Update: Sept.25.2012]

Search This thread

Klyupp

Senior Member
Nov 28, 2009
252
35
Amsterdam
Thank you really musch for making this tutorial. I'm wondering now, there is no CM7 or AOSP Gingerbread for the galaxy note. So does that mean I can't port CM7 from the S2 to my galaxy note?

edit: Or can I use a stock samsung firmware (android 2.3.6) for the note as a base and port CM7 based on 2.3.6?
 
Last edited:

Peteragent5

Senior Member
Jan 1, 2012
1,280
2,028
Richmond
Thank you really musch for making this tutorial. I'm wondering now, there is no CM7 or AOSP Gingerbread for the galaxy note. So does that mean I can't port CM7 from the S2 to my galaxy note?

edit: Or can I use a stock samsung firmware (android 2.3.6) for the note as a base and port CM7 based on 2.3.6?
You can try using Stock as a base :) But I don't guarantee it'll work

can i port stock framework to cm7?

And how can I unpack kernel( kernel is included in boot.img no?) is a script for that..? or what?:D
Ummm I'm not sure if you can port Stock Framework to CM7. CM7 should be a pure CM7. But if you want to try you can :)

Here's a Too to unpack boot.imgl:
http://xdaforums.com/showthread.php?t=1494036
But you will need Windows and Cygwin
You also need to find the base and pagesize and command line (If there is) for your device

Here's a Guide for the Above:
http://www.freeyourandroid.com/guide/extract-edit-repack-boot-img-windows
 
Last edited:

Peteragent5

Senior Member
Jan 1, 2012
1,280
2,028
Richmond
Oops sorry guys. Maybe I should reword the title to:
[GUIDE] How to port GB/CM7/Stock/ Based Roms to your Device
And an update to this Guide might come, making it more Eye candy, easier to read and more chances of successful porting :D
 

MrAwesomePT

Member
Jan 1, 2012
40
13
Almada
I've got an HTC Explorer and want to port CM7 to it, but I'm a huge noob on this stuff as this is my first Android and my old Nokia didn't need this much messing around. I could just get a CM7 rom from ANY ARMv7 android and replace the stuff you talked in the post from my current rom and it will work? Or will the sense mess it all up? Doesn't the phone where I'm getting the CM7 Rom needs to have similar specs? like display resolution and whatnot?
I'm wan't to try it, but the idea of getting a brick scares the crap out of me xD
 

lpjunior999

Senior Member
Nov 26, 2011
78
6
Chicago
I was going to try this, but none of this makes any sense. The rom I'm porting is my BASE and the stock device rom I'm editing is PORTED? I was going to follow this to port CM7 to my Droid Charge from the Fascinate, but am I supposed to change all the instances of SCH-150 to Fascinate in the build.prop?

You gotta either do a video or rewrite this because as-is this is obtuse. Has anybody successfully ported anything with this?
 

Peteragent5

Senior Member
Jan 1, 2012
1,280
2,028
Richmond
I've got an HTC Explorer and want to port CM7 to it, but I'm a huge noob on this stuff as this is my first Android and my old Nokia didn't need this much messing around. I could just get a CM7 rom from ANY ARMv7 android and replace the stuff you talked in the post from my current rom and it will work? Or will the sense mess it all up? Doesn't the phone where I'm getting the CM7 Rom needs to have similar specs? like display resolution and whatnot?
I'm wan't to try it, but the idea of getting a brick scares the crap out of me xD

Well the screen resolution does matter a bit. Just change the LCD density in the build.prop to your Device's LCD density. For the best port result, your Ported and Base should be the same MDPI, HDPI, or LDPI

Ok, so if your Ported is CM7, what will your base be? You could try using a stock Rom as your base :)
 

Peteragent5

Senior Member
Jan 1, 2012
1,280
2,028
Richmond
I was going to try this, but none of this makes any sense. The rom I'm porting is my BASE and the stock device rom I'm editing is PORTED? I was going to follow this to port CM7 to my Droid Charge from the Fascinate, but am I supposed to change all the instances of SCH-150 to Fascinate in the build.prop?

You gotta either do a video or rewrite this because as-is this is obtuse. Has anybody successfully ported anything with this?

Lol yeah I'll do an update. But meanwhile, try to understand and reread again :)
 

MrAwesomePT

Member
Jan 1, 2012
40
13
Almada
I've tried to port CM7, but it failed... But during the process there where a few steps that I wasn't sure about...
First of all, I'm using a HTC Explorer (ARMv7) and using JaggyRom as my BASE.
I went to CM page and downloaded a HTC Desire S (ARMv7) ROM to use as PORTED.

I didn't had any camera.apk in my BASE (I guess the camera will not work properly xD).
When I had to edit the build.prop and the updater-script files, there were a lot of command lines in BASE that didn't had a matching line in PORTED (ex: I had some ro.htc... lines in build.prop BASE and there where no ro.htc... lines in build.prop PORTED).
Should I had to PORTED the lines that are missing? Or just update the ones that exist to the right values?

In the updater-script file from BASE there were a lot more "symlinks" lines too... These 2 steps are confusing as hell =\

Thank you for reading :D
 

MrAwesomePT

Member
Jan 1, 2012
40
13
Almada
Yea I'll keep trying. If i can't do it I'll try another Base because this isn't even the stock rom... It already had Apps2SD and other stuff that require the SD card to have a partition and whatnot... So when I get a stock Rom I'll keep trying it :D
 

Klyupp

Senior Member
Nov 28, 2009
252
35
Amsterdam
Peteragent5, great your helping everyone so much. I've tried porting CM7 to my galaxy Note but also wasn't able to fully understand your guide, would be great if a couple of things are going to explained a bit more in depth. Also, this all is not possible with ICS roms?
 

w0lf215

Senior Member
Oct 21, 2011
395
120
First of all THANKS for the guide! Have been unable to find one this detailed. I still can't get this to work though.. Is this the same process used for ICS based ROMS? I keep getting animation bootloops.. boots to the animation fine but just chills here infinitely.

Ive tried porting 2 different ROMS(many times each..) and get the same issue each time. Im trying to port to a Motorola Photon, an ARM-7 device and tried Roms from different devices(both ARM-7) but can't get it to work. Is there anything differently I need to do for ICS ports? Using CM9 as a base and trying to port other ICS based ROM. And do you have a tool to pull apart kernels with Windows 7(don't have linux at the time being) Ive followed several tutorials and they all lead me back to bootloops.. and idk how to logcat it or diagnose what im missing here..
 
Last edited:

PipelinerArd

Senior Member
Aug 1, 2011
906
1,968
GB
meettomy.site
First of all THANKS for the guide! Have been unable to find one this detailed. I still can't get this to work though.. Is this the same process used for ICS based ROMS? I keep getting animation bootloops.. boots to the animation fine but just chills here infinitely.

Ive tried porting 2 different ROMS(many times each..) and get the same issue each time. Im trying to port to a Motorola Photon, an ARM-7 device and tried Roms from different devices(both ARM-7) but can't get it to work. Is there anything differently I need to do for ICS ports? Using CM9 as a base and trying to port other ICS based ROM. And do you have a tool to pull apart kernels with Windows 7(don't have linux at the time being) Ive followed several tutorials and they all lead me back to bootloops.. and idk how to logcat it or diagnose what im missing here..

+1 I also tried porting cm9 from desire s to my inspire and I get stuck at splash screen..:(
 

Top Liked Posts

  • There are no posts matching your filters.
  • 462
    Code:
    /*
     * ~ Please READ ME ~
     *
     * I do not guarantee any successful porting. I am not responsible
     * for bricked devices, dead SD cards, or a broken device. [B]YOU[/B] are
     * choosing to make these modifications, and if you point the finger
     * at me for messing up your device, I will laugh at you. But I will try
     * my best to explain all the necessities, so you won't mess up your Device.
     *
     * ~ END OF AGREEMENT ~
     */

    Before we start, let's read the Title of this Guide. Notice it says: based
    This means, if you do not have a GB/ICS/JB already compiled for your device, then this Guide is useless for you.
    Android Source | Compile GB | Compile ICS | Compile JB ~ Thanks dastin1015 |- Building/Compiling - Durations

    Before you a port a ROM, make sure you asked permission from the Developer!

    This Guide applies the same principle for porting the following: Sense, Lewa OS, JoyOs, MIUI, LiGux OS, etc...

    What you'll need:



    Notes:
    • I will be referring to the following:
      • BASE = The GB/ICS/JB ROM made for your Device only.
      • PORTED = The ROM you are trying to port from.
    • BASE and PORTED must be the same CPU. e.g. ARMv7, ARMv6, ARMv5
    • You must have the same settings in Notepad++ like mine.
    • Ignore the procedure, if the file or folder is not present!
    • BASE & PORTED should be the same Android version.
    • If you are porting a custom GB ROM, then use a GB BASE, the same goes for ICS and JB
    • Make sure both BASE & PORTED are deodexed (It's hard to port an odexed ROM)
    • Final ROM is inside PORTED Folder
      (Don't get confused! This is a Major change from the previous Guide because this method is a lot faster and easier)



    Inside PORTED:​

    Remove kernel:
    • boot.img | zImage | kernel.sin | etc...

    Remove the following inside /system:
    • cameradata
    • tts
    • usr
    • vendor
    • firmware
    • modules
    • wifi
    Now you get 2 options:
    1. Delete bin & xbin & lib folder, but keep libandroid_runtime.so inside /system/lib
    2. Keep bin & xbin & lib folder
    Explanation:
    1. If PORTED has no tweaks or addons to those folders.
    2. If PORTED has tweaks and addons.
    Remove every folder inside /system/etc except:
    • init.d
    • permissions
    • license

    Remove the following inside META-INF:
    • CERT.RSA
    • CERT.SF
    • MANIFEST.MF

    Remove: META-INF/com/google/android/update-binary



    Inside BASE:​

    Move kernel to PORTED:
    • boot.img | zImage | kernel.sin | etc...

    Delete libandroid_runtime.so inside /system/lib

    Move the following inside /system to PORTED:
    (If prompted, select YES to copy and Replace all)
    • cameradata
    • bin
    • lib
    • tts
    • usr
    • vendor
    • firmware
    • modules
    • wifi
    • xbin
    (If prompted, select YES to copy and Replace all)

    Move everything inside /system/etc
    To: PORTED's /system/etc
    (If prompted, select YES to copy and Replace all)

    Move: META-INF/com/google/android/update-binary
    To: PORTED's META-INF/com/google/android/

    For ICS & Newer:
    Move the following inside /system/media to PORTED's media:

    • LMprec_508.emd
    • PFFprec_600.emd



    build.prop​

    Inside PORTED:
    Open /system/build.prop
    Copy & Replace the following:

    • ro.modversion
    • ro.cm.version
    • ro.config.ringtone
    • ro.config.notification_sound
    • ro.config.alarm_alert
    • ro.config.sms_received_sound
    • ro.config.sms_delivered_sound
    • persist.sys.themeId
    • persist.sys.themePackageName
    and anything similar to that, to: BASE's build.prop

    For MIUI:
    Add & Make sure the following values are like this:

    • ro.build.id=MIUI
    • ro.build.display.id=MIUI x.x.x
    • ro.build.version.incremental=x.x.x
    • ro.config.ringtone=MI.ogg

    For Lewa OS:
    Add & Make sure the following values are like this:

    • ro.build.display.id=LeWa_ROM_DeviceNickname_xx.xx.xx
    • ro.lewa.version=LeWa_ROM_DeviceNickname_xx.xx.xx
    • ro.lewa.device=DeviceNickname
    • ro.lewa.swapper.part_path=PORTED's_Value
    • ro.lewa.swapper.flash_swappiness=PORTED's_Value
    • ro.lewa.swapper.sd_swappiness=PORTED's_Value
    • ro.error.receiver.system.apps=com.lewa.fc
    • ro.error.receiver.default=com.lewa.fc

    Make sure the following is for your Device:
    • rild.libpath=
    • rild.libargs=


    Inside BASE:
    Open /system/build.prop
    Highlight from:
    ro.build.tags=
    to: # ADDITIONAL_BUILD_PROPERTIES
    Shown in this picture
    Copy & Replace that highlighted part to: PORTED's build.prop's highlighted part

    Copy everything from: # ADDITIONAL_BUILD_PROPERTIES
    To: the end of the file
    Paste it to PORTED's build.prop
    Shown in this picture



    For XPERIA devices:
    The whole build.prop is untidy and filled with tweaks and addons.
    To edit an XPERIA build.prop you really just need to use your common sense.
    Make sure you follow the above and just decide on your own on what to do ;)



    For HTC devices (Sense):
    The whole build.prop is filled with tweaks, addons and extra libs values.
    To edit an HTC build.prop you really just need to use your common sense.
    Make sure you follow the above and just decide on your own on what to do ;)



    updater-script​

    Inside BASE:
    Move the following, to PORTED:
    (If prompted, select YES to copy and Replace all)
    • META-INF/com/google/android/update-binary
    • META-INF/com/android/metadata
    • META-INF/com/android/otacert

    Open: META-INF/com/google/android/updater-script
    Replace the following values, to PORTED:
    • mount("xxxxxx");
    • format("xxxxxx");
    • retouch_binary
    • The installation of the kernel (Something like: assert(package_extract_file("boot.img",)
    • Take note of the added set_perms & set_perm_recursives that PORTED added. Then replace all set_perm and set_perm_recursive from BASE to PORTED. Put back in the noted set_perms & set_perm_recursive you wrote down, to PORTED's updater-script

    For ICS & Newer itself:
    • If the updater-script in PORTED is modded to have tweaks & addons do the set_perms procedure above
    • Now use BASE's entire META-INF Folder. Copy it to PORTED


    For MIUI v4:
    Add the following values to PORTED:
    • set_perm(0, 0, 06755, "/system/xbin/invoke-as");
    • set_perm(0, 0, 0755, "/system/lib/liblbesec.so");


    For AROMA Installer:
    It's actually too hard & time consuming to explain on how to make the script work on your Device when it came from another.
    So it's best to use BASE's META-INF folder, rather than try to make the AROMA Installer work on your Device. (Becuase it will be time consuming)​



    Porting from a different Manufacturer​

    If you are porting from a different manufacturer like, HTC or Sony, you have to check the kernel from them.


    1. Unpack the kernel from PORTED
    2. Unpack your Device's kernel
    3. Open PORTED's init.rc
    4. Replace the BOOTCLASSPATH from PORTED's init.rc to BASE's init.rc
    5. Compare the two files, and addon to your Kernel's init.rc
    6. Packup/Repack your Kernel



    Porting Wallpapers | Lockscreen Wallpapers | bootanimation​

    Usually you get a wallpaper/bootanimation that doesn't fit your device. Here's a quick tutorial on how to port it to your device.

    Download & Install FreeImageConverter then launch it.
    For Wallpapers & Lockscreen Wallpapers:
    1. Click Add Folder... and add the folder were the wallpapers are
    2. Then click Advanced Convert...
    3. Select Exact Size and set the image quality to 100
    4. Set your Width and Height resolutions for your device.
    5. Uncheck Add "Converted by www.freeimageconverter.com"
    6. Select Leave the same file name and leave the Postfix & Prefix empty. Then set your output in a folder.


    For bootanimation:
    1. Extract /system/media/bootanimation.zip OR /data/local/bootanimation.zip OR /system/customize/resource/bootanimation.zip (For Oxygen ROM, the bootanimation is built into the framework-res)
    2. Do the steps above
    3. Move the new resized folder(s) into your bootanimation workspace
    4. Edit the desc.txt to match your device resolutions
    5. Zip the contents ( folder_name desc.txt )
    6. Set compression method to Store
    7. Delete the extracted bootanimation files
    8. Make sure this new bootanimation.zip is in PORTED



    Logging & DDMS​

    This is very important if your a developer in the Android world. These tools help you debug your device to search for errors or see which processes are running.


    Tutorial - How to Logcat


    Tutorial from Android


    If you want me to help you, don't give me a Logcat from ADB. Instead, give me a screenshot of your DDMS.​



    Review

    • Make sure you did everything inside PORTED first, then work your way up/down to BASE.
    • Did you replace Kernel?
    • Is libandroid_runtime.so from PORTED?
    • Did you edit the updater-script, format & mount values?
    • Make sure dalvik.vm.heapsize is BASE's value inside build.prop
    • Make sure build.prop is mostly for your Device ;)
    • If the Port doesn't boot, try using your own META-INF folder. But backup the previous








    Happy porting! :laugh:
    90
    Frequently Asked Questions

    Q: How do you port a higher CPU ROM to my lower CPU device?
    A: P.M me or any big-name developers. You must already know what to do. The person you P.M will give you extra info... :cool:

    Q: Is it possible to port a lower CPU ROM to my higher CPU device?
    A: I think it'll work (But why would you do this:confused:). If it doesn't boot try changing the DPI values in the build.prop

    Q: How do I make a bigger DPI ROM work on my smaller DPI device?
    A: Resize all PNGs in every app & framework-res using Android Resizer Tool

    Q: Can I Port a smaller DPI device to my device?
    A: Yes. It probably won't run & it wouldn't look good if you did. The icons would be small or if you resized it, the icons would be blurry.​
    9
    Updated the Guide! GO READ! It looks better when I was editing it... :S
    LOL :laugh:
    7
    You say that we can use any ROM as BASE but you don't specify what to use as PORT.
    Can you please clarify that?
    You can port any Rom as long as it's based on CM7/GB/Stock Rom, the same CPU (Armv6, Armv7, Armv5) as your BASE, and it's best to port a Rom from the same manufacturer, if not, you can still do it, just change BOOTCLASSPATH

    there is no /data folder in cyanogen mod from galaxy mini.. wat to do now??
    i m porting cyano from mini to galaxy y
    If there is no data then it's fine to not include it :)

    Peteragent5 your arm7 port rom problem solve from this way?:)
    Lol. No not yet :p
    6
    Added a FAQ section in 2nd post!