Where to prod your CDMA phone in order to tease out the APN info.

deega

Senior Member
Dec 3, 2015
69
77
0
So I dug around a bit and here's what I can gather:

  • mcc="310" mnc="120" is appropriate for LTE on Sprint MVNOs, at least it is on VM.
  • 310120 is derived from IMSI which is provided by the RUIM.
  • The MVNOs inject APN information via ODA-DM client.
  • /persist/odadm_cust_database/pridata contains some interesting information. It's a SQLite3 database, but opening it in a text editor is enlightening.
  • /persist/telephony/apn.perm contains everything one would need to reconstruct the APN injected by ODA-DM.

I know it would be really cool if custom ROMs could include the APN info by default, but I just don't see a reasonable way to do this without either installing ODA-DM client (evil!) or throwing together a quick app that applies the appropriate MVNO APN settings based on user selection. These things were designed by the carriers to do things in a way not so different than we already do by patching the system with flashable zips.

Contents of /persist/telephony/apn.perm on my Virgin Mobile XT1526:
Code:
>>>>> Dumping cursor [email protected]
0 {
   _id=2427
   name=otasn
   numeric=310000
   mcc=310
   mnc=000
   apn=otasn
   user=null
   server=null
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=fota
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
1 {
   _id=2428
   name=otasn
   numeric=310000
   mcc=310
   mnc=000
   apn=otasn
   user=null
   server=null
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=fota
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
2 {
   _id=2956
   name=n.ij.ispsn
   numeric=310000
   mcc=310
   mnc=000
   apn=n.ij.ispsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=default,mms,ia
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
3 {
   _id=2957
   name=n.ij.ispsn
   numeric=310000
   mcc=310
   mnc=000
   apn=n.ij.ispsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=default,mms,ia
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
<<<<<
I should have dug around in here months ago.
 

starkly_raving

Senior Member
May 25, 2012
1,214
1,048
0
Vegas
So I dug around a bit and here's what I can gather:

  • mcc="310" mnc="120" is appropriate for LTE on Sprint MVNOs, at least it is on VM.
  • 310120 is derived from IMSI which is provided by the RUIM.
  • The MVNOs inject APN information via ODA-DM client.
  • /persist/odadm_cust_database/pridata contains some interesting information. It's a SQLite3 database, but opening it in a text editor is enlightening.
  • /persist/telephony/apn.perm contains everything one would need to reconstruct the APN injected by ODA-DM.

I know it would be really cool if custom ROMs could include the APN info by default, but I just don't see a reasonable way to do this without either installing ODA-DM client (evil!) or throwing together a quick app that applies the appropriate MVNO APN settings based on user selection. These things were designed by the carriers to do things in a way not so different than we already do by patching the system with flashable zips.

Contents of /persist/telephony/apn.perm on my Virgin Mobile XT1526:
Code:
>>>>> Dumping cursor [email protected]
0 {
   _id=2427
   name=otasn
   numeric=310000
   mcc=310
   mnc=000
   apn=otasn
   user=null
   server=null
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=fota
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
1 {
   _id=2428
   name=otasn
   numeric=310000
   mcc=310
   mnc=000
   apn=otasn
   user=null
   server=null
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=fota
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
2 {
   _id=2956
   name=n.ij.ispsn
   numeric=310000
   mcc=310
   mnc=000
   apn=n.ij.ispsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=default,mms,ia
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
3 {
   _id=2957
   name=n.ij.ispsn
   numeric=310000
   mcc=310
   mnc=000
   apn=n.ij.ispsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.7
   mmsport=80
   mmsc=http://mms.plspictures.com
   authtype=0
   type=default,mms,ia
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
<<<<<
I should have dug around in here months ago.
Nice find! I've been saying for months that its a telephony provisioning issue. I just didn't know where to look exactly. [emoji106]

Sent from my CAF Moto X

---------- Post added at 08:35 AM ---------- Previous post was at 08:31 AM ----------

I also wonder if the ODA-DM has any specific intents we could take from the manifest and manipulate/implement.

Sent from my CAF Moto X
 

deega

Senior Member
Dec 3, 2015
69
77
0
I picked up a Sprint Prepaid XT1526 today and after finally getting it to activate I found this in the same location.

Note that the numeric=312530 mcc=312 mnc=530 was accurate under stock, but as soon as I flashed CAF-6.0.1 it was hunting in 310120 again. That provisioning client does some funny stuff.

I haven't fully activated service on the phone so I cannot confirm that 310120 is the proper carrier, but it does prompt me to log into the network using the n.sprpre.ispsn and gives an !4G indicator.
Code:
>>>>> Dumping cursor [email protected]
0 {
   _id=2903
   name=otasn
   numeric=312530
   mcc=312
   mnc=530
   apn=otasn
   user=null
   server=null
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.2
   mmsport=80
   mmsc=http://mmsc.vmobl.com:8088
   authtype=0
   type=fota
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=-1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
1 {
   _id=2904
   name=otasn
   numeric=312530
   mcc=312
   mnc=530
   apn=otasn
   user=null
   server=null
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.2
   mmsport=80
   mmsc=http://mmsc.vmobl.com:8088
   authtype=0
   type=fota
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=-1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
2 {
   _id=2956
   name=sprpre.pamsn
   numeric=312530
   mcc=312
   mnc=530
   apn=sprpre.pamsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.2
   mmsport=80
   mmsc=http://mmsc.vmobl.com:8088
   authtype=0
   type=dun
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
3 {
   _id=2957
   name=sprpre.pamsn
   numeric=312530
   mcc=312
   mnc=530
   apn=sprpre.pamsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.2
   mmsport=80
   mmsc=http://mmsc.vmobl.com:8088
   authtype=0
   type=dun
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
4 {
   _id=2958
   name=n.sprpre.ispsn
   numeric=312530
   mcc=312
   mnc=530
   apn=n.sprpre.ispsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.2
   mmsport=80
   mmsc=http://mmsc.vmobl.com:8088
   authtype=0
   type=default,mms,ia
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=14
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
5 {
   _id=2959
   name=n.sprpre.ispsn
   numeric=312530
   mcc=312
   mnc=530
   apn=n.sprpre.ispsn
   user=null
   server=
   password=null
   proxy=
   port=
   mmsproxy=68.28.31.2
   mmsport=80
   mmsc=http://mmsc.vmobl.com:8088
   authtype=0
   type=default,mms,ia
   current=1
   protocol=IPV4
   roaming_protocol=IPV4
   carrier_enabled=1
   bearer=13
   bearers=null
   mvno_type=
   mvno_match_data=
   sub_id=1
   profile_id=-1
   modem_cognitive=0
   max_conns=0
   wait_time=0
   max_conns_time=0
   mtu=null
   mode=17
}
<<<<<
 
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone