Jump to content

[DEV][ROM][2.7.] CyanogenMod 11 (Android 4.4.4)


Guest KonstaT

Recommended Posts

Guest baotica

Headphones !!!

I've been complaining about the sound quality over the headphones, like, phone is at fault.NOT.I got myself a Jagermeister promo in ear headphones (16 ohms impedance), and the sound is AWESOME !!! 

PS

Only problem is that you have to fix the button on the headphones line. (it has to be constantly pressed).If not, bass will suck.But that is not a real problem.

Link to comment
Share on other sites

  • 2 weeks later...
Guest KonstaT
19 hours ago, zeka111 said:

please do fast this rom 

I mean ultra- slim cm 11

delete google services and anything 

(new rom use max 150 mb ram) is it posiable

Errm, CyanogenMod doesn't come with Google services. That's why you need to install a separate Gapps package.

You can add/remove/replace apps with your favorite zip tool. There's nothing special about that.

Link to comment
Share on other sites

  • 1 month later...
Guest KonstaT
3 hours ago, lujaluja said:

is it possible to flash this rom on unrooted device? i get error superSU binary out of date or something like that.

You need to a have a custom recovery to install a custom ROM. You only need to have an unlocked/unlockable bootloader to flash a custom recovery. None of this requires root (or SuperSU) in the sense you're likely meaning. Concept of root (having administrative access) is always related to running an operating system. You can have root access in Android - you can have root access in recovery (recovery is a mini OS itself). You can't "root your device".

Installation instruction can be found on the third post of this thread (CWM installation instructions are linked there, too).

Link to comment
Share on other sites

Guest KonstaT
28 minutes ago, ernad said:

When I try to install the cm it says :
The package is for "atlas40" devices; this is a "BladeIIIPro".
btw (Status 7)

What should I do? Please help.

Go and get yourself the right device (Blade III) or install ROMs that are meant for your device (Blade III Pro). Completely different devices with completely different hardware.

Link to comment
Share on other sites

6 minutes ago, KonstaT said:

Go and get yourself the right device (Blade III) or install ROMs that are meant for your device (Blade III Pro). Completely different devices with completely different hardware.

But I can't find those ROMs.

Link to comment
Share on other sites

  • 2 weeks later...
Guest anick1975

Hello Everyone,

I have an issue installing this ROM. Tried several times...CWM recovery installation was successful, copied the zip file to SD. After that reboot to recovery OK, wipe data/factory reset OK, wipe cache partition OK. However when I start the zip file installation I always get the same error:

E:failed to verify whole-file signature

E: signature verification failed

Any idea? I'm on the latest available factory ROM.

Thanks!

 

Link to comment
Share on other sites

Guest KonstaT
1 hour ago, anick1975 said:

Hello Everyone,

I have an issue installing this ROM. Tried several times...CWM recovery installation was successful, copied the zip file to SD. After that reboot to recovery OK, wipe data/factory reset OK, wipe cache partition OK. However when I start the zip file installation I always get the same error:

E:failed to verify whole-file signature

E: signature verification failed

Any idea? I'm on the latest available factory ROM.

Thanks!

Sounds more like you're trying to install it with stock recovery. Custom recoveries don't normally do signature verification. You have actually installed CWM?

Also check md5sum that you're not trying to flash a corrupted zip.

Edited by KonstaT
Link to comment
Share on other sites

Guest anick1975

Yes, just managed to finish the installation. The basic CWM 6049 did not work really, but found an older installation (6012 I believe) which installed fine. After that 6049 flashed properly. The ROM is up and running now, it's great, thanks :)

The gapps link in the post did not work for me though (always only downloads just about 2 megs...) so I'm still looking for some working one.

Thanks for the fast reply :)

Link to comment
Share on other sites

  • 3 weeks later...

Hello

I have a problem installing this ROM. Can someone help me?
My phone is standard, I haven't done anything to it, except normal usage. Here's my phone specs:

Model number: ZTE Blade III
Android version: 4.0.4
Baseband version: P772N10B01
Kernel version: 3.0.8-perf-svn29906 zte-kernel@Zdroid-SMT
Build number: ICS_P772N10V1.0.0B10

I wanna delete all my phone's memory, make clean/fresh start and install only necessery apps.
I have made backup all my contact, password, SMS, etc. using 3rd party software.

When I follow this guide, www.modaco.com/forums/topic/360389-recovery-clockworkmod-6049-for-zte-blade-iii
first and second steps goes OK (How to make clean ROM dump/backup of your device...) and (How to install ClockWorkMod Recovery (windows),
but when I boot my phone using power and volume up buttons, this appears:

Android system recovery <3e>
Android system recovery utility

reboot system now
apply update from external storage
wipe data/factory reset
wipe cache partition
apply update from cache
md5 check

1) There is no "backup & restore" option. What have I done wrong?
When I did "How to make clean ROM dump/backup of your device..." and in the end select "reboot system now", question appears:
"ROM may flash stock recovery on boot. Fix?" I chose "No". Then second question appears:
"Root access is missing. Root device?" I chose "No" again. Maybe answering different can solve my problem?

