Hi everyone ,
im facing a trouble establishing internet via pppos protocol with the jio sim of ipv6 only supported doing it using libraries and no manual at commands as they completely work , since i started this on the arduino ide where there is no specific defines or modem listed on arduino for the ec200cn so i used the bg96 since the arduino libraries doesnt support ipv6 (tinygsm) i switched to esp-idf v4.4 py.v3.9 manually cloned .
So the problem is im not able to get the ipv6 ip and the ppp internet is not establishing , and not able to ping and website like google, youtube..com , and i also reffered this example but i could’t make it .
Im literellt stuck in this please help me with this ,
Attaching the modem and output .
kindy see through .
// main/pppos_client_main.c
// ESP32-S3 + Quectel EC200U (BG96 driver) + PPPoS + Google “ping” via HTTP
// Pins: TX=37, RX=36, baud 115200, APN=jionet, PDP type IPV4V6.
#include <string.h>
#include <stdio.h>
#include “freertos/FreeRTOS.h”
#include “freertos/event_groups.h”
#include “freertos/task.h”
#include “esp_system.h”
#include “esp_log.h”
#include “esp_netif.h”
#include “esp_netif_ppp.h”
#include “mqtt_client.h” // not strictly needed, but kept from example
#include “esp_modem.h”
#include “esp_modem_netif.h”
#include “bg96.h”
#include “lwip/sockets.h”
#include “lwip/netdb.h”
static const char *TAG = “pppos_ec200u”;
static EventGroupHandle_t event_group;
static const int CONNECT_BIT = BIT0;
static const int STOP_BIT = BIT1;
// ---------- board + SIM settings ----------
#define MODEM_TX_PIN 37
#define MODEM_RX_PIN 36
#define MODEM_BAUD 115200
#define MODEM_APN “jionet” // Jio
#define MODEM_PDP_TYPE “IPV4V6” // allow v4+v6 on the PDN
// -----------------------------------------
// =============== PPP / modem event handlers =================
static void modem_event_handler(void *arg,
esp_event_base_t event_base,
int32_t event_id,
void *event_data)
{
switch (event_id) {
case ESP_MODEM_EVENT_PPP_START:
ESP_LOGI(TAG, “Modem PPP Started”);
break;
case ESP_MODEM_EVENT_PPP_STOP:
ESP_LOGI(TAG, “Modem PPP Stopped”);
xEventGroupSetBits(event_group, STOP_BIT);
break;
case ESP_MODEM_EVENT_UNKNOWN:
ESP_LOGW(TAG, “Unknown modem line: %s”, (char *)event_data);
break;
default:
break;
}
}
static void on_ppp_status_changed(void *arg,
esp_event_base_t event_base,
int32_t event_id,
void *event_data)
{
ESP_LOGI(TAG, “PPP state changed event: %d”, event_id);
}
// IP events: IPv4 and IPv6
static void on_ip_event(void *arg,
esp_event_base_t event_base,
int32_t event_id,
void *event_data)
{
if (event_id == IP_EVENT_PPP_GOT_IP) {
ip_event_got_ip_t *e = (ip_event_got_ip_t *)event_data;
esp_netif_dns_info_t dns;
ESP_LOGI(TAG, “PPP GOT IPv4:”);
ESP_LOGI(TAG, " IP : " IPSTR, IP2STR(&e->ip_info.ip));
ESP_LOGI(TAG, " Netmask : " IPSTR, IP2STR(&e->ip_info.netmask));
ESP_LOGI(TAG, " Gateway : " IPSTR, IP2STR(&e->ip_info.gw));
esp_netif_get_dns_info(e->esp_netif, 0, &dns);
ESP_LOGI(TAG, " DNS1 : " IPSTR, IP2STR(&dns.ip.u_addr.ip4));
esp_netif_get_dns_info(e->esp_netif, 1, &dns);
ESP_LOGI(TAG, " DNS2 : " IPSTR, IP2STR(&dns.ip.u_addr.ip4));
xEventGroupSetBits(event_group, CONNECT_BIT);
} else if (event_id == IP_EVENT_GOT_IP6) {
ip_event_got_ip6_t *e6 = (ip_event_got_ip6_t *)event_data;
ESP_LOGI(TAG, "PPP GOT IPv6: " IPV6STR, IPV62STR(e6->ip6_info.ip));
xEventGroupSetBits(event_group, CONNECT_BIT);
} else if (event_id == IP_EVENT_PPP_LOST_IP) {
ESP_LOGI(TAG, “PPP lost IP”);
}
}
// =============== simple “ping” using sockets =================
// Resolve /www.google.com and open TCP connection on port 80.
// This proves: DNS works + routing works (over IPv4 or IPv6).
static void test_google_http(void)
{
const char *host = “/www.google.com”;
const char *port = “80”;
struct addrinfo hints = { 0 };
hints.ai_family = AF_UNSPEC; // allow IPv4 or IPv6
hints.ai_socktype = SOCK_STREAM;
struct addrinfo *res = NULL;
int err = getaddrinfo(host, port, &hints, &res);
if (err != 0 || res == NULL) {
ESP_LOGE(TAG, "getaddrinfo(%s) failed: %d", host, err);
return;
}
ESP_LOGI(TAG, "Resolved %s, trying addresses:", host);
for (struct addrinfo *p = res; p != NULL; p = p->ai_next) {
char addrstr[64];
void *addr = NULL;
if (p->ai_family == AF_INET) {
struct sockaddr_in *sa = (struct sockaddr_in *)p->ai_addr;
addr = &sa->sin_addr;
} else if (p->ai_family == AF_INET6) {
struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)p->ai_addr;
addr = &sa6->sin6_addr;
}
if (addr) {
inet_ntop(p->ai_family, addr, addrstr, sizeof(addrstr));
ESP_LOGI(TAG, " %s", addrstr);
}
}
// Use the first result
int s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (s < 0) {
ESP_LOGE(TAG, "socket() failed");
freeaddrinfo(res);
return;
}
ESP_LOGI(TAG, "Connecting to %s:%s ...", host, port);
if (connect(s, res->ai_addr, res->ai_addrlen) != 0) {
ESP_LOGE(TAG, "connect() failed, errno=%d", errno);
close(s);
freeaddrinfo(res);
return;
}
ESP_LOGI(TAG, "TCP connect OK – internet reachable.");
const char *req = "HEAD / HTTP/1.0\r\nHost: www.google.com\r\n\r\n";
send(s, req, strlen(req), 0);
char buf[256];
int r = recv(s, buf, sizeof(buf) - 1, 0);
if (r > 0) {
buf[r] = 0;
ESP_LOGI(TAG, "HTTP response (first bytes):\n%.*s", r, buf);
} else {
ESP_LOGW(TAG, "No data received from google");
}
close(s);
freeaddrinfo(res);
}
// ======================= APP MAIN ============================
void app_main(void)
{
// — basic ESP-NETIF + events —
ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default());
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT,
ESP_EVENT_ANY_ID,
&on_ip_event, NULL));
ESP_ERROR_CHECK(esp_event_handler_register(NETIF_PPP_STATUS,
ESP_EVENT_ANY_ID,
&on_ppp_status_changed, NULL));
event_group = xEventGroupCreate();
// --- create DTE (UART side of modem) ---
esp_modem_dte_config_t cfg = ESP_MODEM_DTE_DEFAULT_CONFIG();
cfg.tx_io_num = MODEM_TX_PIN;
cfg.rx_io_num = MODEM_RX_PIN;
cfg.rx_buffer_size = CONFIG_EXAMPLE_MODEM_UART_RX_BUFFER_SIZE;
cfg.tx_buffer_size = CONFIG_EXAMPLE_MODEM_UART_TX_BUFFER_SIZE;
cfg.event_queue_size = CONFIG_EXAMPLE_MODEM_UART_EVENT_QUEUE_SIZE;
cfg.event_task_stack_size= CONFIG_EXAMPLE_MODEM_UART_EVENT_TASK_STACK_SIZE;
cfg.event_task_priority = CONFIG_EXAMPLE_MODEM_UART_EVENT_TASK_PRIORITY;
cfg.dte_buffer_size = CONFIG_EXAMPLE_MODEM_UART_RX_BUFFER_SIZE / 2;
ESP_LOGI(TAG, "Creating DTE: TX=%d RX=%d BAUD=%d",
MODEM_TX_PIN, MODEM_RX_PIN, MODEM_BAUD);
modem_dte_t *dte = esp_modem_dte_init(&cfg);
if (!dte) {
ESP_LOGE(TAG, "esp_modem_dte_init failed");
return;
}
ESP_ERROR_CHECK(esp_modem_set_event_handler(dte, modem_event_handler,
ESP_EVENT_ANY_ID, NULL));
// --- create DCE (BG96 driver, works for EC200U) ---
modem_dce_t *dce = bg96_init(dte);
if (!dce) {
ESP_LOGE(TAG, "bg96_init failed");
return;
}
// make sure we are not using HW flow control; EC200U board has only TX/RX
esp_err_t fl = dce->set_flow_ctrl(dce, MODEM_FLOW_CONTROL_NONE);
if (fl != ESP_OK) {
ESP_LOGW(TAG, "set_flow_ctrl failed: %s", esp_err_to_name(fl));
}
// define PDP context as IPv4v6 + APN=jionet
ESP_LOGI(TAG, "Setting PDP context CID=1, type=%s, APN=%s",
MODEM_PDP_TYPE, MODEM_APN);
if (dce->define_pdp_context) {
esp_err_t pdp = dce->define_pdp_context(dce, 1,
MODEM_PDP_TYPE, MODEM_APN);
if (pdp != ESP_OK) {
ESP_LOGW(TAG, "define_pdp_context failed: %s",
esp_err_to_name(pdp));
}
}
ESP_ERROR_CHECK(dce->store_profile(dce));
ESP_LOGI(TAG, "Module: %s", dce->name);
ESP_LOGI(TAG, "Operator: %s", dce->oper);
ESP_LOGI(TAG, "IMEI: %s", dce->imei);
ESP_LOGI(TAG, "IMSI: %s", dce->imsi);
uint32_t rssi = 0, ber = 0;
ESP_ERROR_CHECK(dce->get_signal_quality(dce, &rssi, &ber));
ESP_LOGI(TAG, "Signal rssi=%d, ber=%d", rssi, ber);
// --- create PPP netif and attach modem ---
esp_netif_config_t netif_cfg = ESP_NETIF_DEFAULT_PPP();
esp_netif_t *ppp_netif = esp_netif_new(&netif_cfg);
assert(ppp_netif);
#if !defined(CONFIG_EXAMPLE_MODEM_PPP_AUTH_NONE) &&
(defined(CONFIG_LWIP_PPP_PAP_SUPPORT) || defined(CONFIG_LWIP_PPP_CHAP_SUPPORT))
esp_netif_auth_type_t auth_type =
#if CONFIG_LWIP_PPP_PAP_SUPPORT
NETIF_PPP_AUTHTYPE_PAP;
#else
NETIF_PPP_AUTHTYPE_CHAP;
#endif
esp_netif_ppp_set_auth(ppp_netif, auth_type,
CONFIG_EXAMPLE_MODEM_PPP_AUTH_USERNAME,
CONFIG_EXAMPLE_MODEM_PPP_AUTH_PASSWORD);
#endif
void *modem_netif_adapter = esp_modem_netif_setup(dte);
esp_modem_netif_set_default_handlers(modem_netif_adapter, ppp_netif);
esp_netif_attach(ppp_netif, modem_netif_adapter);
// default handlers will start PPP when attached
ESP_LOGI(TAG, "Waiting for PPP to get IP (IPv4 or IPv6)...");
xEventGroupWaitBits(event_group, CONNECT_BIT,
pdTRUE, pdTRUE, portMAX_DELAY);
ESP_LOGI(TAG, "PPP connected – running Google HTTP test");
test_google_http();
// keep link alive for a while so you can watch traffic
vTaskDelay(pdMS_TO_TICKS(30000));
ESP_LOGI(TAG, "Stopping PPP");
ESP_ERROR_CHECK(esp_modem_stop_ppp(dte));
xEventGroupWaitBits(event_group, STOP_BIT, pdTRUE, pdTRUE, portMAX_DELAY);
ESP_ERROR_CHECK(dce->power_down(dce));
ESP_LOGI(TAG, "Modem powered down");
// cleanup (normally you’d loop and reconnect instead of destroying)
esp_modem_netif_clear_default_handlers(modem_netif_adapter);
esp_modem_netif_teardown(modem_netif_adapter);
esp_netif_destroy(ppp_netif);
ESP_ERROR_CHECK(dce->deinit(dce));
ESP_ERROR_CHECK(dte->deinit(dte));
}
Idf-monitor output
I (25) boot: ESP-IDF v4.4 2nd stage bootloader
I (25) boot: compile time 00:11:14
I (25) boot: chip revision: 0
I (26) boot.esp32s3: Boot SPI Speed : 80MHz
I (31) boot.esp32s3: SPI Mode : DIO
I (36) boot.esp32s3: SPI Flash Size : 2MB
I (40) boot: Enabling RNG early entropy source…
I (46) boot: Partition Table:
I (49) boot: ## Label Usage Type ST Offset Length
I (57) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (64) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (72) boot: 2 factory factory app 00 00 00010000 00100000
I (79) boot: End of partition table
I (83) esp_image: segment 0: paddr=00010020 vaddr=3c050020 size=148f8h ( 84216) map
I (107) esp_image: segment 1: paddr=00024920 vaddr=3fc91c60 size=026a0h ( 9888) load
I (109) esp_image: segment 2: paddr=00026fc8 vaddr=40374000 size=09050h ( 36944) load
I (121) esp_image: segment 3: paddr=00030020 vaddr=42000020 size=4b344h (308036) map
I (176) esp_image: segment 4: paddr=0007b36c vaddr=4037d050 size=04c08h ( 19464) load
I (181) esp_image: segment 5: paddr=0007ff7c vaddr=50000000 size=00010h ( 16) load
I (188) boot: Loaded app from partition at offset 0x10000
I (188) boot: Disabling RNG early entropy source…
I (205) cpu_start: Pro cpu up.
I (205) cpu_start: Starting app cpu, entry point is 0x403751f8
0x403751f8: call_start_cpu1 at D:/ESPIDF_V4/esp-idf-v4.4/components/esp_system/port/cpu_start.c:156
I (0) cpu_start: App cpu up.
I (219) cpu_start: Pro cpu start user code
I (219) cpu_start: cpu freq: 160000000
I (219) cpu_start: Application information:
I (222) cpu_start: Project name: pppos_client
I (227) cpu_start: App version: 1
I (232) cpu_start: Compile time: Dec 2 2025 00:11:00
I (238) cpu_start: ELF file SHA256: 0a68f54ffd381935…
I (244) cpu_start: ESP-IDF: v4.4
I (249) heap_init: Initializing. RAM available for dynamic allocation:
I (256) heap_init: At 3FC95CE0 len 0004A320 (296 KiB): D/IRAM
I (262) heap_init: At 3FCE0000 len 0000EE34 (59 KiB): STACK/DRAM
I (269) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (275) heap_init: At 600FE000 len 00002000 (8 KiB): RTCRAM
I (282) spi_flash: detected chip: generic
I (286) spi_flash: flash io: dio
W (290) spi_flash: Detected size(16384k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (304) sleep: Configure to isolate all GPIO pins in sleep state
I (310) sleep: Enable automatic switching of GPIO sleep configuration
I (317) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (338) pppos_ec200u: Creating DTE: TX=37 RX=36 BAUD=115200
I (338) uart: queue free spaces: 30
I (448) pppos_ec200u: Setting PDP context CID=1, type=IPV4V6, APN=jionet
I (498) pppos_ec200u: Module: EC200U
I (498) pppos_ec200u: Operator: “IND-JIO”
I (498) pppos_ec200u: IMEI: 868019065934094
I (498) pppos_ec200u: IMSI: 405861708127248
I (518) pppos_ec200u: Signal rssi=22, ber=99
ppp phase changed[1]: phase=0
I (568) pppos_ec200u: Waiting for PPP to get IP (IPv4 or IPv6)…
I (668) pppos_ec200u: Modem PPP Started
ppp_connect[1]: holdoff=0
ppp phase changed[1]: phase=3
I (668) pppos_ec200u: PPP state changed event: 259
pppos_connect: unit 1: connecting
ppp_start[1]
ppp phase changed[1]: phase=6
I (678) pppos_ec200u: PPP state changed event: 262
pppos_send_config[1]: out_accm=FF FF FF FF
ppp_send_config[1]
pppos_recv_config[1]: in_accm=FF FF FF FF
ppp_recv_config[1]
ppp: auth protocols: PAP=1 CHAP=0 CHAP_MD5=0 CHAP_MS=0 CHAP_MS2=0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x670a05ad> ]
pppos_write[1]: len=24
ppp_start[1]: finished
pppos_input[1]: got 53 bytes
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x86cd83f3> ]
sent [LCP ConfNak id=0x1 ]
pppos_write[1]: len=12
pppos_input[1]: got 47 bytes
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x670a05ad> ]
pppos_input[1]: got 51 bytes
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x86cd83f3> ]
sent [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x86cd83f3> ]
pppos_write[1]: len=28
netif_set_mtu[1]: mtu=1500
pppos_send_config[1]: out_accm=0 0 0 0
ppp_send_config[1]
pppos_recv_config[1]: in_accm=0 0 0 0
ppp_recv_config[1]
sent [LCP EchoReq id=0x0 magic=0x670a05ad]
pppos_write[1]: len=12
ppp phase changed[1]: phase=7
I (798) pppos_ec200u: PPP state changed event: 263
sent [PAP AuthReq id=0x1 user=“espressif” password=“esp32”]
pppos_write[1]: len=24
pppos_input[1]: got 16 bytes
rcvd [LCP EchoRep id=0x0 magic=0x86cd83f3]
pppos_input[1]: got 21 bytes
rcvd [PAP AuthAck id=0x1 “Login ok”]
Remote message: Login ok
PAP authentication succeeded
ppp phase changed[1]: phase=9
I (848) pppos_ec200u: PPP state changed event: 265
ccp_set[1]: is_open=1, is_up=0, receive_method=0, transmit_method=0
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
pppos_write[1]: len=32
sent [IPV6CP ConfReq id=0x1 ]
pppos_write[1]: len=18
pppos_input[1]: got 12 bytes
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfNak id=0x1 <addr 0.0.0.0>]
pppos_write[1]: len=14
pppos_input[1]: got 46 bytes
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01> <ms-dns2 0.0.0.0>]
sent [IPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0>]
pppos_write[1]: len=20
rcvd [IPV6CP ConfReq id=0x1 ]
sent [IPV6CP ConfAck id=0x1 ]
pppos_write[1]: len=18
pppos_input[1]: got 22 bytes
rcvd [IPV6CP ConfAck id=0x1 ]
sif6up[1]: err_code=0
I (948) esp-netif_lwip-ppp: Connected
I (948) esp-netif_lwip-ppp: Got IPv6 address fe80:0000:0000:0000:68ba:d339:4dd4:73e1
I (958) pppos_ec200u: PPP GOT IPv6: fe80:0000:0000:0000:68ba:d339:4dd4:73e1
local LL address fe80::68ba:d339:4dd4:73e1
I (968) pppos_ec200u: PPP connected – running Google HTTP test
remote LL address fe80::1415:532b:2cd2:d282
ppp phase changed[1]: phase=10
I (978) pppos_ec200u: PPP state changed event: 266
pppos_input[1]: got 18 bytes
rcvd [IPCP ConfReq id=0x2 <addr 192.168.0.1>]
sent [IPCP ConfAck id=0x2 <addr 192.168.0.1>]
pppos_write[1]: len=14
pppos_input[1]: got 25 bytes
rcvd [IPCP ConfNak id=0x2 <addr 10.3.126.206> <ms-dns1 49.45.0.1>]
sent [IPCP ConfReq id=0x3 <addr 10.3.126.206> <ms-dns1 49.45.0.1>]
pppos_write[1]: len=20
E (1018) pppos_ec200u: getaddrinfo(/www.google.com) failed: 202
pppos_input[1]: got 25 bytes
rcvd [IPCP ConfAck id=0x3 <addr 10.3.126.206> <ms-dns1 49.45.0.1>]
sifvjcomp[1]: VJ compress enable=0 slot=0 max slot=0
sifup[1]: err_code=0
I (1058) esp-netif_lwip-ppp: Connected
I (1058) esp-netif_lwip-ppp: Name Server1: 49.45.0.1
I (1068) esp-netif_lwip-ppp: Name Server2: 0.0.0.0
I (1068) pppos_ec200u: PPP GOT IPv4:
I (1078) pppos_ec200u: IP : 10.3.126.206
local IP address 10.3.126.206
I (1078) pppos_ec200u: Netmask : 255.255.255.255
remote IP address 192.168.0.1
primary DNS address 49.45.0.1
I (1088) pppos_ec200u: Gateway : 192.168.0.1
I (1098) pppos_ec200u: DNS1 : 49.45.0.1
I (1098) pppos_ec200u: DNS2 : 0.0.0.0
pppos_netif_output[1]: proto=0x57, len = 56
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_netif_output[1]: proto=0x57, len = 56
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_netif_output[1]: proto=0x57, len = 56
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
pppos_write[1]: len=12
pppos_input[1]: got 16 bytes
I (31018) pppos_ec200u: Stopping PPP
E (32928) esp-modem: handle line failed
I (32928) pppos_ec200u: Modem PPP Stopped
ppp_close[1]: kill_link → lcp_close
ppp phase changed[1]: phase=11
I (32938) pppos_ec200u: PPP state changed event: 267
sifvjcomp[1]: VJ compress enable=0 slot=0 max slot=0
sifdown[1]: err_code=5
ppp phase changed[1]: phase=9
I (32948) pppos_ec200u: PPP state changed event: 265
sif6down[1]: err_code=5
ccp_set[1]: is_open=0, is_up=0, receive_method=0, transmit_method=0
ppp phase changed[1]: phase=6
I (32968) pppos_ec200u: PPP state changed event: 262
pppos_send_config[1]: out_accm=FF FF FF FF
ppp_send_config[1]
pppos_recv_config[1]: in_accm=0 0 0 0
ppp_recv_config[1]
sent [LCP TermReq id=0x2 “User request”]
pppos_write[1]: len=20
W (33088) pppos_ec200u: Unknown modem line: ~�}#�!}%}#} }0User requesty{~
sent [LCP TermReq id=0x3 “User request”]
pppos_write[1]: len=20
ppp phase changed[1]: phase=12
I (44988) pppos_ec200u: PPP state changed event: 268
Connection terminated.
ppp_link_terminated[1]
ppp_link_end[1]
ppp phase changed[1]: phase=0
I (44988) pppos_ec200u: PPP state changed event: 256
I (44998) esp-netif_lwip-ppp: User interrupt
I (44998) pppos_ec200u: PPP state changed event: 5
I (45008) esp-modem-netif: PPP state changed event 5
ppp_link_terminated[1]: finished.
I (45698) pppos_ec200u: Modem powered down
ppp_free[1]
Thank you
vignesh sai
