[Dev] Development of Non-Carrier Specific Roms [Universal Roms For All Carriers]

Search This thread

incubus26jc

Inactive Recognized Developer
Feb 12, 2009
4,094
3,569
Illinois
Multi-2-1.jpg


Developers,

The Objective of this thread is to create a solution for flashing any rom on any carrier's GS3. (Us/Canada)

Every Rom on Every Carrier Will Be Supported.

Warm Roms developed by Myn, Myself and the rest of the Warm Team will be available on all carriers.

I will keep the OP updated.

Thanks, Incubus



First,

We need to Determine the Diffs and Seperate what each carriers device needs.

We will create an SVN Repo For Carrier Files.

We will Use An Updater.script and include all carrier files with in the Rom.zip and allow the script to determine the device and install the appropriate carrier files.

Any rom dev who wants to use this would place a folder in the rom.zip called "Devices" with all the carrier files seperated by sub-folders (Sprint, Verizon etc...)
The script would call for "Sprint" and install the carrier files from that sub- folder overtop of any carrier files that a rom might have in it. (boot.img, apns, libs etc...)

Example updater.script from Warm twopointthree on the Evo 3d. Worked very well.

Code:
#Mounting
ifelse(
    getprop("ro.product.device") == "shooter",
    (
        mount("ext4", "EMMC", "/dev/block/mmcblk0p23", "/system");
    )
);


ifelse(
    getprop("ro.product.device") == "shooteru",
    (
        mount("ext4", "EMMC", "/dev/block/mmcblk0p22", "/system");
    )
);


ifelse(
    getprop("ro.product.device") == "shooter",
    (
        mount("ext4", "EMMC", "/dev/block/mmcblk0p24", "/data");
    )
);


ifelse(
    getprop("ro.product.device") == "shooteru",
    (
        mount("ext4", "EMMC", "/dev/block/mmcblk0p23", "/data");
    )
);

#Install Device Files
ifelse(
    getprop("ro.product.device") == "shooter",
    (
        package_extract_dir("devices/shooter/system", "/system");
    ),
        package_extract_dir("devices/" + getprop("ro.product.device") + "/system", "/system");
);

ifelse(
    getprop("ro.product.device") == "shooteru",
    (
        package_extract_dir("devices/shooteru/system", "/system");
    ),
        package_extract_dir("devices/" + getprop("ro.product.device") + "/system", "/system");
);

So to this point I wonder if ro.product.device returns something different for each carrier device? If not we need another unique identifier.

If folks can
Code:
 adb shell
 getprop ro.product.device
and let us know what carrier they are on and what the getprop returns, we could determine this.

As soon as we obtain all the carrier files and put them into there proper layout, we will provide all files and code necessary to make your rom compatible with all carriers.
 
Last edited:

appdroid

Senior Member
Oct 25, 2011
2,565
4,266
Chicago
Well I m No Dev! But if you are thinking about making one Rom to Rule Them All then you will have to get different modems/radios for each carrier & that means may be libs modification? I might be wrong !

Here is what libs i m thinking off.
libsecril-client.so
libril.so
libril-qcril-hook-oem.so
libril-qc-qmi-1.so
libreference-ril.so
 

incubus26jc

Inactive Recognized Developer
Feb 12, 2009
4,094
3,569
Illinois
Well I m No Dev! But if you are thinking about making one Rom to Rule Them All then you will have to get different modems/radios for each carrier & that means may be libs modification? I might be wrong !

Here is what libs i m thinking off.
libsecril-client.so
libril.so
libril-qcril-hook-oem.so
libril-qc-qmi-1.so
libreference-ril.so


Updated OP with a bit of info.
 
Last edited:

Epix4G

Senior Member
Sep 14, 2011
2,665
1,028
phoenix
On gnex it was small changes , but all kernels worked gsm and cdma ....it should be easy but don't know about one size fits all roms they have to port to gnex and may be same way here....but it's easy port

Sent from my Galaxy Nexus using Xparent ICS Blue Tapatalk 2
 

MДЯCЦSДИT

Inactive Recognized Developer
Nov 21, 2010
6,563
4,616
Build.prop - ril stuff
Framework-res.apk/res/xml/eri.xml
Framework.jar/telephony stuff
Libril-*
etc/apns-conf.xml

Sent from my SPH-D700 using Tapatalk 2
 
  • Like
Reactions: jdbeitz

anilkuj

Senior Member
Jul 25, 2007
563
32
jersey city
I like the second suggestion , that way we can pick any existing Rom flash it and then flash the carrier specific zip. This is exactly what we had with at&t galaxy s ii, not sure who the dev was , but it worked great and we were able to use all the roms from the international s sii

Sent from my SAMSUNG-SGH-I747 using xda premium
 
Last edited:

dpwhitty11