2) I have read many custom ROM installing guide's and they recommend "wipe cache partition".
Why there's no that text in this ROM installing guide, only "mounts and storage -> format /system" and "wipe data and factory reset"?

3) Do I have to install Gapps (gapps-kk-core-20140608.zip)? What I miss if I don't install that?

4) If I wanna transparent status/navigation bar (ro.config.low_ram=false), when is the time to change that line?
Before or after ROM install (tweaking cm-11-20140702-UNOFFICIAL-KonstaKANG-atlas40.zip or other method)?

5) Does it matter if my SIM card is on or off during installing process?

Thanks

Link to comment
Share on other sites

Guest KonstaT
11 hours ago, Jethro said:

1) There is no "backup & restore" option. What have I done wrong?
When I did "How to make clean ROM dump/backup of your device..." and in the end select "reboot system now", question appears:
"ROM may flash stock recovery on boot. Fix?" I chose "No". Then second question appears:
"Root access is missing. Root device?" I chose "No" again. Maybe answering different can solve my problem?

2) I have read many custom ROM installing guide's and they recommend "wipe cache partition".
Why there's no that text in this ROM installing guide, only "mounts and storage -> format /system" and "wipe data and factory reset"?

3) Do I have to install Gapps (gapps-kk-core-20140608.zip)? What I miss if I don't install that?

4) If I wanna transparent status/navigation bar (ro.config.low_ram=false), when is the time to change that line?
Before or after ROM install (tweaking cm-11-20140702-UNOFFICIAL-KonstaKANG-atlas40.zip or other method)?

5) Does it matter if my SIM card is on or off during installing process?

1) Because that's the stock recovery - not CWM. Selecting 'yes' in the first question will prevent CWM being overwritten with the stock recovery.

2) /cache partition is formatted when you select 'wipe data and factory reset'. Formatting it twice doesn't make you any good. Formatting /system partition is to make sure every partition used is formatted once (it's actually there because of gapps backup/restore script so you don't end up with incompatible gapps from different Android version).

3) No. You'll miss ability to use any Google apps (Play Store, Gmail, Maps, Drive, etc) and any third party apps that depend on Google services framework.

4) There's an option in performance settings to force high-end graphics if you only want transparent status bar. It's not recommended to change the property because it does much more than that.

5) No.

Edited by KonstaT
Link to comment
Share on other sites

7 hours ago, KonstaT said:

1) Because that's the stock recovery - not CWM. Selecting 'yes' in the first question will prevent CWM being overwritten with the stock recovery.

3) No. You'll miss ability to use any Google apps (Play Store, Gmail, Maps, Drive, etc) and any third party apps that depend on Google services framework.

Okey, thanks KonstaT

I will do that "How to make clean ROM dump/backup of your device..." thing once again and select "Yes". Hope that helps.

Would it be a good idea adding this "Yes/No" thing into your installing guide,
there might be a lots of noobs out there who hasn't figure it out yet, just like me?

3) Do you have any clue how many apps are "Google services framework" dependend, half of them maybe?
And how much I save battery life, RAM, storage, etc. if I don't install gapps-kk-core-20140608.zip? Is it worth it?
My goal is to make my phone "light" as possible. That's why I ask.

Link to comment
Share on other sites

Guest KonstaT
On 2/12/2016 at 6:46 PM, Jethro said:

3) Do you have any clue how many apps are "Google services framework" dependend, half of them maybe?
And how much I save battery life, RAM, storage, etc. if I don't install gapps-kk-core-20140608.zip? Is it worth it?
My goal is to make my phone "light" as possible. That's why I ask.

I don't have any exact figures on any of that. At least all apps that use Google APIs for maps/location, cloud messaging, ads/analytics, etc depend on Google services framework. That's an increasing number but I doubt it's nowhere near half of all Android apps. On the other hand all apps from e.g. F-Droid should work without Play services.

There's also been some effort to make applications designed for Google Play Services to run on systems where Play Services is not available. No idea if it'll work on this CM11.
http://forum.xda-developers.com/android/apps-games/app-microg-gmscore-floss-play-services-t3217616

There actually is somewhat noticeable difference in overall performance if you run your device without gapps - especially on lower end/legacy devices. Though, IMO it's not an _Android smartphone_ without Google services.

Edited by KonstaT
Link to comment
Share on other sites

  • 2 weeks later...
On 15.2.2016 at 7:05 PM, KonstaT said:

I don't have any exact figures on any of that. At least all apps that use Google APIs for maps/location, cloud messaging, ads/analytics, etc depend on Google services framework. That's an increasing number but I doubt it's nowhere near half of all Android apps. On the other hand all apps from e.g. F-Droid should work without Play services.

