MVNO displayed as "Roaming"

After inserting my SIM into the phone, I’ve noticed the letter R next to the signal strength indicator in the top-right corner of the screen (in the status bar). This usually indicates I’m “Roaming”, as in, I’m in a different country, using the local operators. But I’m currently in my home country, using my usual operator. The exact same SIM was not displayed as roaming on my old Android phone (also running Android 9).

My mobile phone operator is a Mobile Virtual Network Operator (MVNO), as in, they don’t operate their own cell towers, but rent the infrastructure from bigger operators. I’m assuming this might have something to do with it.

I should note that phone calls and mobile internet work as expected (after configuring the correct APN), and it doesn’t appear that the operator considers me to be roaming (there were no unexpected charges so far), so this is mostly a cosmetic issue.

Any thoughts? I’m happy to provide any other details that might be relevant.

Could you share your carrier info as well as country.

Country: Switzerland
MVNO: Lycamobile
“Backend operator”: Swisscom

Here’s a screenshot of the SIM status page, in case it has anything useful:

There is some old discussion related to Lyca on this thread (link). Seems like Lyca in Switzerland could be setup in some interesting way where phones consider it to be roaming.

Could you post a picture of your APN settings (Goto Settings > Network & internet > Mobile network > Advanced > Access point names)

We’ll keep it as a bug report to check if this is something to be fixed on the phone side in future releases. Hopefully it is a not a big issue for you right now.

I’ve dug a little deeper, and I don’t think the APN settings have anything to do with it. Here’s my current understanding:

Each mobile operator is uniquely identified by a combination of MCC (Mobile Country Code) and MNC (Mobile Network code), which together form the PLMN code. In my case, the MCC is 228 (for Switzerland) and the MNC is 54 (for Lycamobile), giving the PLMN code of 22854 (which also happens to be the prefix of the IMSI number). Since Lyca doesn’t operate their own towers, the phone connects to Swisscom’s network, which has the MCC of 228 and the MNC 01. (I’ve gotten this much from grepping the logcat output).

It looks like the carrier needs to have an entry in the carrier_list.textpb file, but upon further digging, it appears that the roaming status is passed straight from the radio code, which, AFAIK is not open source and runs on a separate processor. And who knows what that code uses to decide whether it’s roaming or not.

In any case, somewhere in the Android codebase (or the radio codebase), there must be a list similar to carrier_list.textpb that enumerates pairs of (MVNO, home_MNO), and that list needs to be updated to say that Lycamobile CH (22854) is at home on Swisscom’s network (22801). I’m guessing you’re getting the code for the radio chip as a blob, so this might need to be forwarded to the radio supplier (MediaTek? Qualcomm? Broadcom? someone else?).

Hope this helps, but I’m really counting on your engineers to figure this one out. Thanks for your patience. :slight_smile:

1 Like

Wow - that’s some deep research. Thanks for doing that. :+1:

We will investigate it further to see how it can be fixed in the next update. Just to confirm - everything is working fine for you except the “R” in the status bar - correct?

1 Like

Indeed, voice calling works, data works, no unexpected charges, everything looks good. Except for that R. :slight_smile: Thanks for looking into this.

1 Like