Senior Member
Aug 15, 2010
1,719
257
Houston, TX
I like the second suggestion , that way eek can pick any existing Rom flash it and then flash the carrier specific zip. This is exactly what we had with at&t galaxy s ii, not sure who the dev was , but it worked great and we were able to use all the roms from the international s sii

Sent from my SAMSUNG-SGH-I747 using xda premium

I agree, that's the best (and likely easiest) way to do things.

Sent from my ADR6300 using Tapatalk 2
 

BakaNeko59

Senior Member
Jan 19, 2011
286
70
Columbia, MO
Might I suggest that whoever comes up with this use Aroma (http://xdaforums.com/showthread.php?t=1646108) for the installer. That way you COULD put all the stuff for the various carriers in the same zip, and use programming or user input to install only the items that pertain to a particular carrier. You would not need to flash multiple files.

For instance, just pick "AT&T" or "T-Mobile" (etc.) from an onscreen menu and hit Next. Not sure, but Aroma may even be able to programmatically tell what the current carrier is and then automatically flash the correct info with NO user input. The beauty is that you can also have options to flash particular programs, tools, etc. based on user input as well.

I know the dev for Aroma has stopped for awhile, but a lot of roms have been using it anyway...

EDIT: Well, from the time I started typing my post and the time I finished it, two others came up with the same idea :p
 
  • Like
Reactions: shawman

dpwhitty11

Senior Member
Aug 15, 2010
1,719
257
Houston, TX
Might I suggest that whoever comes up with this use Aroma (http://xdaforums.com/showthread.php?t=1646108) for the installer. That way you COULD put all the stuff for the various carriers in the same zip, and use programming or user input to install only the items that pertain to a particular carrier. You would not need to flash multiple files.

For instance, just pick "AT&T" or "T-Mobile" (etc.) from an onscreen menu and hit Next. Not sure, but Aroma may even be able to programmatically tell what the current carrier is and then automatically flash the correct info with NO user input. The beauty is that you can also have options to flash particular programs, tools, etc. based on user input as well.

I know the dev for Aroma has stopped for awhile, but a lot of roms have been using it anyway...

EDIT: Well, from the time I started typing my post and the time I finished it, two others came up with the same idea :p

Pretty sure Aroma can't differentiate between the different carriers. But it for sure can do the rest.

Sent from my Transformer Prime TF201 using Tapatalk 2
 

moshe22

Senior Member
Mar 18, 2011
1,711
197
Off the top of my head, the easiest thing to do after figuring out all the differences is to use Aroma Installer and have it ask which carrier the phone is on, and have it flash any specific files from there along with the rom.

This is actually a great, great idea.

Sent from my HTC Sensation 4G using xda app-developers app
 
  • Like
Reactions: Gargon87

jnadke

Senior Member
Jul 17, 2008
831
165
On gnex it was small changes , but all kernels worked gsm and cdma ....it should be easy but don't know about one size fits all roms they have to port to gnex and may be same way here....but it's easy port

Sent from my Galaxy Nexus using Xparent ICS Blue Tapatalk 2

I've already looked at the kernel (board platform set-up, at least). Between Sprint and AT&T it is 99.9% similar.


There are a few GPIO configuration flags that are different, and the Hardware Revision identifier flags are different (but the flags control the same settings).
 

incubus26jc

Inactive Recognized Developer
Feb 12, 2009
4,094
3,569
Illinois
I've already looked at the kernel (board platform set-up, at least). Between Sprint and AT&T it is 99.9% similar.


There are a few GPIO configuration flags that are different, and the Hardware Revision identifier flags are different (but the flags control the same settings).

Thats what I like to here :)
 

BakaNeko59

Senior Member
Jan 19, 2011
286
70
Columbia, MO
Excellent Ideas Guys. Keep Them Coming. I will research everything I can.

I love that Amonra is capable of that but I'm not sure about the dependency. Especially if Amonra is no longer supported. I'm thinking that we can make this available for anyone with any recovery.

Im just thinking out loud.

It's not that Aroma is no longer supported. The author broke his phone and can't test updates any more until he replaces it.

And Aroma zip files are flashed in CWM (or whatever other custom recovery you are using) so there's no dependency, at least as far as I understand your meaning.

EDIT: Just noticed you were talking about Amon RA, which is a recovery program. Aroma and Amon RA are two entirely different things (again, see http://xdaforums.com/showthread.php?t=1646108). Aroma installers run FROM the recovery menu just like any other flashable zip file. They can be flashed with CWM, Amon RA, and TWRP recoveries, among others.
 
Last edited:
  • Like
Reactions: incubus26jc

Top Liked Posts

  • There are no posts matching your filters.
  • 61
    Multi-2-1.jpg


    Developers,

    The Objective of this thread is to create a solution for flashing any rom on any carrier's GS3. (Us/Canada)

    Every Rom on Every Carrier Will Be Supported.

    Warm Roms developed by Myn, Myself and the rest of the Warm Team will be available on all carriers.

    I will keep the OP updated.

    Thanks, Incubus



    First,

    We need to Determine the Diffs and Seperate what each carriers device needs.

    We will create an SVN Repo For Carrier Files.

    We will Use An Updater.script and include all carrier files with in the Rom.zip and allow the script to determine the device and install the appropriate carrier files.

    Any rom dev who wants to use this would place a folder in the rom.zip called "Devices" with all the carrier files seperated by sub-folders (Sprint, Verizon etc...)
    The script would call for "Sprint" and install the carrier files from that sub- folder overtop of any carrier files that a rom might have in it. (boot.img, apns, libs etc...)

    Example updater.script from Warm twopointthree on the Evo 3d. Worked very well.

    Code:
    #Mounting
    ifelse(
        getprop("ro.product.device") == "shooter",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p23", "/system");
        )
    );
    
    
    ifelse(
        getprop("ro.product.device") == "shooteru",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p22", "/system");
        )
    );
    
    
    ifelse(
        getprop("ro.product.device") == "shooter",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p24", "/data");
        )
    );
    
    
    ifelse(
        getprop("ro.product.device") == "shooteru",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p23", "/data");
        )
    );
    
    #Install Device Files
    ifelse(
        getprop("ro.product.device") == "shooter",
        (
            package_extract_dir("devices/shooter/system", "/system");
        ),
            package_extract_dir("devices/" + getprop("ro.product.device") + "/system", "/system");
    );
    
    ifelse(
        getprop("ro.product.device") == "shooteru",
        (
            package_extract_dir("devices/shooteru/system", "/system");
        ),
            package_extract_dir("devices/" + getprop("ro.product.device") + "/system", "/system");
    );

    So to this point I wonder if ro.product.device returns something different for each carrier device? If not we need another unique identifier.

    If folks can
    Code:
     adb shell
     getprop ro.product.device
    and let us know what carrier they are on and what the getprop returns, we could determine this.

    As soon as we obtain all the carrier files and put them into there proper layout, we will provide all files and code necessary to make your rom compatible with all carriers.
    8
    Might I suggest that whoever comes up with this use Aroma (http://xdaforums.com/showthread.php?t=1646108) for the installer. That way you COULD put all the stuff for the various carriers in the same zip, and use programming or user input to install only the items that pertain to a particular carrier. You would not need to flash multiple files.

    For instance, just pick "AT&T" or "T-Mobile" (etc.) from an onscreen menu and hit Next. Not sure, but Aroma may even be able to programmatically tell what the current carrier is and then automatically flash the correct info with NO user input. The beauty is that you can also have options to flash particular programs, tools, etc. based on user input as well.

    I know the dev for Aroma has stopped for awhile, but a lot of roms have been using it anyway...

    EDIT: Well, from the time I started typing my post and the time I finished it, two others came up with the same idea :p

    yes pirate is right, what we can do is in script we can have assert written up so it will see what model it is and it will give u option for that model.

    Yup.

    Here is how we handled it in Warm TwoPointThree to support both the GSM and CDMA versions of the EVO 3D. This was all done in an updater-script.

    Code:
    #Mounting
    ifelse(
        getprop("ro.product.device") == "shooter",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p23", "/system");
        )
    );
    
    
    ifelse(
        getprop("ro.product.device") == "shooteru",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p22", "/system");
        )
    );
    
    
    ifelse(
        getprop("ro.product.device") == "shooter",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p24", "/data");
        )
    );
    
    
    ifelse(
        getprop("ro.product.device") == "shooteru",
        (
            mount("ext4", "EMMC", "/dev/block/mmcblk0p23", "/data");
        )
    );
    
    #Install Device Files
    ifelse(
        getprop("ro.product.device") == "shooter",
        (
            package_extract_dir("devices/shooter/system", "/system");
        ),
            package_extract_dir("devices/" + getprop("ro.product.device") + "/system", "/system");
    );
    
    ifelse(
        getprop("ro.product.device") == "shooteru",
        (
            package_extract_dir("devices/shooteru/system", "/system");
        ),
            package_extract_dir("devices/" + getprop("ro.product.device") + "/system", "/system");
    );

    You can see the full updater-script here

    So to this point I wonder if ro.product.device returns something different for each carrier device? If not we need another unique identifier.

    If folks can
    Code:
     adb shell
     getprop ro.product.device
    and let us know what carrier they are on and what the getprop returns, we could determine this.
    8
    All of it could be accomplished using aroma installer. One zip, different radio and lib options depending on what you select in the installer. Easy to do in my opinion.

    Sent from my HTC One X using Tapatalk 2
    4
    Off the top of my head, the easiest thing to do after figuring out all the differences is to use Aroma Installer and have it ask which carrier the phone is on, and have it flash any specific files from there along with the rom.