There's also been some effort to make applications designed for Google Play Services to run on systems where Play Services is not available. No idea if it'll work on this CM11.
http://forum.xda-developers.com/android/apps-games/app-microg-gmscore-floss-play-services-t3217616

There actually is somewhat noticeable difference in overall performance if you run your device without gapps - especially on lower end/legacy devices. Though, IMO it's not an _Android smartphone_ without Google services.

Thanks again KonstaT, good links :)

I have installed this ROM and it's working fine. It's much better than the original.
Lighter, customizable and more eye candy.

But I have a few more questions...

6) I have tested all of your Blade 3 ROM's (4.0.4 => 4.4.4) and KitKat is my favorite, but which one is your suggestion, if I wanna stable and light ROM?
I know that ICS based ROM is the obvious answer, but how much there is "experimental code" inside newer ROM's?

7) If I wanna remove ROM's default apps, which method is the right one? Before of after ROM installation?
Deleting .apk files inside .zip (system/app) or deleting .apk files using File Manager (system/app)?

8) Do you have working link in atlas40-recovery-template.zip (ZTE Blade III stock ROMs)?

9) There is no recovery.img file inside every stock ROM's update.zip (example finnish).
Do you know why? I have made nandroid backup, but I am curious.

Link to comment
Share on other sites

Guest KonstaT

6) I have tested all of your Blade 3 ROM's (4.0.4 => 4.4.4) and KitKat is my favorite, but which one is your suggestion, if I wanna stable and light ROM?
I know that ICS based ROM is the obvious answer, but how much there is "experimental code" inside newer ROM's?

7) If I wanna remove ROM's default apps, which method is the right one? Before of after ROM installation?
Deleting .apk files inside .zip (system/app) or deleting .apk files using File Manager (system/app)?

8) Do you have working link in atlas40-recovery-template.zip (ZTE Blade III stock ROMs)?

9) There is no recovery.img file inside every stock ROM's update.zip (example finnish).
Do you know why? I have made nandroid backup, but I am curious.

6) Yes, something ICS. Qualcomm EOL'ed this platform (msm7x27a) after Android 4.1 so it's not supposed to run anything newer than that. ZTE didn't even release that so this device was stuck with ICS, 3.0 kernel and PMEM binary drivers. There's all kinds of crazy hacks around bluetooth, hardware media decoding/encoding, and webview that I can even remember.

7) Either way will work just fine.

8) MoDaCo probably lost all attachments at some update. You can use flashable zip from e.g. CWM thread and replace recovery.img inside it. It does the same thing.

9) Some updates have boot.img and recovery patch file. You could use applypatch tool to create recovery image for those.

Edited by KonstaT
Link to comment
Share on other sites

  • 3 weeks later...
Guest Ck-NoSFeRaTU

Hello, Everyone.

Can someone with experience of RIL porting to help porting this ROM to V880E Dual SIM and persist.radio.multisim.config=dsds?

My device have ICS_RU_P772A10DV1.0.0B06 baseband on latest OEM ROM.
If baseband is reflashed to ICS_VELCOM_P772A11V1.0.0B03 (Belarus 1SIM V880E variant) then radio is working fine without any changes to ROM. But obviously with only one SIM.

Currently I see IMEI/Signals from first SIM, but network registration and searching is broken.

In onesim mode currently it breaks there:

RIL_REQUEST_GET_CELL_INFO_LIST exception, possible invalid RIL response
W/RILJ    (  704): java.lang.RuntimeException: Bad CellInfo Parcel
D/use-Rlog/RLOG-RILC(  107): UI <--- RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE (45) Complete --- RIL [RID 0, Token 25, Success, Len 4 Automatic]
D/use-Rlog/RLOG-RILC(  107): qcril_event_main(): Waiting...
D/RILJ    (  704): [3673]< QUERY_NETWORK_SELECTION_MODE {0}
D/GSMPhone(  704): Event EVENT_SS received
D/GsmMmiCode(  704): In processSsData
D/GsmMmiCode(  704): parseSsData msc = 21, action = *, ex = null
D/GsmMmiCode(  704): setVoiceCallForwardingFlag cffEnabled: true
E/GsmMmiCode(  704): Null Pointer Exception in parsing SS Data : java.lang.NullPointerException

In multisim mode there:

D/use-Rlog/RLOG-RILC(  107): UI <--- RIL_REQUEST_GET_SIM_STATUS (1) Complete --- RIL [RID 0, Token 5, Success, Len 312 ]
D/use-Rlog/RLOG-RILC(  107): Freed AID pointer, app[0] 
D/use-Rlog/RLOG-RILJ( 1012): This is a GSM PHONE -1
W/use-Rlog/RLOG-RILJ( 1012): [3653]< GET_SIM_STATUS exception, possible invalid RIL response
W/use-Rlog/RLOG-RILJ( 1012): java.lang.ArrayIndexOutOfBoundsException: length=1; index=-1

 

