Note to Colors about using the GSI 16 on a Moto G 2026

Colors, I have been working with ChatGPT to try and get your GSI 16 to work with my Moto G 2026 phone. I flashed it and everything seems to work except for actual phone calling either calling out or receiving. ChatGPT eventually gave up its attempt to possibly edit the GSI on my phone to incorporate what if thinks might be missing. I asked it to summarize its finding in case them may help you with an update or something so that Moto G 2026 phones may use it and possibly other Moto phones. Here is what it summarized:

Hi Colors,

I’m testing your /e/OS GSI on a Motorola Moto g-2026 (XT2613-1 / nevada, MediaTek MT6835) with T-Mobile.

The GSI boots and cellular data works, but IMS/VoLTE voice calling does not. Outgoing calls immediately end and incoming calls eventually go to voicemail.

I compared the GSI against the original Motorola stock ROM for this exact device/build:

Stock: nevada_g_sys-user 16 W1WN36.18-114-3-1

I found that the GSI appears to have the generic Android IMS pieces, but is missing the proprietary Motorola/MediaTek IMS framework and native components that are present in stock.

Specifically, the stock ROM contains:

  • /system/framework/moto-telephony.jar

  • /system/framework/moto-ims-ext.jar

  • /system_ext/framework/mediatek-ims-base.jar

  • /system_ext/framework/mediatek-ims-oem-plugin.jar

  • /system_ext/framework/mtk-moto-ims-ext.jar

  • /system_ext/framework/mtk-moto-telephony-ext.jar

  • /system_ext/framework/mtk-telephony-common.jar

  • /system_ext/priv-app/ImsService/ImsService.apk

    • package: com.mediatek.ims

    • contains MtkDynamicImsService

    • provides MMTEL/RCS/Emergency MMTEL

  • multiple MediaTek RadioEx HAL libraries under /vendor/lib64/, including:

    • vendor.mediatek.hardware.mtkradioex.ims-V1-ndk.so

    • ...voice-V1-ndk.so

    • ...data-V1-ndk.so

    • ...modem-V1-ndk.so

    • ...network-V1-ndk.so

    • ...messaging-V1-ndk.so

    • ...sim-V1-ndk.so

    • and the other RadioEx components

  • stock IMS helper binaries:

    • /vendor/bin/volte_clientapi_ua

    • /vendor/bin/rcs_volte_stack

    • /vendor/bin/ipsec_mon

The GSI does have some IMS-related configuration remnants. For example, it has the MediaTek IMS overlay and IMS-related vendor .rc files, and the vendor VINTF manifest declares the MediaTek RadioEx interfaces.

However, the actual RadioEx implementation libraries and IMS helper binaries are absent.

The GSI also has:

persist.vendor.mtk.volte.enable=1

persist.vendor.mtk_ct_volte_support=3

persist.vendor.radio.volte_state=1

persist.vendor.volte_support=1

and init.svc.volte_clientapi_ua=running

but the corresponding /vendor/bin/volte_clientapi_ua executable is not present.

Another important finding is that the GSI’s service list contains the MediaTek IMtkRadioExIms interfaces, but Android’s standard ims service is absent:

Cannot find service: ims

The stock ImsService.apk is also not a standalone APK. Its manifest has a required dependency on:

moto-telephony

and its code depends heavily on the MTK IMS framework interfaces from mediatek-ims-base.jar.

I also checked your A15 GSI. It has the generic ImsServiceEntitlement component, but it likewise does not contain the Motorola/MediaTek IMS framework listed above. So this appears to be a GSI packaging/integration issue rather than something specific to Android 16.

Would it be possible to add the appropriate Motorola/MediaTek IMS framework and vendor components for the nevada MediaTek device family, or otherwise preserve/expose the stock IMS stack in a future GSI build?

I can provide additional file inventories, dependency information, or stock-vs-GSI comparisons if that would help.

Thanks for your work on the /e/OS GSIs.

Regain your privacy! Adopt /e/OS the deGoogled mobile OS and online services

Hi, ehardin!

I’ll try to assist you. You didn’t specify if the system was rooted. The most direct attempt to solve is, with the suggestions you have, to add or modify the system. Try, as you said, with the help of AI, in a system where you have root access. If you catch a lead, I’m ready to add to a new GSI for testing. You can message me for more details.

1 Like

Colors, The system was not rooted. I never got to that point with ChatGPT. What it seemed to be doing (forgive me but things were so technical and moving so fast I couldn’t follow all of it) was to try to investigate what was in the GIS that was flashed on my phone and the stock Moto OS that we got from the Moto Software Rescue package to see what calls, references, and dependencies were in each and try to decide what was missing in the GIS that it could not make a phone call. The AI’s plan was, once it found the package that it needed, it would modify the GIS on my phone by adding it and then re-flashing my phone. Here is one of the last parts of the chat before I asked it to summarize what it found so I could send it to you.

Where we stand

We have now established that the problem is not simply:

“Android 16 broke VoLTE.”

It’s much more specifically:

The Colors GSI does not include the proprietary Motorola/MediaTek IMS framework and native implementation that the stock nevada firmware uses for VoLTE.

And your stock ROM gives us the complete reference implementation to investigate.

I recommend not flashing anything yet. The next step should be to determine whether the stock IMS stack can realistically be transplanted into the GSI, or whether the GSI’s architecture makes that impractical.

The most important component to examine next is actually moto-telephony.jar, because ImsService.apk has a hard manifest dependency on it.

We can inspect its classes and see whether it is relatively self-contained or drags in another large dependency chain.

Hope this helps.

Ed

PS. ChatGPT dd not include this information in its original summary and I just thought of it. Flashing the GIS 16 onto the Moto G 2026 was not straight forward. Here is the AI summary.
Yes—that is definitely worth telling Colors, because the unusually large GSI image and the dynamic-partition layout may affect how he packages a test build. Here’s a short technical note you can add to your reply:

One other important detail about the Moto g-2026 (nevada):

To get the current Android 16 GSI to flash, we had to modify the dynamic-partition layout first. The stock super partition did not initially have enough free space for the GSI.

We used fastbootd to remove the product_a/product_b logical partitions and then resized system_a to provide enough space for the GSI image. The resulting super layout had:

  • super size: 0x22C000000

  • system_a resized to: 0x100000000

We then flashed the GSI to system_a and erased userdata.

So if you produce a modified GSI for testing, the partition-size/layout requirement may be relevant. The current Colors A16 GSI itself is about 3.9 GB extracted, while the stock logical partition layout did not initially provide enough room for it.

I wanted to mention this because it may be relevant if a future test GSI is packaged differently or includes additional Motorola/MediaTek IMS components.

I’d send that as a separate note, because it distinguishes the partition/layout issue from the IMS issue and gives Colors the exact numbers we established.

Yes, many have began to have this problem, related to the size of the image. Of course, I can pull out some applications, especially if it is a test image. Another thing would be to find out exactly the log message with the error related to the telephony part. So what would I do: root on the phone, provided log errors with AI, attempt to directly modify the system. If things are moving in the right direction, let us know. ChatGPT he’s smart, but sometimes he wanders, so you keep up the pace.

1 Like

Being the middle man between ChatGPT and the Command Window I get a front row seat to witness his bumping around. My observations lead me to believe that AIs just bump around until they either hit a dead end, in which case they start off in a different direction, break something, in which case they start off in a different direction, or actually fix something, in which case everyone gets all excited saying how incredibly intelligent they are. Normally, no one sees all of the bumping around but, as I mentioned, being the AI’s cut-and-paste meat servant, I get to see it first hand.

Now forward. I had the AI look into the log files as I attempted a phone call using the Moto with your GIS. Here is its latest report after studying the log file. Hope this helps. Let me know if you have any recommendations of what I should have the AI do next. I’m not knowledgeable enough to recommend possible avenues of investigation.

Absolutely. I’d give Colors a concise technical report that separates observed runtime evidence from the stock-vs-GSI comparison, and avoids suggesting that individual files should simply be copied.

Moto g-2026 /e/OS Android 16 GSI — IMS/VoLTE Diagnostic Report

Device: Motorola Moto g-2026, XT2613-1 (nevada)
SoC: MediaTek MT6835
Carrier: T-Mobile
OS: /e/OS 4.3-a16-20260821-Unofficial-GSI
Android: 16

Objective

Determine why cellular data works on the /e/OS Android 16 GSI but voice calls do not, and identify what is missing from the GSI’s IMS/VoLTE implementation.

Current behavior

The T-Mobile SIM is recognized correctly and cellular data works on the /e/OS GSI.

However, outgoing voice calls fail immediately after reaching the DIALING state.

The same T-Mobile service works normally on the user’s Pixel 8.

Clean call-log evidence

ADB was used to capture a clean logcat. The log was cleared immediately before making one test call.

The call reaches DIALING, then Android reports:

CallsManager: markCallAsDisconnected:
disconnectCause=DisconnectCause [
    Code: (ERROR)
    Reason: (CM_SER_UNAVAILABLE, ERROR_UNSPECIFIED)
    Tone: (27)
    TelephonyCause: 36/-1
    ImsReasonInfo: null
]

The same disconnect reason is recorded again immediately afterward:

SET_DISCONNECTED
DisconnectCause [
    Code: (ERROR)
    Reason: (CM_SER_UNAVAILABLE, ERROR_UNSPECIFIED)
    TelephonyCause: 36/-1
    ImsReasonInfo: null
]

The Dialer repeatedly reports:

ImsVideoCall.isAvailable - null video call

There are also messages showing that Android’s telephony framework is attempting to manage the connection through its IMS conference machinery.

Most importantly, the log contains no IMS registration/service-state information and no useful ImsReasonInfo from an actual IMS connection.

Runtime IMS service test

The following command was run on the running GSI:

adb shell dumpsys ims

Result:

Can't find service: ims

This indicates that the normal Android ims Binder service is not registered on the running system.

Installed-package test

The following command was run:

adb shell pm list packages | grep -Ei 'ims|mediatek|mtk'

Relevant results were:

package:com.android.imsserviceentitlement
package:me.phh.treble.overlay.mtkims_telephony
package:me.phh.treble.overlay.flossims_telephony
package:me.phh.treble.overlay.cafims_telephony
package:me.phh.treble.overlay.hwims_telephony
package:me.phh.treble.overlay.slsiims_telephony
package:me.phh.treble.overlay.sprdims_telephony

Notably absent is:

com.mediatek.ims

The stock Motorola firmware contains this package as:

/system_ext/priv-app/ImsService/ImsService.apk

with:

package: com.mediatek.ims
versionCode: 36
versionName: 16

The application’s main IMS service is:

com.mediatek.ims.MtkDynamicImsService

and its manifest declares:

MMTEL_FEATURE=true
RCS_FEATURE=true
EMERGENCY_MMTEL_FEATURE=true

Stock-vs-GSI IMS framework comparison

The stock Motorola firmware contains a substantial MediaTek/Motorola IMS implementation that is absent from the GSI.

Stock /system

Stock contains:

/system/framework/ims-common.jar
/system/framework/moto-ims-ext.jar
/system/framework/moto-telephony.jar
/system/framework/telephony-common.jar

and associated optimized/runtime files.

Stock /system_ext

Stock contains:

/system_ext/framework/mediatek-ims-base.jar
/system_ext/framework/mediatek-ims-oem-plugin.jar
/system_ext/framework/mtk-moto-ims-ext.jar
/system_ext/framework/mtk-moto-telephony-ext.jar
/system_ext/framework/mtk-telephony-common.jar

and:

/system_ext/priv-app/ImsService/ImsService.apk

There are also additional IMS-related applications and libraries.

GSI

The running GSI contains the generic Android:

/system/framework/ims-common.jar

but does not contain the corresponding Motorola/MediaTek implementation stack.

For example, these were specifically checked and are absent:

/system/framework/moto-telephony.jar
/system_ext/framework/mediatek-ims-base.jar
/system_ext/framework/mediatek-ims-oem-plugin.jar
/system_ext/framework/mtk-moto-ims-ext.jar
/system_ext/framework/mtk-moto-telephony-ext.jar
/system_ext/framework/mtk-telephony-common.jar
/system_ext/priv-app/ImsService/ImsService.apk

The GSI’s generic ims-common.jar was compared with the stock version. Both contain the normal com.android.ims framework classes, so simply replacing ims-common.jar does not appear to be the missing piece.

Vendor-side comparison

The stock vendor partition contains the MediaTek RadioEx IMS implementation, including:

vendor.mediatek.hardware.mtkradioex.ims-V1-ndk.so
vendor.mediatek.hardware.mtkradioex.voice-V1-ndk.so
vendor.mediatek.hardware.mtkradioex.mwi-V1-ndk.so

along with the other MediaTek RadioEx components.

Stock also contains IMS/VoLTE support binaries:

/vendor/bin/ipsec_mon
/vendor/bin/rcs_volte_stack
/vendor/bin/volte_clientapi_ua

and supporting libraries such as:

libipsec_ims_shr.so
librcs_volte_core.so

The GSI vendor partition contains the corresponding init scripts and VINTF declarations, but the actual IMS/RadioEx implementation libraries and helper binaries are absent.

