• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Root [Virgin Mobile] [OLD]Sprint to Virgin Mobile LTE/MMS FIX [OLD]

Rate how the mods worked for you

  • AOSP Version 1 worked (LTE / 3G / MMS / Internet)

    Votes: 0 0.0%
  • AOSP Version 1 partially worked

    Votes: 0 0.0%
  • AOSP Version 2 partially worked

    Votes: 0 0.0%
  • TW Version 1 partially worked

    Votes: 0 0.0%

  • Total voters
    20
I can confirm that sending is working but receiving is not. I tested with Wifi on, Wifi off, and when my phone dropped LTE and went to 3g (still set to LTE/CDMA/EVDO mode). Every time the picture sent to another phone.

I also set the phone into CDMA/EvDo mode just to see what would happen. I was able to send but not receive MMS in this mode as well.

Yeah, as Ryder figured, I couldn't receive MMS in LTE, just send. You got this Ryder, just keep at it bro!!
 
  • Like
Reactions: MopedRyder
Upvote 0
Bear with me here while Ill try to explain what Ive found and what I think is happening. I could be wrong on some points here but I figure if I throw out my findings I might get some input that could spark an idea. Im running our of them.

Ok basically you phone utilizing the line that dictates what its for. Let me explain the sections of the lines and what Im finding they mean:

Example line:
<apn carrier="APN1 Virgin Internet LTE" numeric="310120" mcc="310" mnc="120" apn="n.vmu.ispsn" user="" server="" password="" proxy="null" port="null" mmsproxy="205.239.233.136" mmsport="81" mmsprotocol="null" mmsc="http://mmsc.vmobl.com:8088/mms?" type="default,supl,mms,fota,dun" bearer="14" />

What they mean:

numeric="310120"
-Information from what I can tell. not really needed. Hasnt impacted anything when I switched it up.

mcc="310" mnc="120"
-Indicate the company it will attach you. 310/120 is Sprint. (311 & 490 is Virgin Mobile). Any line you set to the virgin mobile doesn't show up in the list and from what I can tell is not used.

apn="n.vmu.ispsn"
-From what I can tell its like a format or category to connect. "n.vmu.ispsn" will allow LTE connections, but "n.ispsn" wont.

server="" password="" proxy="null" port="null"
-Ive put junk in these any hasn't impacted it from what I could tell - but I could be very wrong here.

mmsproxy="205.239.233.136" mmsport="81"
-This is the settings that control outbound MMS sending on data. It wont work if the mmsc= line is empty though.

mmsc="http://mmsc.vmobl.com:8088/mms?"
-From what I can tell from logcats this handles inbound MMS. The problem is if the apn= is set to n.vmu.ispsn then it seemed to always fail at accepting MMS due to "HTTP error: Authorization Required" error. If the anp= is set to n.ispsn then it seemed to work - but ispsn doesnt connect via LTE.

type="default,supl,mms,fota,dun"
-Another important line. This will indicate if the entire line should be used to connect for that type. "Default" is internet connection basically, and "MMS" is well MMS. This means if all only 1 line has type="mms" that is the only line used for that type. The problem is it doesn't connect via LTE - only EHRPD (3G).

bearer="14"
-13 = EHRPD and 14=LTE. It can also be empty and is listed as unspecified.