On stock ROM device is somehow using only /dev/socket/rild to manage both SIMs:

D/RILC    (  111): RID 0 currentState() -> Radio Off(0)
D/RILC    (  111): getVersion() -> Qualcomm RIL 1.0
I/RILJ    (  529): Connected to 'rild' socket
...
D/RILC    (  111): RID 1 currentState() -> Radio Off(0)
D/RILC    (  111): getVersion() -> Qualcomm RIL 1.0
I/RILJ    (  529): Connected to 'rild' socket

Is this some multiplexing voodoo magic? If I try to connect like this radio can't even start initing because of socket errors.

 

OEM ROM goes with libril-qc-qmi-1.so but actually uses only libril-qc-1.so.
At first glance I didn't see any difference in behaviour between libril-qc-1.so from OEM ROM and the one from this ROM.
All other RIL related vendor blobs looks identical.

I tried to decompile stock telephony framework, but most interested parts can't be decompiled with jd-gui.
RILConstants on OEM ROM are similar to ZTERIL: http://pastebin.com/GC33u1iS

So the questions are:
 1) How to properly sniffing IO between RIL and baseband? On connecting to rild-debug socket radio is freezing, so it is don't actually useful. Or I'm not doing it right?
 2) Are there any generic tips about Qualcomm Dual SIM RIL porting or about RIL porting at general? Can someone more experienced with android internals give me some directions?
 

Link to comment
Share on other sites

Guest KonstaT

Hello, Everyone.

Can someone with experience of RIL porting to help porting this ROM to V880E Dual SIM and persist.radio.multisim.config=dsds?

My device have ICS_RU_P772A10DV1.0.0B06 baseband on latest OEM ROM.
If baseband is reflashed to ICS_VELCOM_P772A11V1.0.0B03 (Belarus 1SIM V880E variant) then radio is working fine without any changes to ROM. But obviously with only one SIM.

Currently I see IMEI/Signals from first SIM, but network registration and searching is broken.

In onesim mode currently it breaks there:


RIL_REQUEST_GET_CELL_INFO_LIST exception, possible invalid RIL response
W/RILJ    (  704): java.lang.RuntimeException: Bad CellInfo Parcel

D/use-Rlog/RLOG-RILC(  107): UI <--- RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE (45) Complete --- RIL [RID 0, Token 25, Success, Len 4 Automatic]
D/use-Rlog/RLOG-RILC(  107): qcril_event_main(): Waiting...
D/RILJ    (  704): [3673]< QUERY_NETWORK_SELECTION_MODE {0}
D/GSMPhone(  704): Event EVENT_SS received
D/GsmMmiCode(  704): In processSsData
D/GsmMmiCode(  704): parseSsData msc = 21, action = *, ex = null
D/GsmMmiCode(  704): setVoiceCallForwardingFlag cffEnabled: true
E/GsmMmiCode(  704): Null Pointer Exception in parsing SS Data : java.lang.NullPointerException

In multisim mode there:


D/use-Rlog/RLOG-RILC(  107): UI <--- RIL_REQUEST_GET_SIM_STATUS (1) Complete --- RIL [RID 0, Token 5, Success, Len 312 ]
D/use-Rlog/RLOG-RILC(  107): Freed AID pointer, app[0] 
D/use-Rlog/RLOG-RILJ( 1012): This is a GSM PHONE -1
W/use-Rlog/RLOG-RILJ( 1012): [3653]< GET_SIM_STATUS exception, possible invalid RIL response
W/use-Rlog/RLOG-RILJ( 1012): java.lang.ArrayIndexOutOfBoundsException: length=1; index=-1

 

On stock ROM device is somehow using only /dev/socket/rild to manage both SIMs:


D/RILC    (  111): RID 0 currentState() -> Radio Off(0)
D/RILC    (  111): getVersion() -> Qualcomm RIL 1.0
I/RILJ    (  529): Connected to 'rild' socket
...
D/RILC    (  111): RID 1 currentState() -> Radio Off(0)
D/RILC    (  111): getVersion() -> Qualcomm RIL 1.0
I/RILJ    (  529): Connected to 'rild' socket

Is this some multiplexing voodoo magic? If I try to connect like this radio can't even start initing because of socket errors.

 

OEM ROM goes with libril-qc-qmi-1.so but actually uses only libril-qc-1.so.
At first glance I didn't see any difference in behaviour between libril-qc-1.so from OEM ROM and the one from this ROM.
All other RIL related vendor blobs looks identical.

I tried to decompile stock telephony framework, but most interested parts can't be decompiled with jd-gui.
RILConstants on OEM ROM are similar to ZTERIL: http://pastebin.com/GC33u1iS

So the questions are:
 1) How to properly sniffing IO between RIL and baseband? On connecting to rild-debug socket radio is freezing, so it is don't actually useful. Or I'm not doing it right?
 2) Are there any generic tips about Qualcomm Dual SIM RIL porting or about RIL porting at general? Can someone more experienced with android internals give me some directions?
 