For example, the GSI contains init definitions referring to:

/vendor/bin/ipsec_mon
/vendor/bin/rcs_volte_stack
/vendor/bin/volte_clientapi_ua

but those binaries are not present.

Similarly, the GSI VINTF manifest declares the MediaTek RadioEx interfaces, but the corresponding implementation .so files are not present in the GSI vendor filesystem.

Important architectural observation

This appears to be more than a missing configuration flag.

The GSI has portions of the description/configuration of the MediaTek IMS environment:

  • IMS-related permission XML

  • IMS overlays

  • MediaTek RadioEx VINTF declarations

  • init scripts for IMS-related helper processes

but lacks substantial portions of the actual implementation:

  • com.mediatek.ims / ImsService.apk

  • MediaTek IMS framework JARs

  • Motorola IMS/telephony extension JARs

  • MediaTek RadioEx native implementations

  • IMS/VoLTE helper binaries

The runtime result is consistent with this:

No registered "ims" Binder service
        ↓
No com.mediatek.ims package
        ↓
No functional MediaTek IMS service
        ↓
Telephony can initiate the call
        ↓
Call reaches DIALING
        ↓
Connection service unavailable
        ↓
CM_SER_UNAVAILABLE / TelephonyCause 36

This is the current working hypothesis based on the observed evidence.

Why I have not simply copied ImsService.apk

I do not think copying the stock ImsService.apk by itself is a safe or meaningful test.

The stock APK has dependencies on Motorola and MediaTek framework components, including classes/interfaces associated with:

com.mediatek.ims
com.mediatek.ims.internal
com.mediatek.ims.ril
com.mediatek.wfo
com.motorola.android.ims
com.motorola.android.telephony
vendor.mediatek.hardware.mtkradioex

The APK also declares the required shared library:

moto-telephony

and communicates with the MediaTek RadioEx stack.

Therefore, installing only the APK would leave many of its dependencies unresolved.

Request for GSI integration guidance

At this point, I would appreciate your advice on the correct way to integrate the Motorola/MediaTek IMS stack into the GSI.

Specifically:

  1. What is the minimum set of stock framework components required to make com.mediatek.ims function on this Android 16 GSI?

  2. Which of the Motorola/MediaTek framework JARs need to be integrated together?

  3. Which RadioEx HAL implementations and supporting vendor libraries are required?

  4. Are the missing binaries such as volte_clientapi_ua, rcs_volte_stack, and ipsec_mon required for basic MMTEL/VoLTE calling, or only for additional IMS functionality?

  5. Does the GSI’s existing VINTF configuration need modification, or is it already sufficient once the actual vendor implementations are present?

  6. Are there compatibility issues between the stock Motorola Android 16 IMS components and the /e/OS Android 16 GSI framework that need to be handled through overlays, classpath changes, or other integration work?

The goal is not to blindly transplant the stock IMS files. The goal is to identify the correct dependency chain and determine whether the stock IMS implementation can be integrated cleanly into the GSI.

Bottom line

The current evidence strongly indicates that the voice-call failure is associated with the absence of the Motorola/MediaTek IMS implementation in the GSI rather than simply a disabled VoLTE setting.

The most direct runtime evidence is:

adb shell dumpsys ims
Can't find service: ims

combined with:

com.mediatek.ims

being absent from the installed packages, while the stock firmware contains com.mediatek.ims and its supporting framework/vendor stack.

The clean call log then shows:

CM_SER_UNAVAILABLE
TelephonyCause: 36/-1
ImsReasonInfo: null

after the call reaches DIALING.

This gives us a concrete starting point for determining how IMS should be integrated into the unofficial GSI.

what happens if you go into the phh treble options and download the mediatek ims apk? it should be on offer

I don’t think that ChatGPT would have a problem of getting the apk, I think that ChatGPT is saying that it believes that the ims apk would not be enough. I forgot how it put it but something to the effect that there were a lot of dependencies that would also have to be discovered and included and that it didn’t have the whole list. Or something to that effect.

the option to dl the proprietary mtk ims apk is built into the custom gsi settings last I checked. Doesnt mean it will work. But I havent read in this thread that you tried

No, the AI stopped short of trying. It concluded that it wouldn’t work because it had discovered so many dependencies that it didn’t know what to insert. That is when the AI and I decided to send the notes to Colors to get his opinion since he developed the GIS. He suggested looking at the log file, which we did and reported that as well to Colors. I’ve been meaning to look at the various “community” builds to see which one might be the closest to my Moto model. If it is for Motorola and works, that would suggest that at least the telephony part works but I assume it would have to be an Android 16 build. I really got burned out from cutting and pasting not only commands but whole Python scripts of maybe up to 100 lines of code. I’m glad to be taking this break.