Ok so If I use the apn="n.vmu.ispsn" setting it will connect via LTE. It also requires all inbound MMS messages to have some sort of authentication. ("Sprint" and "*" doesn't work btw). MMS arrival messages only seemed to work if the apn= setting was either "n.ispsn" or "cinet.spcs" - but these wont connect via LTE, only EHRPD.

So I tried to set it up with 3 lines once. First two had "n.vmu.ispsn" and types of everything BUT mms. The last line had "n.ispsn" and type="mms". What I thought was it would run off the LTE line but when MMS was incountered it would downshift to EHRPD and the "n.ispsn" line then send/receive and then upshift back to "n.vmu.ispsn"....it didnt seem to work.


Here is my testing files so far. See if anyone has any ideas

APN Data
 
Upvote 0
After tireless research in the sprint ROMs at XDA and remembering all the things that were required for getting mms working on other virgin mobile phones without LTE; I have concluded that it must be something within the CM MMS.apk. Thins issue was fixed in carbonROM with a modded version of the APK. The main issue plaguing most sprint users with the S3 on AOSP ROMs after most of the bugs got worked out was still receiving PIX on LTE, this only seemed to be remedied using an edited MMS.apk (this was also the case for the virgin mobile HTC 3VO)
I'll spend today looking through smali and see if i can figure it out....
 
Upvote 0
So if I was to use carbon ROM and the latest fix by Ryder I should be good to send and receive mms in LTE? I'll research and test when I get home, but if you have links to a specific carbon ROM or apk please post it.

Were talking about a sprint side ROM so this still wouldn't fix our problem for incoming... Something in theory may need to be changed within our own MMS.apk specific to VM for us to receive correctly... Looked at the decompiled apk but still wasn't able to find the right piece of code.
 
Upvote 0
Were talking about a sprint side ROM so this still wouldn't fix our problem for incoming... Something in theory may need to be changed within our own MMS.apk specific to VM for us to receive correctly... Looked at the decompiled apk but still wasn't able to find the right piece of code.

did you check the res/xml folder? should be an mms.xml file that has the mmsc address in there and itll be the sprint one not the virgin one
 
Upvote 0
did you check the res/xml folder? should be an mms.xml file that has the mmsc address in there and itll be the sprint one not the virgin one

I feel like an idiot... I've been pouring through small all night... I was thinking it was an error in the proxy method that was laid out in the MmsSystemPushMsgReceiver.smali; or some other file in there.... Of course, the XML.... Lemme look now...

EDIT: This is the only address i found in the XML:
" <string name="uaProfUrl">http://wap.samsungmobile.com/uaprof/GT-I9300.xml</string>"

The content of the above address is here: http://pastebin.com/S0D6Atyq

Reading through the link it seems to answer the question of why there is almost no XML in the MMS file.... it all seems to have web-link XML references.
 
Upvote 0
yea apks use some odd methods, even most category names are stored remotely in the strings.xml. i guess to a point it does make some editing easier but other times it makes things way more complicates than they need to be

but yea does that change fix it for sure? kuz it could very well be the ua profile, that is what decides formatting for the downloaded content, bit there may also be an mmsc address like in the apn
 
  • Like
Reactions: punkmaxx
Upvote 0
yea apks use some odd methods, even most category names are stored remotely in the strings.xml. i guess to a point it does make some editing easier but other times it makes things way more complicates than they need to be

but yea does that change fix it for sure? kuz it could very well be the ua profile, that is what decides formatting for the downloaded content, bit there may also be an mmsc address like in the apn

I couldn't find an mmsc address anywhere in the XML files....
 
Upvote 0
sometimes its put in there sometimes its not

well, i'm gonna keep digging through the XDA forums for the d2spr builds and see if i can pinpoint what was done to get their MMS working (which was a fairly recent fix) and try to work out a lateral solution for our problem using that and the info that yourself and mopedryder have found out so far.... (Fingers crossed....)
 
Upvote 0
this chunk of code was in the /res/xml/preferences.xml inside SecMms.apk that is included with our stock phones. (Bolded lines NOT in the CM10.2 Mms.apk preferences.xml)
I've Bolded a few lines that may be of interest.... (These are Still all shots in the dark.)

<PreferenceCategory android:title="@string/pref_mms_settings_title" android:key="pref_key_mms_settings">
<CheckBoxPreference android:title="@string/pref_title_mms_delivery_reports" android:key="pref_key_mms_delivery_reports" android:summary="@string/pref_summary_mms_delivery_reports" android:defaultValue="false" />
<CheckBoxPreference android:title="@string/pref_title_send_mms_delivery_reports" android:key="pref_key_send_mms_delivery_reports" android:summary="@string/pref_summary_allow_mms_delivery_reports" android:defaultValue="true" />
<CheckBoxPreference android:title="@string/pref_title_mms_read_reports" android:key="pref_key_mms_read_reports" android:summary="@string/pref_summary_mms_read_reports" android:defaultValue="false" />
<CheckBoxPreference android:title="@string/pref_title_mms_auto_retrieval" android:key="pref_key_mms_auto_retrieval" android:summary="@string/pref_summary_mms_auto_retrieval" android:defaultValue="true" />
<CheckBoxPreference android:title="@string/pref_title_mms_retrieval_during_roaming" android:key="pref_key_mms_retrieval_during_roaming" android:summary="@string/pref_summary_mms_retrieval_during_roaming" android:dependency="pref_key_mms_auto_retrieval" android:defaultValue="false" />
<ListPreference android:entries="@array/pref_entries_mms_creation_mode" android:title="@string/pref_title_mms_creation_mode" android:key="pref_key_mms_creation_mode" android:summary="@string/pref_summary_mms_creation_mode" android:widgetLayout="@layout/round_more_icon" android:defaultValue="free" android:dialogTitle="@string/pref_dialog_title_mms_creation_mode" android:entryValues="@array/pref_entry_values_mms_creation_mode" />
<CheckBoxPreference android:title="@string/pref_mms_change_over_alarm_title" android:key="pref_key_mms_change_over_alarm" android:summary="@string/pref_mms_change_over_alarm" android:defaultValue="false" />
<CheckBoxPreference android:title="@string/reply_all_preference_text" android:key="pref_key_mms_allow_reply_all" android:summary="@string/reply_all_preference_summary" android:defaultValue="true" />
<ListPreference android:entries="@array/expiry_date_entries" android:title="@string/expiry_date_preferences" android:key="pref_key_mms_expiry_time" android:summary="@string/expiry_date_preferences_summary" android:widgetLayout="@layout/round_more_icon" android:defaultValue="4" android:entryValues="@array/expiry_date_values" />
<ListPreference android:entries="@array/mms_priority_entries" android:title="@string/message_priority" android:key="pref_key_mmspriority" android:summary="@string/mms_priority_summary" android:widgetLayout="@layout/round_more_icon" android:defaultValue="2" android:dialogTitle="@string/message_priority" android:entryValues="@array/mms_priority_values" />
<ListPreference android:entries="@array/delivery_time_entries" android:title="@string/message_delivery_time" android:key="pref_key_mms_delivery_time" android:summary="@string/message_delivery_time" android:widgetLayout="@layout/round_more_icon" android:defaultValue="0" android:dialogTitle="@string/message_delivery_time" android:entryValues="@array/delivery_time_values" />
<EditTextPreference android:enabled="false" android:singleLine="true" android:title="@string/pref_title_mmsc_url" android:key="pref_mmsc_url" android:summary="http://mmsc.vnet.mobi" android:defaultValue="http://mmsc.vnet.mobi" android:dialogTitle="@string/pref_title_mmsc_url" />
<EditTextPreference android:enabled="false" android:singleLine="true" android:title="@string/pref_title_mmsc_port" android:key="pref_mmsc_port" android:summary="80" android:defaultValue="80" android:dialogTitle="@string/pref_title_mmsc_port" />

</PreferenceCategory>
 
  • Like
Reactions: upconvert
Upvote 0
well if cm doesnt have the secmms.apk, and those were stock settings, the ones we have in thr apns might br wrong too. not saying its a sure thing, if i knew for sure what was going on i woulda fixed it already, but try it both ways just in case

always try every possibility, even if you think theyre wrong thinking they wont work and knoeing they wont work are two completely different things
 
  • Like
Reactions: upconvert
Upvote 0
For Virgin Mobile Galaxy Victory, there is a chameleon setting provisioner in the SecMms.apk which, on stock apn-conf.XML and build.prop, pulls the mmsc settings through. I haven't been able to figure out exactly how it works but I'm working on it. Maybe you guys can take a look for a similar function on the S3? It's in the smali code.
 
Upvote 0
For Virgin Mobile Galaxy Victory, there is a chameleon setting provisioner in the SecMms.apk which, on stock apn-conf.XML and build.prop, pulls the mmsc settings through. I haven't been able to figure out exactly how it works but I'm working on it. Maybe you guys can take a look for a similar function on the S3? It's in the smali code.

this was found in a smali folder in SecMms.apk that is not even contained in the AoSP Mms.apk

Found at /SecMms\smali\com\android\mms\provisioning
These two files:
MmsProvisionActivity.smali (Pastebin)
and
MmsProvisionReceiver.smali (Pastebin)

The latter file contained some interesting code at the beginning.... Chameleon interface Specific:

# instance fields
.field private final CHAMELEON_UPDATE:Ljava/lang/String;

.field private final START_PREFERENCE:Ljava/lang/String;


# direct methods
.method public constructor <init>()V
.locals 1

.prologue
.line 15
invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V

.line 17
const-string v0, "com.sec.android.app.mmsprovision"

iput-object v0, p0, Lcom/android/mms/provisioning/MmsProvisionReceiver;->START_PREFERENCE:Ljava/lang/String;

.line 18
const-string v0, "android.intent.action.CHAMELEON_SMS_MMS_UPDATE"

iput-object v0, p0, Lcom/android/mms/provisioning/MmsProvisionReceiver;->CHAMELEON_UPDATE:Ljava/lang/String;

return-void
.end method
 
  • Like
Reactions: upconvert
Upvote 0
this was found in a smali folder in SecMms.apk that is not even contained in the AoSP Mms.apk

Found at /SecMms\smali\com\android\mms\provisioning
These two files:
MmsProvisionActivity.smali (Pastebin)
and
MmsProvisionReceiver.smali (Pastebin)

The latter file contained some interesting code at the beginning.... Chameleon interface Specific:

I was playing around with the smali code in an AOSP MMS.APK a few days ago, trying to figure out what the SecMms.apk does to send/receive MMS messages. I found where it pulls MMSC settings from the apns-conf.xml and changed the code so that "http://mmsc.vmobl.com:8088/mms?" was hardcoded and hardcoded the proxy and proxy port to be blank. The APK would send MMS perfectly this way. Receiving, however, gave me an authentication error in the logcat.

I don't have 4G so it's difficult for me to test anything, but I had a volunteer helping me with my ROM over in the VM Galaxy Victory forum and they tested the apns-conf.xml that are from this thread. Sending and receiving with a stock(ish) MMS program didn't work out of the box over 4G (using 8sms with secmms.apk removed); 8sms was pulling the VM apn with the proxy and port set. When he manually entered the MMSC URL to the Virgin Mobile MMSC and left the port and proxy blank, however, it worked. Maybe this will help you. I am stumped.

EDIT: Also found this today while looking for an explanation for the provisioning smali:

Code:
adb shell
am broadcast -a com.sec.android.app.mmsprovision

That pops up a nice MMS provisioning menu on stock TouchWiz (on my phone) that shows me what the MMSC is currently auto-set to as well as the MMS user agent. Maybe the user agent is wrong in the MMS.APK and that's why we can't receive?

EDIT: Tried changing the user agent. Still no go on receiving MMS. I've noticed that the com.sec.android.app.mmsprovision has an option to enable "MMS Transaction Logging (for debugging)" but I haven't been able to tell where it stores this log...
 
Upvote 0
I found these lines of interest:
<string name="userAgent">sami515</string>
<string name="uaProfTagName">Profile</string>
<string name="uaProfUrl">http://uaprof.vtext.com/sam/i515/i515.xml</string>
<int name="recipientLimit">20</int>
<string name="httpParams">x-up-calling-line-id: 1##LINE1##|X-VzW-MDN: 1##LINE1##</string>
<string name="httpParamsLine1Key">##LINE1##</string>
They were inside the /res/xml/mms_config.xml from the Modded version of the CM 10.1 Mms.apk that was used to fix the MMS problems on the VM Htc Evo 3D.

Back when i had that phone,lens_flare & Wolfu were the only DEVs that were able to get MMS working on non-sense ROMs...
No matter what was changed in the apns-conf.xml and the build.prop or even in the framework couldn't fix all the MMS problems until this Modded APK was made and then subsequently incorporated into future VM specific 3VO ROMs.
I am not sure what he changed exactly, but i will PM him and try to find a path to a parallel solution somehow. I would urge others to try and follow this path as well and also try to contact any of the parties involved in reaching this solution for the VM 3VO....

The Thread is Located Here... [ZIP] MMS FIX FOR CM/AOSP/AOKP


....Please any insight and help from others on this situation would be greatly appreciated
 
Upvote 0
Reference the /res/xml/mms_config.xml I found this:

[MOD][DIY] Get Working MMS + SMS Auto-Split for CM10.1 and AOSP ROMs - xda-developers

Change code to:
Code:
<?xml version="1.0" encoding="utf-8"?>
<mms_config version="3">
    <int name="maxMessageSize">307200</int>
    <int name="maxImageHeight">480</int>
    <int name="maxImageWidth">640</int>
    <string name="userAgent">SAMSUNG-SPH-L710-Mms/2.0</string>
    <bool name="enableMultipartSMS">true</bool>
    <bool name="enableSplitSMS">true</bool>
    <string name="uaProfUrl">http://device.sprintpcs.com/Samsung/</string>
</mms_config>

Also check out this email:
https://androidgithost.com/patrickc...5a00ecae08146311109fee148e87968f31582e4.patch

I built Mms.apk with the above lines and tried a few different apn settings. With:
MMSC=http://mmsc.vmobl.com:8088/mms?
MMS Proxy=68.28.31.7
MMS port=80

With the above I was again still able to send MMS but not receive. I did get an error I didn't notice before (may have happened but dont remember seeing it)

Check out the logcat:
Code:
10-15 10:06:17.090 D/WAP PUSH(1427): wpman processMsg 4:application/vnd.wap.mms-message
10-15 10:06:17.140 W/WAP PUSH(1427): no receiver app found for 4:application/vnd.wap.mms-message
10-15 10:06:17.180 W/BroadcastQueue(666): Permission Denial: receiving Intent { act=android.provider.Telephony.WAP_PUSH_RECEIVED typ=application/vnd.wap.mms-message flg=0x10 (has extras) } to com.rdr.widgets.core/.messaging.receivers.IncomingMessageReceiver requires android.permission.RECEIVE_MMS due to sender com.android.phone (uid 1001)
10-15 10:06:17.280 V/TransactionSettings(2851): APN setting: MMSC: http://mmsc.vmobl.com:8088/mms? looked for: current IS NOT NULL
10-15 10:06:17.310 D/ConnectivityService(666): startUsingNetworkFeature reconnecting to 0: enableMMS
10-15 10:06:17.360 D/ConnectivityService(666): ConnectivityChange for mobile_mms: CONNECTED/CONNECTED
10-15 10:06:20.474 I/NetworkMonitor(3644): Ignore following network type: 2 (mobile_mms) - action: android.net.conn.CONNECTIVITY_CHANGE
10-15 10:06:20.534 V/TransactionSettings(2851): APN setting: MMSC: http://mmsc.vmobl.com:8088/mms? looked for: current IS NOT NULL
10-15 10:06:21.164 E/Mms:transaction(2851): Url: http://mmsc.vmobl.com:8088/ammsc/?ApIwhQaCKc2lCKIIq
10-15 10:06:21.164 E/Mms:transaction(2851): HTTP error: Authorization Required
10-15 10:06:21.695 D/ConnectivityService(666): stopUsingNetworkFeature: teardown net 0: enableMMS
10-15 10:06:21.725 D/ConnectivityService(666): ConnectivityChange for mobile_mms: DISCONNECTED/DISCONNECTED
10-15 10:06:24.848 I/NetworkMonitor(3644): Ignore following network type: 2 (mobile_mms) - action: android.net.conn.CONNECTIVITY_CHANGE
10-15 10:06:37.822 V/TransactionSettings(2851): APN setting: MMSC: http://mmsc.vmobl.com:8088/mms? looked for: current IS NOT NULL
10-15 10:06:37.912 D/ConnectivityService(666): startUsingNetworkFeature reconnecting to 0: enableMMS
10-15 10:06:37.952 D/ConnectivityService(666): ConnectivityChange for mobile_mms: CONNECTED/CONNECTED

Check out the "10-15 10:06:17.180 W/BroadcastQueue(666)" line. Interesting
 
  • Like
Reactions: punkmaxx
Upvote 0
Now add the receive MMS permission to the app and see what happens?

Funny thing is the AndroidManifest.xml already has:

Code:
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones