DataConnectionService: No interface up indication after network registration restored

Have you tried to do data offline sequence when you receive the disconnect callback?

Yes i have.

This either resultet in very weird behavior and even caused the whole system to crash on some of my tests.

I need to keep a stable data connection and need to be able to handle disconnects/reconnects.

The things is the “ConnectionStateHandler” claims to be able to handle reconnects (and execute a callback once the module reconnects) but it simply doesn’t.

There has to be a good and stable way to fix this.

I am having similar problems and I have to agree with others. the data service says it handles this… but it does not. I my case I get a Connection event. I can see in logread that it tries 4 times to reconnect… but then just stops. Packet switched network is down… and never comes up again.

Can someone please look at this and fix it. It impacts the long term stability of any product we put into the field. It is a critical requirement that these modems are able to reliably deal with these kind of scenarios…

Feb 13 15:19:54 fx30 user.info Legato: INFO | modemDaemon[1228]/modemDaemon T=main | le_mrc.c NetRegRejectHandler() 1461 | Network Reject Ind with reject cause.4, domain.2, RAT.4, mcc. and mnc.
Feb 13 15:19:54 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c DcsNetRegRejectHandler() 751 | Network Reject Ind with reject cause.4, domain.2, RAT.4, mcc. and mnc.
Feb 13 15:19:54 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c DcsCellularConnEventStateHandler() 254 | State of connection 1 transitioned from up to down
Feb 13 15:19:54 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_RetryConn() 1300 | Initiated retrying connection 1; retry attempt 1, backoff 1 secs
Feb 13 15:19:54 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c DcsCellularConnEventStateHandler() 311 | Wait for the next retry before failing connection 1
Feb 13 15:19:54 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsDaemon T=main | dcsServer.c ChannelEventHandler() 780 | Received for channel reference 0xff event Temporary Down
Feb 13 15:19:54 fx30 user.err Legato: =ERR= | dcsDaemon[1189] | RTNETLINK answers: No such process
Feb 13 15:19:54 fx30 user.warn Legato: -WRN- | dcsDaemon[1189]/le_pa_dcs T=main | pa_dcs_linux.c pa_dcs_DeleteDefaultGateway() 994 | system ‘/sbin/ip -4 route del default’ failed
Feb 13 15:19:54 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsNet T=main | dcsNet.c le_net_RestoreDefaultGW() 658 | Default IPv4 GW address on interface restored
Feb 13 15:19:54 fx30 user.info Legato: INFO | MyApp[1296]/MyAppCompT=main | MyAppComponent.cpp ConnectionStateHandler() 643 | Connection State Event: ‘’ not connected
Feb 13 15:19:54 fx30 user.warn Legato: -WRN- | avcDaemon[1161]/avcDaemon T=main | avcClient.c ConnectionStateHandler() 474 | Disconnected from data connection service, current state 1
Feb 13 15:19:54 fx30 user.warn Legato: -WRN- | avcDaemon[1161]/avcDaemon T=main | tpfServer.c tpfServer_GetTpfState() 79 | FW update install pending not found
Feb 13 15:19:54 fx30 user.info Legato: INFO | avcDaemon[1161]/avcDaemon T=main | avcClient.c BearerEventCb() 321 | Connected 0
Feb 13 15:19:54 fx30 user.info Legato: INFO | avcDaemon[1161]/avcDaemon T=main | avcClient.c StopBearer() 746 | Stop bearer 0x1ab
Feb 13 15:19:54 fx30 user.info Legato: INFO | MyApp[4180] | 230213 15:19:54 IPBearer: Connection State Event: ‘’ not connected
Feb 13 15:19:54 fx30 user.info Legato: INFO | avcDaemon[1161]/avcDaemon T=main | avcServer.c ProcessUpdateStatus() 1844 | Current session state: Session stopped
Feb 13 15:19:54 fx30 user.info Legato: INFO | avcDaemon[1161]/avcDaemon T=main | avcServer.c InitPollingTimer() 1812 | Polling Timer is set to start AVC session every 60 minutes.
Feb 13 15:19:54 fx30 user.info Legato: INFO | avcDaemon[1161]/avcDaemon T=main | avcServer.c InitPollingTimer() 1814 | The current Polling Timer will start a session in 3516 seconds.
Feb 13 15:19:54 fx30 user.info Legato: INFO | MyApp[1296]/MyAppComponent T=main | MyAppComponent.cpp avcSessionCtrl_StatusHandler() 305 | AVC_CONTROLLER: Air Vantage agent reported update status: SESSION_STOPPED
Feb 13 15:19:55 fx30 user.err Legato: =ERR= | modemDaemon[1228]/swiQmi T=main | swiQmi.c swiQmi_CheckResponse() 799 | Sending QMI_WDS_START_NETWORK_INTERFACE_REQ_V01 failed: rc=0 (), resp.result=1.[0x01], resp.error=14.[0x0e]
Feb 13 15:19:55 fx30 user.err Legato: =ERR= | modemDaemon[1228]/le_pa T=main | pa_mdc_qmi.c StartSession() 1978 | Data connection failure Call End provided 0, Code 3
Feb 13 15:19:55 fx30 user.err Legato: =ERR= | modemDaemon[1228]/le_pa T=main | pa_mdc_qmi.c StartSession() 1989 | Data connection failure Verbose Call End provided Type 3, Verbose 2001
Feb 13 15:19:55 fx30 user.err Legato: =ERR= | modemDaemon[1228]/modemDaemon T=main | le_mdc.c le_mdc_StartSession() 1272 | Get Async Connection failure 0, 3, 3, 2001
Feb 13 15:19:55 fx30 user.err Legato: =ERR= | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_Start() 1089 | Failed to start cellular connection 1; error: -6
Feb 13 15:19:55 fx30 user.err Legato: =ERR= | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_Start() 1092 | Failure reason 0, code 3
Feb 13 15:19:55 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_RetryConn() 1300 | Initiated retrying connection 1; retry attempt 2, backoff 2 secs
Feb 13 15:19:55 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_Start() 1097 | Wait for the next retry before failing connection 1
Feb 13 15:19:57 fx30 user.err Legato: =ERR= | modemDaemon[1228]/swiQmi T=main | swiQmi.c swiQmi_CheckResponse() 799 | Sending QMI_WDS_START_NETWORK_INTERFACE_REQ_V01 failed: rc=0 (), resp.result=1.[0x01], resp.error=14.[0x0e]
Feb 13 15:19:57 fx30 user.err Legato: =ERR= | modemDaemon[1228]/le_pa T=main | pa_mdc_qmi.c StartSession() 1978 | Data connection failure Call End provided 0, Code 3
Feb 13 15:19:57 fx30 user.err Legato: =ERR= | modemDaemon[1228]/le_pa T=main | pa_mdc_qmi.c StartSession() 1989 | Data connection failure Verbose Call End provided Type 3, Verbose 2001
Feb 13 15:19:57 fx30 user.err Legato: =ERR= | modemDaemon[1228]/modemDaemon T=main | le_mdc.c le_mdc_StartSession() 1272 | Get Async Connection failure 0, 3, 3, 2001
Feb 13 15:19:57 fx30 user.err Legato: =ERR= | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_Start() 1089 | Failed to start cellular connection 1; error: -6
Feb 13 15:19:57 fx30 user.err Legato: =ERR= | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_Start() 1092 | Failure reason 0, code 3
Feb 13 15:19:57 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_RetryConn() 1300 | Initiated retrying connection 1; retry attempt 3, backoff 4 secs
Feb 13 15:19:57 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c le_dcsCellular_Start() 1097 | Wait for the next retry before failing connection 1
Feb 13 15:19:57 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsCellular T=main | dcsCellular.c DcsCellularPacketSwitchHandler() 726 | Packet switch state: previous 4, new 0
Feb 13 15:19:57 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcs T=main | dcs_db.c le_dcs_EventNotifierTechStateTransition() 311 | Notify all channels of technology 2 of system state transition to down
Feb 13 15:19:57 fx30 user.info Legato: INFO | dcsDaemon[1189]/dcsDaemon T=main | dcsServer.c ChannelEventHandler() 780 | Received for channel reference 0xff event Temporary Down
Feb 13 15:19:57 fx30 user.info Legato: INFO | MYApp[4180] | 230213 15:19:57 IPBearer: Connection State Event: ‘’ not connected

I highly doubt anyone from Legato will start looking in to this now when it has been a known issue for over 4 years.
It is a shame because it hamstrings what could be a good platform.
If you end up looking into it yourself I will be interested to know what workaround you come up with.