First you'd need to add the second rild service for second SIM. I had it for a while for testing purposes but it's been removed since. It really doesn't matter what the property is a called, afaik it's only used to start the second rild service (Qualcomm generally uses init.class_main.sh to start these services). I'm also quite certain second rild hooks to rild1 socket on stock ROM no matter what the log says.

I prefer Procyon decompiler over jd-gui these days. Not sure if you'd need a custom RIL class but that one doesn't make much sense to me. It's of course a potential problem that those proprietary RIL blobs are from Ice Cream Sandwich and this is KitKat. Modem itself is a complete blackbox and I have no idea what's going on there. Ideally I'd start with something ICS but CM11 probably was the first CM version that had CAF's dual-SIM implementation ported over (or was it one of the Jelly Beans, can't recall anymore).

Edited by KonstaT
Link to comment
Share on other sites

Guest Ck-NoSFeRaTU
6 hours ago, KonstaT said:

First you'd need to add the second rild service for second SIM. I had it for a while for testing purposes but it's been removed since. It really doesn't matter what the property is a called, afaik it's only used to start the second rild service (Qualcomm generally uses init.class_main.sh to start these services). I'm also quite certain second rild hooks to rild1 socket on stock ROM no matter what the log says.

I prefer Procyon decompiler over jd-gui these days.

Initially I tried to add second rild service, but process can't properly start and constantly segfaulting. I think because there are no smd0 device (deleted?). Real modem device is absent too. I tried to recreate smd0 but only received "no such device" from it.  But I don't investigate much on this matter because stock rom does not use second rild daemon. There are only one instance of it and only rild/rild-debug sockets.

Unfortunally I can't decompile socket connecting procedure in oem RIL.java because both jd-gui and procyon produce commented smali junk (maybe that's baksmali's fault during framework deodexing), but looks like it is doing this:

static final String SOCKET_NAME_RIL = "rild";
static final String SOCKET_NAME_RIL1 = "rild1";

boolean multiRild = SystemProperties.getBoolean("ro.multi.rild", false);

if (mInstanceId == null || mInstanceId == 0 || multiRild == false) {
    rilSocket = SOCKET_NAME_RIL;
} else {
    rilSocket = SOCKET_NAME_RIL1;
}

LocalSocket s = new LocalSocket();
LocalSocketAddress l = new LocalSocketAddress(rilSocket, LocalSocketAddress.Namespace.RESERVED);
s.connect(l);

Log.i(LOG_TAG, "Connected to '" + rilSocket + "' socket")

As there are no ro.multi.rild in stock rom I assume log output is not wrong. There are closest sources I found to decompiled result: https://github.com/dzo/frameworks_base . This tree have exactly the same code as above and same QOS related stuff.

BTW, is second ril service required even if device have one radio module (dual sim dual standby)? What the purpose of it if there are can be only one instance of voice+data at a time?

Also there are curious part in cm's RIL.java about ro.telephony.ril.v3=qcomdsds which adds slot's identification even for devices which aren't dual sim. >_<

 

6 hours ago, KonstaT said:

Not sure if you'd need a custom RIL class but that one doesn't make much sense to me. It's of course a potential problem that those proprietary RIL blobs are from Ice Cream Sandwich and this is KitKat. Modem itself is a complete blackbox and I have no idea what's going on there. Ideally I'd start with something ICS but CM11 probably was the first CM version that had CAF's dual-SIM implementation ported over (or was it one of the Jelly Beans, can't recall anymore).

This ZTERIL is basically looks like just a copy paste from cm's Qualcomm42RIL but patched with additional parameter in constructor. It is required for loading custom RIL in multi sdim mode. Class reorders some constants which were used prior to 4.2 but then were overwritten by anothers. There are also stubs for cellinfolist because old implementations doesn't support this.

I decided not to use custom classes for now and hack telephony framework directly. Maybe if something come up from this I port it to custom class later. Slowly I'm making some progress, all mentioned errors above were because there are much more differences in constants and logic than in qualcomm42ril. For example RIL_UNSOL_RIL_CONNECTED does nothing, just notifies about connectionchange. And power management moved to RIL_UNSOL_RESPONSE_BASE. Even constants differences are huge:

--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -179,6 +179,13 @@ cat include/telephony/ril.h | \
     public static final int DATA_PROFILE_CBS       = 4;
     public static final int DATA_PROFILE_OEM_BASE  = 1000;
 
+    /* zte unique */
+    int RIL_TETHERED_MODE_OFF = 0;
+    int RIL_TETHERED_MODE_ON = 1;
+    int TRANSMIT_POWER_DEFAULT = 0;
+    int TRANSMIT_POWER_WIFI_HOTSPOT = 1;
+    /* end */
+
     int RIL_REQUEST_GET_SIM_STATUS = 1;
     int RIL_REQUEST_ENTER_SIM_PIN = 2;
     int RIL_REQUEST_ENTER_SIM_PUK = 3;
@@ -287,19 +294,37 @@ cat include/telephony/ril.h | \
     int RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU = 106;
     int RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS = 107;
     int RIL_REQUEST_VOICE_RADIO_TECH = 108;
-    int RIL_REQUEST_GET_CELL_INFO_LIST = 109;
-    int RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE = 110;
-    int RIL_REQUEST_SET_INITIAL_ATTACH_APN = 111;
-    int RIL_REQUEST_IMS_REGISTRATION_STATE = 112;
-    int RIL_REQUEST_IMS_SEND_SMS = 113;
-    int RIL_REQUEST_GET_DATA_CALL_PROFILE = 114;
-    int RIL_REQUEST_SET_UICC_SUBSCRIPTION = 115;
-    int RIL_REQUEST_SET_DATA_SUBSCRIPTION = 116;
-    int RIL_REQUEST_SIM_TRANSMIT_BASIC = 117;
-    int RIL_REQUEST_SIM_OPEN_CHANNEL = 118;
-    int RIL_REQUEST_SIM_CLOSE_CHANNEL = 119;
-    int RIL_REQUEST_SIM_TRANSMIT_CHANNEL = 120;
-    int RIL_REQUEST_SIM_GET_ATR = 121;
+    int RIL_REQUEST_IMS_REGISTRATION_STATE = 109;
+    int RIL_REQUEST_IMS_SEND_SMS = 110;
+    int RIL_REQUEST_GET_DATA_CALL_PROFILE = 111;
+    int RIL_REQUEST_SET_UICC_SUBSCRIPTION = 112;
+    int RIL_REQUEST_SET_DATA_SUBSCRIPTION = 113;
+    /* zte unique */
+    int RIL_REQUEST_GET_UICC_SUBSCRIPTION = 114;
+    int RIL_REQUEST_GET_DATA_SUBSCRIPTION = 115;
+    int RIL_REQUEST_SET_SUBSCRIPTION_MODE = 116;
+    int RIL_REQUEST_SET_TRANSMIT_POWER = 117;
+    int RIL_REQUEST_SETUP_QOS = 118;
+    int RIL_REQUEST_RELEASE_QOS = 119;
+    int RIL_REQUEST_GET_QOS_STATUS = 120;
+    int RIL_REQUEST_MODIFY_QOS = 121;
+    int RIL_REQUEST_SUSPEND_QOS = 121;
+    int RIL_REQUEST_RESUME_QOS = 123;
+    /* end. 124 is absent ?! */
+    int RIL_REQUEST_GET_CELL_INFO_LIST = 125;
+    int RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE = 126;
+    int RIL_REQUEST_SET_INITIAL_ATTACH_APN = 127;
+    int RIL_REQUEST_SIM_GET_ATR = 128;
+    /* zte unique */
+    int RIL_REQUEST_GET_PINPUK_RETRIES  = 501;
+    int RIL_REQUEST_TERMINATE_GET_NETWORKS  = 502;
+    int RIL_REQUEST_QUERY_COMMON_SS_SERVICE = 503;
+    /* end */
+    int RIL_REQUEST_SIM_TRANSMIT_BASIC = 504;
+    int RIL_REQUEST_SIM_OPEN_CHANNEL = 505;
+    int RIL_REQUEST_SIM_CLOSE_CHANNEL = 506;
+    int RIL_REQUEST_SIM_TRANSMIT_CHANNEL = 507;
+
 
     int RIL_UNSOL_RESPONSE_BASE = 1000;
     int RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED = 1000;
@@ -338,11 +363,24 @@ cat include/telephony/ril.h | \
     int RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE = 1033;
     int RIL_UNSOL_RIL_CONNECTED = 1034;
     int RIL_UNSOL_VOICE_RADIO_TECH_CHANGED = 1035;
-    int RIL_UNSOL_CELL_INFO_LIST = 1036;
-    int RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED = 1037;
-    int RIL_UNSOL_ON_SS = 1038;
-    int RIL_UNSOL_STK_CC_ALPHA_NOTIFY = 1039;
-    int RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED = 1040;
+    int RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED = 1036;
+    /* zte unique */
+    int RIL_UNSOL_TETHERED_MODE_STATE_CHANGED = 1037;
+    int RIL_UNSOL_DATA_NETWORK_STATE_CHANGED = 1038;
+    /* end */
+    int RIL_UNSOL_ON_SS = 1039;
+    int RIL_UNSOL_STK_CC_ALPHA_NOTIFY = 1040;
+    int RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED = 1041;
+    /* zte unique */
+    int RIL_UNSOL_QOS_STATE_CHANGED_IND = 1042;
+    /* end */
+    /* zte absent */
+    int RIL_UNSOL_CELL_INFO_LIST = 1043; //was 1036
+    /* end */
+    /* zte unique */
+    int RIL_UNSOL_KPC_INFO = 1100;
+    int RIL_UNSOL_MIP_ERROR_CODE_INFO = 1101;
+    /* end */

 

Edited by Ck-NoSFeRaTU
Link to comment
Share on other sites

Guest KonstaT
9 hours ago, Ck-NoSFeRaTU said:

As there are no ro.multi.rild in stock rom I assume log output is not wrong. There are closest sources I found to decompiled result: https://github.com/dzo/frameworks_base . This tree have exactly the same code as above and same QOS related stuff.

BTW, is second ril service required even if device have one radio module (dual sim dual standby)? What the purpose of it if there are can be only one instance of voice+data at a time?

Also there are curious part in cm's RIL.java about ro.telephony.ril.v3=qcomdsds which adds slot's identification even for devices which aren't dual sim. >_<

At least that's how it works on modern Qualcomm dsds devices. I checked ramdisk of Blade III stock ROM and there's second rild service and it's trigged in init.qcom.sh (ro.multi.rild=true && persist.dsds.enabled=true). I don't know if these properties are set in dual-SIM stock ROM.

I've never had a dual-SIM device so I've never really had to deal with it besides some minor things. And not on anything this old at least. Dual-SIM feature was mostly available on MediaTek device back then. Native dual-SIM support was added to Android in Lollipop and CyanogenMod had CAF's dual-SIM implementation ported over in a version or two before that.

You'll actually find the closest code from CAF. It's M76XXUSNEKNLYA2040 tag ZTE started off of. I've built and released a quick CAF build at some point. That's probably the best place to start if you want to reverse engineer the telephony stack and see what changes ZTE has made.
https://us.codeaurora.org/cgit/quic/la/platform/frameworks/base/tree/?h=ics_chocolate_rb4.2
http://www.modaco.com/forums/topic/360986-devrom215-firefox-os-b2g/?do=findComment&comment=2205314
https://github.com/KonstaT/android_device_zte_atlas40/tree/ics_chocolate_rb4.2

Edited by KonstaT
Link to comment
Share on other sites

Guest Ck-NoSFeRaTU
3 hours ago, KonstaT said:

At least that's how it works on modern Qualcomm dsds devices. I checked ramdisk of Blade III stock ROM and there's second rild service and it's trigged in init.qcom.sh (ro.multi.rild=true && persist.dsds.enabled=true). I don't know if these properties are set in dual-SIM stock ROM.

Yes, I also have disabled ril1-daemon binded to ro.multi.rild in ramdisk. But on properties there are only persist.dsds.enabled=true so it doesn't used. Here are zte's 2.3.6->4.0.4 update for my device if you want to take a look: https://yadi.sk/d/LgLfktQaaooij

3 hours ago, KonstaT said:

You'll actually find the closest code from CAF. It's M76XXUSNEKNLYA2040 tag ZTE started off of. I've built and released a quick CAF build at some point. That's probably the best place to start if you want to reverse engineer the telephony stack and see what changes ZTE has made.

Thank you! I'll take a look.

Link to comment
Share on other sites

Guest KonstaT
6 hours ago, Ck-NoSFeRaTU said:

Yes, I also have disabled ril1-daemon binded to ro.multi.rild in ramdisk. But on properties there are only persist.dsds.enabled=true so it doesn't used. Here are zte's 2.3.6->4.0.4 update for my device if you want to take a look: https://yadi.sk/d/LgLfktQaaooij

If you run 'getprop' on running system you'll see what properties are set and what's the status for each service (init.svc.*). Looking at this and this it seems that it's possible with single rild just like you said and I can't find that multi-rild property either.

Might be worth testing that CAF build and setting your dual-SIM property (persist.dsds.enabled=true). It's very possible that dual-SIM 'just works™' on that build. At least you'd have some starting point that's open source.

Link to comment
Share on other sites

Guest Ck-NoSFeRaTU
6 hours ago, KonstaT said:

If you run 'getprop' on running system you'll see what properties are set and what's the status for each service (init.svc.*). Looking at this and this it seems that it's possible with single rild just like you said and I can't find that multi-rild property either.

Thats the first place I checked ^_^ Nothing there related second ril-daemon:

shell@android:/ $ getprop | busybox grep -i ril                                   
[gsm.version.ril-impl]: [Qualcomm RIL 1.0]
[init.svc.ril-daemon]: [running]
[persist.rild.nitz_long_ons_0]: []
[persist.rild.nitz_long_ons_1]: []
[persist.rild.nitz_long_ons_2]: []
[persist.rild.nitz_long_ons_3]: []
[persist.rild.nitz_plmn]: []
[persist.rild.nitz_short_ons_0]: []
[persist.rild.nitz_short_ons_1]: []
[persist.rild.nitz_short_ons_2]: []
[persist.rild.nitz_short_ons_3]: []
[ril.ecclist]: [911,112]
[ril.subscription.types]: [NV,RUIM]
[rild.libargs]: [-d /dev/smd0]
[rild.libpath]: [/system/lib/libril-qc-1.so]
shell@android:/ $ ls /dev/socket/rild*                                         
/dev/socket/rild
/dev/socket/rild-debug
shell@android:/ $ ps | busybox grep -i ril                                 
radio     112   1     21256  3952  ffffffff 00000000 S /system/bin/rild

 

Today I managed to connect both sims on cm11 to single socket with IMEI/SV displaying on both. Currently It breaks on NV subscriptions activation. Stock ROM doing some magic with RIL_REQUEST_SET_SUBSCRIPTION_MODE and radio resets which I didn't figure out yet and UI crashes horribly which leads to radio init loops. If I skip network initialization than I can even see signals and multisim menu asking me to configure sims. ^_^ Also there are two places which confusing me:

1) Strange oem_name mismatches. Message is coming from libril-qc-1.so. What is that? Some baseband mismatch incompatibility? On xda I found suggestion to use persist.radio.oem_socket=false without any explanation. But this property doesn't do anything here. Just replaced OEM_IDENTIFIER in RIL.java for now.

setDefaultVoiceSub: subIndex is 0
[3673]> OEM_HOOK_RAW[514fXXXXXXXXX0c0008000100000000] [SUB0]
UI --- RIL_REQUEST_OEM_HOOK_RAW (59) ---> RIL [RID 0, token id 25, data len 17]
Mismatch in oem_name between received=QOEMHOOK and expected=QUALCOMM 
UI <--- RIL_REQUEST_OEM_HOOK_RAW (59) Complete --- RIL [RID 0, Token 25, Request Not Supported, Len 0 ]

2) I have everywhere slotId / subiId = -1. Dunno maybe it is normal before I setup subscriptions at least once.

