Incorrect operator information from MM
Hello MM team,
I am encountering an issue during mobility scenario of a Quectel modem with firmware UC20GQBR03A14E1G and controlled by Modem Manager v 1.12.8, Network Manager v 1.22.10, libqmi 1.24.8, and qmi_wwan driver (not sure how to get the version of the driver).
Summary:
- First issue is MM incorrectly parses an operator ID from indication
- Second issue is that MM "misinterprets" an indication and changes registration state to home when the modem is connected to roaming network. So when MM receives an indication that it is actually on home network, because modem state does not change, MM does not update the operator ID from the roaming operator ID to the home operator ID.
Attaching logs covering the relevant timestamps but here are the key points and questions I gathered from the logs:
- BTW, device is travelling from US to Mexico
- Initially, modem is connected to home network (310410) with internet connectivity
- At 02:23:21, internet was lost and successfully recovered at 02:23:26. This happens several times which may mean spotty network coverage on the area being traveled. Signal quality shows 30%, 0%, 20% etc.
- At 02:42:48, MM first receives a Serving System indication from modem of roaming network AT&T MX 33450. Upon processing the indication, log shows that MM parsed it as idle state and 3gpp location MCC/MNC were reset to 0. Is this expected? See indication below
received generic indication (translated)... <<<<<< QMUX: <<<<<< length = 59 <<<<<< flags = 0x80 <<<<<< service = "nas" <<<<<< client = 1 <<<<<< QMI: <<<<<< flags = "indication" <<<<<< transaction = 0 <<<<<< tlv_length = 47 <<<<<< message = "Serving System" (0x0024) <<<<<< TLV: <<<<<< type = "MNC PCS Digit Include Status" (0x29) <<<<<< length = 5 <<<<<< value = 4E:01:32:00:01 <<<<<< translated = [ mcc = '334' mnc = '50' includes_pcs_digit = 'yes' ] <<<<<< TLV: <<<<<< type = "Detailed Service Status" (0x22) <<<<<< length = 5 <<<<<< value = 01:01:00:00:00 <<<<<< translated = [ status = 'limited' capability = 'cs' hdr_status = 'none' hdr_hybrid = 'no' forbidden = 'no' ] <<<<<< TLV: <<<<<< type = "Roaming Indicator List" (0x15) <<<<<< length = 3 <<<<<< value = 01:05:01 <<<<<< translated = { [0] = '[ radio_interface = 'umts' roaming_indicator = 'off' ] '} <<<<<
building consolidated registration state: cs 'idle', ps 'searching', eps 'unknown' --> 'searching'
3GPP Registration state changed (searching -> idle)
3GPP location updated (MCC: '0', MNC: '0', Location area code: '0', Tracking area code: '0', Cell ID: '0')
- why does MM update location to 0 when it received mcc and mnc as 334 and 50?
- Because internet was lost, NM triggers reactivation and Simple connect starts
- During register step though, MM keeps receiving Get Serving System responses but register doesn't succeed. The full packet is not visible but this is what is starts with
received generic response (translated)... <<<<<< QMUX: <<<<<< length = 66 <<<<<< flags = 0x80 <<<<<< service = "nas" <<<<<< client = 1 <<<<<< QMI: <<<<<< flags = "response" <<<<<< transaction = 328 <<<<<< tlv_length = 54 <<<<<< message = "Get Serving System" (0x0024) <<<<<< TLV: <<<<<< type = "Result" (0x02) <<<<<< length = 4 <<<<<< value = 00:00:00:00 <<<<<< translated = SUCCESS <<<<<< TLV: <<<<<< type = "MNC PCS Digit Include Status" (0x27) <<<<<< length = 5 <<<<<< value = 4E:01:32:00:01 <<<<<< translated = [ mcc = '334' mnc = '50' includes_pcs_digit = 'yes' ] <<<<<< TLV: <<<<<< type = "Detailed Service Status" (0x21) <<<<<< length = 5 <<<<<< value = 01:01:00:00:00 <<<<<< translated = [ status = 'limited' capability = 'cs' hdr_status = 'none' hdr_hybrid = 'no' forbidden = 'no' ] <<<<<< TLV: <<<<<< type = "Roaming Indicator List" (0x15) <<<<<< *
-
Do these indications mean that modem has registered to the roaming network? If status is limited and capability is cs, does that mean device may receive sms/calls but data is prohibited by the network?
-
MM parses these indications as "building consolidated registration state: cs 'idle', ps 'idle', eps 'unknown' --> 'idle'"
-
Why doesn't MM update the operator ID or the 3gpp location information?
-
At 02:45:41, MM receives a Serving System indication of the same roaming network. And this time, MM parsed it "correctly" and updated 3gpp location
building consolidated registration state: cs 'roaming', ps 'idle', eps 'unknown' --> 'roaming'
3GPP location updated (MCC: '334', MNC: '50', Location area code: 'A2FA', Tracking area code: '0', Cell ID: 'DD1EA2')
-
Simple connect proceeds to bearer connection but step fails as signal quality goes to 0.
-
There's a power cycle (please ignore the June 17 dates)
-
From 02:51:22 to 03:01:23, modem jumps from 310410 to 334050 to 334090 networks.
-
At 03:01:18, MM receives Serving System indication that modem is in 334090 network
-
MM updates registration state to roaming and 3gpp location information
3GPP location updated (MCC: '334', MNC: '90', Location area code: 'A2FA', Tracking area code: '0', Cell ID: 'DD1E83') 3GPP Registration state changed (registering -> roaming)
- At 03:01:22, MM receives a Serving System indication that doesn't specify mcc/mnc and yet MM oddly updated modem registration state to home. See the indication below:
"Serving System" (0x01) <<<<<< length = 6 <<<<<< value = 01:01:02:02:01:05 <<<<<< translated = [ registration_state = 'registered' cs_attach_state = 'attached' ps_attach_state = 'detached' selected_network = '3gpp' radio_interfaces = '{ [0] = 'umts '}' ]
-
And MM log shows 3GPP Registration state changed (registering -> home). Is this expected? the message doesn't show that mcc/mnc has changed
-
At 03:01:23, Simple connect was triggered again to establish internet over 334090
-
At 03:01:26, MM receives indication that modem is in 310410. MM does not update operator ID though. This is because modem state did not change (home->home)
-
At 03:01:28, modem information retrieved via libmm still shows the roaming network operator id yet registration state is home
operator id: 334090
operator name: AT&T MX
registration: home
- At 3:01:48, Internet connection establishment is successful over home network
- Operator ID from mmcli -m 0 still shows roaming network 334090 but registration state shows home
- Correct information was only recovered when registration state changed to searching and then 310410 home network was found.
P1001229-S00000321_20200516T024916Z_000208_syslog_20200516T030002.txt
P1001229-S00000321_20200516T024916Z_000208_syslog_20200516T040002.txt