VoLTE regression in Infinity-X 3.10 on MTK Helio P22 (MT6769S) — MMTEL stuck at EMERGENCY_OVER_MMTEL despite carrier_volte_available=true and IMS PDN connecting
Summary
After upgrading from Infinity-X 3.9 (2026-04-19 build) to Infinity-X 3.10 (2026-05-10 build), VoLTE stopped working on my QIN F22 Pro (MT6769S / Helio P22). Every outgoing/incoming voice call now performs CSFB to UMTS/HSDPA (3G) instead of staying on LTE via VoLTE. The exact same hardware, modem firmware, MTK IMS APK, carrier configuration, and Magisk modules worked perfectly on 3.9. The only change was the GSI upgrade.
Environment
| Field |
Value |
| ROM |
Infinity-X 3.10 GSI (Infinity-X-3.10_GSI_treble_arm64-ab_GAPPS-Official-20260510.img.xz) |
| Last known working |
Infinity-X 3.9 (Infinity-X-3.9_GAPPS_20260426) |
| Device |
QIN F22 Pro |
| SoC |
MediaTek Helio P22 (MT6769S) |
| Build fingerprint |
QIN/full_AGN_1244RO_MT6769S_MX6432/AGN_1244RO_MT6769S_MX6432:12/SP1A.210812.016/1690270202:user/release-keys |
| Build ID |
BP4A.251205.006 release-keys (Android 16) |
| Carrier |
HOT mobile Israel (mccmnc 42507, carrier_id 1991) |
| IMS APK |
PHH-resigned ims-mtk-u (SHA1 matches floss-ims-29-udp-resigned exactly) |
| Magisk |
Yes, with f22pro_connectivity_fix module providing carrier_config override + IMS APN + props |
| PIF |
Yes (PlayIntegrityFix v4.5-inject-s, Zygisk hooks only — verified not the cause; disabling did not help) |
Reproduction
- Flash Infinity-X 3.10 GSI on Helio P22 device with HOT mobile (or any carrier where VoLTE was previously working on 3.9).
- Ensure
carrier_volte_available_bool=true is loaded (via dumpsys carrier_config).
- Ensure IMS PDN connects successfully —
dumpsys connectivity shows the IMS network with MMTEL capability and a valid PcscfAddresses from the carrier.
- Place an outgoing voice call.
- Observe:
getRilVoiceRadioTechnology drops from 14 (LTE) to 3 (UMTS); callTechnologies: [GSM]; data switches LTE → HSDPA for the duration of the call (classic CSFB).
Evidence
IMS service state:
addConnection, subId=2, type=MMTEL,
state=UNAVAILABLE,
capabilities = capabilities={ EMERGENCY_OVER_MMTEL }
MTK IMS (com.mediatek.ims/.MtkDynamicImsService) binds and reaches state=READY, hasConfig=true at the controller level, but the MmTel feature only reports the EMERGENCY_OVER_MMTEL capability. SIP REGISTER never happens.
Carrier config (HOT mobile, applied correctly):
carrier_volte_available_bool = true
carrier_vt_available_bool = true
carrier_volte_provisioned_bool = true
carrier_volte_provisioning_required_bool = false
volte_replacement_rat_int = 14
ignore_vops_changes_for_volte_replacement_bool = true
support_vops_when_combined_attach_bool = true
editable_volte_override_lte_capability_bool = true
Modem report (the actual blocker):
LteVopsSupportInfo : mVopsSupport = 2 mEmcBearerSupport = 2
NetworkRegistrationInfo: domain=CS transportType=WWAN accessNetworkTechnology=LTE
availableServices=[VOICE,SMS,VIDEO] ← Combined Attach (CSFB) accepted by network
IMS PDN (proves the carrier does accept IMS):
NetworkAgentInfo network{172} ni{MOBILE[LTE] CONNECTED extra: ims}
InterfaceName: ccmni1
PcscfAddresses: [ /10.101.227.102 ]
Capabilities: IMS&...&MMTEL
So the IMS bearer comes up fine and the network allocates a P-CSCF. The framework simply doesn't drive SIP REGISTER because mVopsSupport=2 is interpreted as "no VoLTE", even though ignore_vops_changes_for_volte_replacement_bool=true is set.
SIM / subscription (HOT mobile is provisioned):
carrierId=1991 displayName=HOT mobile mcc=425 mnc=07
isEnhanced4GModeEnabled=1
isVideoTelephonyEnabled=1
isVoImsOptInEnabled=1
serviceCapabilities=7
Diff between 3.9 and 3.10 (extracted from both ROM images)
Decompressed both .img.xz files and compared /system/ contents. Only two framework jars changed:
| File |
3.9 SHA1 |
3.10 SHA1 |
Size delta |
system/priv-app/TrebleApp/TrebleApp.apk |
d93b3efe10... |
d93b3efe10... |
identical |
system/framework/telephony-common.jar |
8c6336b193... |
d87b00f774... |
+440 bytes |
system/framework/ims-common.jar |
bf9641f54a... |
f2828af606... |
differs |
The telephony-common.jar delta is tiny (~440 bytes) and includes (among possibly other tiny changes) the new string persist.sys.phh.force_euicc_slots. This strongly suggests the regression is a small change in one of these two jars.
What was tried (none fixed it)
- Forced
cmd phone ims disable → cmd phone ims enable (with subId 2 explicitly)
am force-stop com.mediatek.ims + framework re-bind — MtkDynamicImsService rebinds but still reports only EMERGENCY_OVER_MMTEL
- Manually set
vendor.ril.mtk_hvolte_indicator=1
- Set
preferred_network_mode=11 (LTE_ONLY) — modem still performs Combined Attach (CS over LTE)
- Toggled airplane mode for fresh attach
- Two full reboots (so
init.f22pro.rc + restore_volte.sh + carrier_volte_override.sh re-ran cleanly)
- Wiped
/data/user_de/0/com.android.phone/files/carrierconfig* and imsprovisioningstatus_*.xml then rebooted to force fresh provisioning state
- Wiped
/data/data/com.mediatek.ims/files/* and cache/*
- Enabled
wfc_ims_enabled=1 as a fallback — carrier_wfc_ims_available_bool=false, so WFC didn't engage either
- Tried installing FlossIMS — blocked by
sharedUserId="android.uid.system" signature mismatch on Infinity-X
- Temporarily disabled PIF — no change (confirms PIF Zygisk hooks aren't the cause)
Expected behavior
SIP REGISTER should be initiated and MTK IMS should report MMTEL VOICE capability, given that:
carrier_volte_available_bool=true
carrier_volte_provisioned_bool=true
ignore_vops_changes_for_volte_replacement_bool=true
- The IMS PDN connects with a valid P-CSCF address
- The same configuration works on 3.9 with no change to the carrier, SIM, IMEI, or modem firmware (vendor partition is untouched between GSI versions)
Ask
Could you check what changed in telephony-common.jar / ims-common.jar between 3.9 (2026-04-19) and 3.10 (2026-05-10)? Specifically anything touching:
- VoPS interpretation in
ServiceStateTracker or DcTracker
ImsPhone / ImsPhoneCallTracker capability gating
- The
volte_replacement_rat_int / ignore_vops_changes_for_volte_replacement_bool path
Happy to provide additional dumpsys phone, dumpsys telephony.registry, dumpsys carrier_config, and full logcat -b radio traces if useful.
Thanks for maintaining this excellent project. 3.9 was rock-solid on Helio P22.
VoLTE regression in Infinity-X 3.10 on MTK Helio P22 (MT6769S) — MMTEL stuck at EMERGENCY_OVER_MMTEL despite carrier_volte_available=true and IMS PDN connecting
Summary
After upgrading from Infinity-X 3.9 (2026-04-19 build) to Infinity-X 3.10 (2026-05-10 build), VoLTE stopped working on my QIN F22 Pro (MT6769S / Helio P22). Every outgoing/incoming voice call now performs CSFB to UMTS/HSDPA (3G) instead of staying on LTE via VoLTE. The exact same hardware, modem firmware, MTK IMS APK, carrier configuration, and Magisk modules worked perfectly on 3.9. The only change was the GSI upgrade.
Environment
Infinity-X-3.10_GSI_treble_arm64-ab_GAPPS-Official-20260510.img.xz)Infinity-X-3.9_GAPPS_20260426)QIN/full_AGN_1244RO_MT6769S_MX6432/AGN_1244RO_MT6769S_MX6432:12/SP1A.210812.016/1690270202:user/release-keysBP4A.251205.006 release-keys(Android 16)42507, carrier_id1991)ims-mtk-u(SHA1 matchesfloss-ims-29-udp-resignedexactly)f22pro_connectivity_fixmodule providing carrier_config override + IMS APN + propsPlayIntegrityFix v4.5-inject-s, Zygisk hooks only — verified not the cause; disabling did not help)Reproduction
carrier_volte_available_bool=trueis loaded (viadumpsys carrier_config).dumpsys connectivityshows the IMS network withMMTELcapability and a validPcscfAddressesfrom the carrier.getRilVoiceRadioTechnologydrops from 14 (LTE) to 3 (UMTS);callTechnologies: [GSM]; data switches LTE → HSDPA for the duration of the call (classic CSFB).Evidence
IMS service state:
MTK IMS (
com.mediatek.ims/.MtkDynamicImsService) binds and reachesstate=READY, hasConfig=trueat the controller level, but the MmTel feature only reports the EMERGENCY_OVER_MMTEL capability. SIP REGISTER never happens.Carrier config (HOT mobile, applied correctly):
Modem report (the actual blocker):
IMS PDN (proves the carrier does accept IMS):
So the IMS bearer comes up fine and the network allocates a P-CSCF. The framework simply doesn't drive SIP REGISTER because
mVopsSupport=2is interpreted as "no VoLTE", even thoughignore_vops_changes_for_volte_replacement_bool=trueis set.SIM / subscription (HOT mobile is provisioned):
Diff between 3.9 and 3.10 (extracted from both ROM images)
Decompressed both
.img.xzfiles and compared/system/contents. Only two framework jars changed:system/priv-app/TrebleApp/TrebleApp.apkd93b3efe10...d93b3efe10...system/framework/telephony-common.jar8c6336b193...d87b00f774...system/framework/ims-common.jarbf9641f54a...f2828af606...The
telephony-common.jardelta is tiny (~440 bytes) and includes (among possibly other tiny changes) the new stringpersist.sys.phh.force_euicc_slots. This strongly suggests the regression is a small change in one of these two jars.What was tried (none fixed it)
cmd phone ims disable→cmd phone ims enable(with subId 2 explicitly)am force-stop com.mediatek.ims+ framework re-bind — MtkDynamicImsService rebinds but still reports only EMERGENCY_OVER_MMTELvendor.ril.mtk_hvolte_indicator=1preferred_network_mode=11(LTE_ONLY) — modem still performs Combined Attach (CS over LTE)init.f22pro.rc+restore_volte.sh+carrier_volte_override.shre-ran cleanly)/data/user_de/0/com.android.phone/files/carrierconfig*andimsprovisioningstatus_*.xmlthen rebooted to force fresh provisioning state/data/data/com.mediatek.ims/files/*andcache/*wfc_ims_enabled=1as a fallback —carrier_wfc_ims_available_bool=false, so WFC didn't engage eithersharedUserId="android.uid.system"signature mismatch on Infinity-XExpected behavior
SIP REGISTER should be initiated and MTK IMS should report MMTEL VOICE capability, given that:
carrier_volte_available_bool=truecarrier_volte_provisioned_bool=trueignore_vops_changes_for_volte_replacement_bool=trueAsk
Could you check what changed in
telephony-common.jar/ims-common.jarbetween 3.9 (2026-04-19) and 3.10 (2026-05-10)? Specifically anything touching:ServiceStateTrackerorDcTrackerImsPhone/ImsPhoneCallTrackercapability gatingvolte_replacement_rat_int/ignore_vops_changes_for_volte_replacement_boolpathHappy to provide additional
dumpsys phone,dumpsys telephony.registry,dumpsys carrier_config, and fulllogcat -b radiotraces if useful.Thanks for maintaining this excellent project. 3.9 was rock-solid on Helio P22.