getUserPreferredSubs: mUserPrefSubs.subscription[0] = Subscription = { slotId = -1, 3gppIndex = -1, 3gpp2Index = -1, subId = 0, subStatus = SUB_INVALID, appId = null, appLabel = null, appType = null, iccId = null }
getUserPreferredSubs: mUserPrefSubs.subscription[1] = Subscription = { slotId = -1, 3gppIndex = -1, 3gpp2Index = -1, subId = 1, subStatus = SUB_INVALID, appId = null, appLabel = null, appType = null, iccId = null }
... repeated many times...
[MSimGSMPhone] [0]setCardInPhoneBook: mSubscriptionData: Subscription = { slotId = -1, 3gppIndex = -1, 3gpp2Index = -1, subId = -1, subStatus = SUB_INVALID, appId = null, appLabel = null, appType = null, iccId = null }
MSimGsmSMSDispatcher: subId = 0 slotId = 0
[MSimGSMPhone] [1]setCardInPhoneBook: mSubscriptionData: Subscription = { slotId = -1, 3gppIndex = -1, 3gpp2Index = -1, subId = -1, subStatus = SUB_INVALID, appId = null, appLabel = null, appType = null, iccId = null }
MSimGsmSMSDispatcher: subId = 1 slotId = 1
... repeated many times...
 Card Sub Info = [Subscription = { slotId = 0, 3gppIndex = 0, 3gpp2Index = -1, subId = -1, subStatus = SUB_INVALID, appId = , appLabel = null, appType = SIM, iccId = 897010XXXXXXXXXXX }]
 user pref sub = Subscription = { slotId = -1, 3gppIndex = -1, 3gpp2Index = -1, subId = 0, subStatus = SUB_INVALID, appId = null, appLabel = null, appType = null, iccId = null }
 current sub   = Subscription = { slotId = -1, 3gppIndex = -1, 3gpp2Index = -1, subId = -1, subStatus = SUB_DEACTIVATED, appId = null, appLabel = null, appType = null, iccId = null }

 

6 hours ago, KonstaT said:

Might be worth testing that CAF build and setting your dual-SIM property (persist.dsds.enabled=true). It's very possible that dual-SIM 'just works™' on that build. At least you'd have some starting point that's open source.

Just tried:

  1. In one sim mode sees imei but doesn't work.
  2. In dsds mode with ro.multi.rild - no sockets and rild processes constantly dying and restarting. Maybe it need libril-qc-qmi-1.so which is not there for that to work?
  3. In dsds mode with single rild daemon mostly works: crashing in couple of places, sims sometimes loosing network registrations, can't search networks,.. But at least the automatic network registration, voice and data are working. And the same RIL_REQUEST_SET_SUBSCRIPTION_MODE there as well but without so much radio restarts as on stock ROM and without OEM_HOOK_RAW.

UPDATE:

Successfully subscribed to network and maked the first call. Voice is working now. ^_^

Edited by Ck-NoSFeRaTU
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.