Here is what the AI said specifically.

The key question is not simply “can we copy ImsService.apk?” We already know from its manifest and dependencies that it requires the Motorola/MediaTek framework around it. I don’t want to have you start copying pieces until we understand that dependency chain.

I pointed it to the /e/OS devices page to see if there were any community builds that might look promising for my model. It said there were none worth flashing but maybe worth studying to see how they implemented the IMS. Then it decided to look elsewhere other than just that /e/OS devices web page and found several GitHub references. One was “…currently a TWRP/recovery device tree, not a full custom-ROM device tree.”.

Two others looked more promising. It also “…found a current public root script specifically identifying:
Moto G Play 2026 (XT2615-1), codename nevada, MediaTek, Android 16
which confirms that the XT2615 and your XT2613 belong to the same nevada platform family.”

So it is currently doing more investigating which now includes the XT2615 as a possible source.

Try this for now

https://sourceforge.net/projects/lineageos-4-microg/files/GSI/16/test/LineageOS-23.2-2026.09.16-microG-gsi.img.xz/download

1 Like

WOW! OK. I have a report from ChatGPT but first of all my report.

ChatGPT seems to run in “paranoid” mode by default. It had me running a thousand commands testing this, testing that, verifying this, verifying that. I finally told ChatGPT that the /e/OS on the phone was not doing me any good so why not just trust Colors and flash the f**ker. Naturally it said, in effect, OK but lets check this, that and the other thing. Well, we finally flashed it and used Mobil data to go to the Internet and then made and received phone calls. So from what I have tested so far, and that includes WiFi, all seems to work. You probably hear this all the time but I will say it again..”You are a genius”. Thanks a million. I now need to familiarize myself with LineageOS. I know that eOS is a fork of Lineage and forked for the purpose of de-Googlizing which was what I was very interested in. I assume that I can keep Google out of my LineageOS with microG, F-Droid, and being very careful. Thanks again. Here is ChatGPT’s report:
(I just read the last sentence of this AI report. Let me know if you want the full technical report that the AI is referring to.)

I tested your LineageOS 23.2-2026.09.16 microG GSI on the Moto g-2026 (nevada) with my T-Mobile SIM.

Good news: VoLTE/IMS calling works in both directions.

  • Moto → Pixel: outgoing call connected successfully.

  • Pixel → Moto: incoming call rang normally and I was able to answer it.

  • T-Mobile LTE registration is working.

  • The IMS APN is connected and has P-CSCF addresses.

  • com.mediatek.ims is running and the MTK IMS/RadioEx services are present.

So your LineageOS GSI provides working T-Mobile IMS/VoLTE on this phone. This looks like a very useful reference for figuring out what the /e/OS GSI is missing.

If you want, I can also make it a little more technical for Colors, including the specific IMS service names and dumpsys telephony.registry findings.

1 Like

I’ll add on eOS as soon as I have more time. I’m glad of your joy.

1 Like

No problem. I’m just super happy you got me this far. I don’t know how the e.foundation official vs community versions are decided but I would think that this might make at least a “community” version. I know there were other posts requesting Moto G 2026 versions. And, if ChatGPT was correct and the Moto G Play was also a nevada architecture, then it is possible that the G Play would also be included. If you get something ready and need someone with a Moto G 2026 to test it, let me know. Again, thank you very much.

Hi, ehardin!

You have a new version to test but sourceforge is down.

Colors, SourceForge seems to be back up but I don’t see any new downloades. What is the link to the new one?

Colors, Sorry, I found it. I was in your LineageOS folder and not your /e/OS folder. I will flash it today and let you know. This is great. Thanks. Ed

ChatGPT told me to ask you this:
“My Moto G 2026 system_a is 3,064,668,160 bytes, but the new eOS-4.4-a16-2026.09.30-microG-gsi.img is 3,929,972,736 bytes. Does this GSI require enlarging the dynamic system_a partition before flashing, and if so, what exact fastboot/fastbootd procedure should I use?”

It’s a little beyond my knowledge, to be honest. I have not faced this problem, so far. It surprises me, however, that a 2026 phone has such a small partition. I hope someone, here, on the forum, will give you a suitable tip for your device. From what I have read, some partitions can be deleted, but I will have to inform myself.