Android RIL Driver - add PPP options

Hello,

Is it possible to add to ppp 2 additional configuration options “lcp-echo-interval 5 lcp-echo-failure 4” ?

I observer on Android 10 with Quectel RIL driver that from time to time that there is no communication with Internet.
When I kill ppp it restarts and everything is working. I think that with this 2 options this problem should be fixed.

Android version: Android 10
RIL version: libquectel ril v3.3.58
Modem: EG915U-EU

The ppp option is configurated in the libreference-ril.so.
It is better to check the android log.

Yes, I can see this options in logcat:

09-24 15:15:35.511  3128  3128 I pppd    : pppd options in effect:
09-24 15:15:35.511  3128  3128 I pppd    : debug		# (from command line)
09-24 15:15:35.511  3128  3128 I pppd    : nodetach		# (from command line)
09-24 15:15:35.511  3128  3128 I pppd    : dump		# (from command line)
09-24 15:15:35.511  3128  3128 I pppd    : refuse-mschap		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : refuse-mschap-v2		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : refuse-eap		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : user internet		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : password ??????		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : /dev/ttyUSB5		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : 115200		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : nolock		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : connect ''/system/bin/chat -s -v ABORT BUSY ABORT \"NO CARRIER\" ABORT \"NO DIALTONE\" ABORT ERROR ABORT \"NO ANSWER\" TIMEOUT 40 \"\" ATD*99***1# CONNECT''		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : nocrtscts		# (from command line)
09-24 15:15:35.512  3128  3128 I pppd    : modem		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : hide-password		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : novj		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : novjccomp		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : ipcp-accept-local		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : ipcp-accept-remote		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : noipdefault		# (from command line)
09-24 15:15:35.513  3128  3128 I pppd    : ipcp-max-failure 30		# (from command line)
09-24 15:15:35.514  3128  3128 I pppd    : defaultroute		# (from command line)
09-24 15:15:35.514  3128  3128 I pppd    : usepeerdns		# (from command line)
09-24 15:15:35.514  3128  3128 I pppd    : noccp		# (from command line)

But it is possible to add 2 more options ?
Is it require to compile new version of libreference-ril.so ?

The ppp option are set to

            const char *argv[40] = {"pppd", "115200", "nodetach", "nolock", "debug", "dump", "nocrtscts", "modem", "hide-password",
                "usepeerdns", "noipdefault", "novj", "novjccomp", "noccp", "defaultroute", "ipcp-accept-local", "ipcp-accept-remote", "ipcp-max-failure", "30",
                //"connect", "/etc/ppp/init.quectel-pppd chat connect",
                //"disconnect","/etc/ppp/init.quectel-pppd chat disconnect",
                NULL

by default.

It is set in the Quectel libreference-ril.so.

I am not familar with the pppd options, but if you want to add some option that Quectel need to provide a new lib.

Yes, I want to add this 2 options above. The best solution will be to add to library ability to read some additional pppd options from ql-ril.conf.
Do I need some additional action to quectel agree to this modification and provide me with new library ?

I have sent it. But I don’t think it must work well.

Please check it.
As I guess it is not the root cause.

I have never seen that we have applied it.

lcp-echo-failure n
If this option is given, pppd will presume the peer to be dead if n LCP echo-requests are sent without receiving a valid LCP echo-reply. If this happens, pppd will terminate the connection. Use of this option requires a non-zero value for the lcp-echo-interval parameter. This option can be used to enable pppd to terminate after the physical connection has been broken (e.g., the modem has hung up) in situations where no hardware modem control lines are available.
lcp-echo-interval n
If this option is given, pppd will send an LCP echo-request frame to the peer every n seconds. Normally the peer should respond to the echo-request by sending an echo-reply. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected.

If it works, I guess there is something wrong with the network side.

Yes, if there is a problem with the PPP connection and the modem does not respond, it will cause the PPP to disconnect. From time to time, I notice a problem with the lack of internet in the system when the modem has been running for a few hours. When I turn data transmission off and on again, the internet starts working.

It seems that the patch is working.

09-26 07:18:43.256  1356  1356 I pppd    : No response to 4 echo-requests
09-26 07:18:43.256  1356  1356 I pppd    : Serial link appears to be disconnected.
09-26 07:18:43.256  1356  1356 I pppd    : Connect time 1087.5 minutes.
09-26 07:18:43.257  1356  1356 I pppd    : Sent 232932 bytes, received 579488 bytes.
09-26 07:18:43.259   682   711 I EthernetTracker: interfaceLinkStateChanged, iface: ppp0, up: false
09-26 07:18:43.263  1356  1356 D pppd    : Script /etc/ppp/ip-down started (pid 25990)
09-26 07:18:43.263  1356  1356 D pppd    : sent [LCP TermReq id=0x2 "Peer not responding"]
09-26 07:18:43.517  1356  1356 D pppd    : Script /etc/ppp/ip-down finished (pid 25990), status = 0x0
09-26 07:18:46.266  1356  1356 D pppd    : sent [LCP TermReq id=0x3 "Peer not responding"]
09-26 07:18:49.270  1356  1356 I pppd    : Connection terminated.
09-26 07:18:50.316  1356  1356 I pppd    : Modem hangup
09-26 07:18:50.316  1356  1356 I pppd    : Exit.
09-26 07:19:01.097 26188 26188 I pppd    : pppd options in effect:
09-26 07:19:01.098 26188 26188 I pppd    : debug		# (from command line)
09-26 07:19:01.098 26188 26188 I pppd    : nodetach		# (from command line)
09-26 07:19:01.098 26188 26188 I pppd    : dump		# (from command line)
09-26 07:19:01.098 26188 26188 I pppd    : refuse-mschap		# (from command line)
09-26 07:19:01.099 26188 26188 I pppd    : refuse-mschap-v2		# (from command line)
09-26 07:19:01.099 26188 26188 I pppd    : refuse-eap		# (from command line)
09-26 07:19:01.099 26188 26188 I pppd    : user internet		# (from command line)
09-26 07:19:01.100 26188 26188 I pppd    : password ??????		# (from command line)
09-26 07:19:01.100 26188 26188 I pppd    : /dev/ttyUSB5		# (from command line)
09-26 07:19:01.100 26188 26188 I pppd    : 115200		# (from command line)
09-26 07:19:01.100 26188 26188 I pppd    : nolock		# (from command line)
09-26 07:19:01.101 26188 26188 I pppd    : connect ''/system/bin/chat -s -v ABORT BUSY ABORT \"NO CARRIER\" ABORT \"NO DIALTONE\" ABORT ERROR ABORT \"NO ANSWER\" TIMEOUT 40 \"\" ATD*99***1# CONNECT''		# (from command line)
09-26 07:19:01.101 26188 26188 I pppd    : nocrtscts		# (from command line)
09-26 07:19:01.101 26188 26188 I pppd    : modem		# (from command line)
09-26 07:19:01.101 26188 26188 I pppd    : lcp-echo-failure 4		# (from command line)
09-26 07:19:01.101 26188 26188 I pppd    : lcp-echo-interval 5		# (from command line)
09-26 07:19:01.101 26188 26188 I pppd    : hide-password		# (from command line)
09-26 07:19:01.102 26188 26188 I pppd    : novj		# (from command line)
09-26 07:19:01.102 26188 26188 I pppd    : novjccomp		# (from command line)
09-26 07:19:01.102 26188 26188 I pppd    : ipcp-accept-local		# (from command line)
09-26 07:19:01.102 26188 26188 I pppd    : ipcp-accept-remote		# (from command line)
09-26 07:19:01.102 26188 26188 I pppd    : noipdefault		# (from command line)
09-26 07:19:01.103 26188 26188 I pppd    : ipcp-max-failure 30		# (from command line)
09-26 07:19:01.103 26188 26188 I pppd    : defaultroute		# (from command line)
09-26 07:19:01.103 26188 26188 I pppd    : usepeerdns		# (from command line)
09-26 07:19:01.103 26188 26188 I pppd    : noccp		# (from command line)
09-26 07:19:01.104 26188 26188 I pppd    : pppd 2.4.7 started by radio, uid 1001
09-26 07:19:02.318 26188 26188 D pppd    : Script ''/system/bin/chat -s -v ABORT BUSY ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT ERROR ABORT "NO ANSWER" TIMEOUT 40 "" ATD*99***1# CONNECT'' finished (pid 26215), status = 0x0
09-26 07:19:02.318 26188 26188 I pppd    : Serial connection established.
09-26 07:19:02.319 26188 26188 D pppd    : using channel 9
09-26 07:19:02.323 26188 26188 I pppd    : Using interface ppp0
09-26 07:19:02.323   682   860 I EthernetTracker: maybeTrackInterface ppp0
09-26 07:19:02.323 26188 26188 I pppd    : Connect: ppp0 <--> /dev/ttyUSB5
09-26 07:19:02.326   682   711 I EthernetTracker: interfaceLinkStateChanged, iface: ppp0, up: false
09-26 07:19:03.325 26188 26188 D pppd    : sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x8a7ec678> <pcomp> <accomp>]
09-26 07:19:03.348 26188 26188 D pppd    : rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0x9fcd43c8> <pcomp> <accomp>]
09-26 07:19:03.348 26188 26188 D pppd    : sent [LCP ConfAck id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0x9fcd43c8> <pcomp> <accomp>]
09-26 07:19:03.368 26188 26188 D pppd    : rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x8a7ec678> <pcomp> <accomp>]
09-26 07:19:03.369 26188 26188 D pppd    : sent [LCP EchoReq id=0x0 magic=0x8a7ec678]
09-26 07:19:03.370 26188 26188 D pppd    : rcvd [CHAP Challenge id=0x1 <620d12f6b8862811c81051e269d8d0a5>, name = "lwIP"]
09-26 07:19:03.371 26188 26188 D pppd    : sent [CHAP Response id=0x1 <ec7f9ec329a1a867db14f581ade526cc>, name = "internet"]
09-26 07:19:03.393 26188 26188 D pppd    : rcvd [LCP EchoRep id=0x0 magic=0x9fcd43c8]
09-26 07:19:03.409 26188 26188 D pppd    : rcvd [CHAP Success id=0x1 "Access granted"]
09-26 07:19:03.409 26188 26188 I pppd    : CHAP authentication succeeded: Access granted
09-26 07:19:03.409 26188 26188 I pppd    : CHAP authentication succeeded
09-26 07:19:03.410 26188 26188 D pppd    : sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
09-26 07:19:03.433 26188 26188 D pppd    : rcvd [IPCP ConfReq id=0x1]
09-26 07:19:03.433 26188 26188 D pppd    : sent [IPCP ConfNak id=0x1 <addr 0.0.0.0>]
09-26 07:19:03.448 26188 26188 D pppd    : rcvd [IPCP ConfNak id=0x1 <addr 10.18.205.151> <ms-dns1 194.204.159.1> <ms-dns2 194.204.152.34>]
09-26 07:19:03.448 26188 26188 D pppd    : sent [IPCP ConfReq id=0x2 <addr 10.18.205.151> <ms-dns1 194.204.159.1> <ms-dns2 194.204.152.34>]
09-26 07:19:03.471 26188 26188 D pppd    : rcvd [IPCP ConfReq id=0x2 <addr 192.168.0.1>]
09-26 07:19:03.471 26188 26188 D pppd    : sent [IPCP ConfAck id=0x2 <addr 192.168.0.1>]
09-26 07:19:03.488 26188 26188 D pppd    : rcvd [IPCP ConfAck id=0x2 <addr 10.18.205.151> <ms-dns1 194.204.159.1> <ms-dns2 194.204.152.34>]
09-26 07:19:03.495 26188 26188 I pppd    : local  IP address 10.18.205.151
09-26 07:19:03.495 26188 26188 I pppd    : remote IP address 192.168.0.1
09-26 07:19:03.496 26188 26188 I pppd    : primary   DNS address 194.204.159.1
09-26 07:19:03.496 26188 26188 I pppd    : secondary DNS address 194.204.152.34
09-26 07:19:03.500 26188 26188 D pppd    : Script /etc/ppp/ip-up started (pid 26223)
09-26 07:19:03.504   682   711 I EthernetTracker: interfaceLinkStateChanged, iface: ppp0, up: true
09-26 07:19:03.578 26224 26224 I ip-up   : ip-up set settings for ppp0