diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
index e67c8a4..88778a9 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -263,6 +263,7 @@
         poweralarm-demo \
         lynq-systime-demo \
         lynq-fota-backup \
+        lynq-qser-data-demo \
         "
 
 zxic_app_open += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', 'rild', '', d)}"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/files/lynq-qser-data-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/files/lynq-qser-data-demo.cpp
new file mode 100755
index 0000000..340e57d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/files/lynq-qser-data-demo.cpp
@@ -0,0 +1,195 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <sys/un.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <include/lynq-qser-data.h>
+
+#define MAX_COMMAND_LEN 10
+
+
+void evt_cb(qser_data_call_state_s *state);
+int qser_init_data();
+int qser_deinit_data();
+int data_demo_auto_test(char *apn_name1, char *apn_name2);
+
+qser_data_call_state_s state = {0};
+
+void delete_enter(char data[])
+{
+    char *find = strchr(data, '\n');
+    if(find)
+        *find = '\0';
+    return ;
+}
+void printf_help(void)
+{
+    printf("*******************************User Guide*************************************************\n");
+    printf("usage: lynq-qser-data-demo <apn_name> <apn_type>\n");
+    printf("Example: lynq-qser-data-demo cmwap lynq_apn1\n");
+    printf("*******************************************************************************************\n");
+    return;
+}
+
+/**
+ * @brief qser data call demo entry function. 
+ *
+ * @detail This example will take a complete data process 
+ *         and show you how to call the API in liblynq-qser-data.
+ */
+int main(int argc, char const *argv[])
+{
+    int i, ret;
+
+    printf("[%s] [%d] entry !\n", __FUNCTION__, __LINE__);
+    printf("[DATA_DEMO]lynq-qser-data-demo entry !\n");
+
+	if(argc != 3)
+    {
+        printf_help();
+        exit(EXIT_FAILURE);
+    }
+
+	//do initialization
+    ret = qser_data_call_init(evt_cb);
+    if(0 != ret)
+    {
+        printf("initial failed !\n");
+	    return -1;
+    }
+
+	data_demo_auto_test(argv[1], argv[2]);
+	qser_data_call_destroy();
+    
+	return 0;
+}
+
+//demo示例拨两路apn，一路使用默认apn配置拨号访问公网，另一路建议为私网配置
+int data_demo_auto_test(char *apn_name1, char *apn_type)
+{
+	int ret = 0;
+	char command[MAX_COMMAND_LEN] = {'\0'};
+	bool apn_test1_need_insert = true;
+	unsigned char profile_idx_char1;
+	qser_apn_add_s apn_test1 = {QSER_APN_PDP_TYPE_IPV4V6, QSER_APN_AUTH_PROTO_DEFAULT, NULL, NULL, NULL, NULL};
+	qser_data_call_s apn_normal_datacall;
+	qser_data_call_s apn_test1_datacall;
+    qser_data_call_error_e err = QSER_DATA_CALL_ERROR_NONE;
+	
+	memcpy(apn_test1.apn_type,apn_type,QSER_APN_NAME_SIZE);
+	memcpy(apn_test1.apn_name,apn_name1,QSER_APN_NAME_SIZE);
+
+	//1、检查apn是否存在
+	qser_apn_info_list_s apn_list = {0};
+    ret = qser_apn_get_list(&apn_list);
+	if(ret != 0)
+	{
+		printf("\n get apn list error\n");
+		return -1;
+	}
+    for(int i = 0; i < apn_list.cnt; i++)
+    {
+        printf("data_demo_auto_test: pdp_type=%d, auth_proto=%d, apn_name=%s, username=%s, password=%s, apn_type=%s\n"
+            ,apn_list.apn[i].pdp_type, apn_list.apn[i].auth_proto, apn_list.apn[i].apn_name, apn_list.apn[i].username, apn_list.apn[i].password, apn_list.apn[i].apn_type);
+		
+		if( apn_list.apn[i].pdp_type == apn_test1.pdp_type 
+			&& apn_list.apn[i].auth_proto == apn_test1.auth_proto
+			&& (strcmp(apn_list.apn[i].apn_name, apn_test1.apn_name) == 0)
+			&& (strcmp(apn_list.apn[i].username, apn_test1.username) == 0)
+			&& (strcmp(apn_list.apn[i].password, apn_test1.password) == 0)
+			&& (strcmp(apn_list.apn[i].apn_type, apn_test1.apn_type) == 0)
+			)
+		{
+			profile_idx_char1 = apn_list.apn[i].profile_idx;
+			apn_test1_need_insert = false;
+		}
+	}
+	//2、若不存在，插入apn
+	if(apn_test1_need_insert)
+	{
+		ret = qser_apn_add(&apn_test1, &profile_idx_char1);
+		if(ret != 0)
+		{
+			printf("\n add apn error\n");
+			return -1;
+		}
+	}
+	//3、拨号
+	apn_normal_datacall.profile_idx = 0;//默认apn profile_idx
+	apn_test1_datacall.profile_idx = profile_idx_char1;
+	//拨号时实际使用的ip_name,userdata,password等配置以apn信息中的为准，不使用datacall中的配置
+	ret = qser_data_call_start(&apn_normal_datacall, &err);//默认apn拨号
+	if(ret != 0)
+	{
+		printf("\nERROR: setup data call fail!!!\n");
+		return -1;
+	}
+
+	ret = qser_data_call_start(&apn_test1_datacall, &err);
+	if(ret != 0)
+	{
+		printf("\nERROR: setup data call fail!!!\n");
+		return -1;
+	}
+
+	printf("\n[DATA_DEMO]Enter --exit to exit data demo\n");
+	while(1)
+	{
+		fgets(command , MAX_COMMAND_LEN, stdin);
+		delete_enter(command);
+		if(strcmp(command,"--exit") == 0)
+		{
+			break;
+		}
+		else
+		{
+			printf("\n[DATA_DEMO]Enter --exit to  deactive data call and exit data demo\n");
+		}
+	}
+
+	//4、去激活
+	//去激活时有效入参仅为profile_idx
+	ret = qser_data_call_stop(apn_normal_datacall.profile_idx, apn_normal_datacall.ip_family, &err);
+	if(ret < 0)
+	{
+		printf("\nERROR: deactive data call fail!!!\n");
+		return -1;
+	}
+	ret = qser_data_call_stop(apn_test1_datacall.profile_idx, apn_test1_datacall.ip_family, &err);
+	if(ret < 0)
+	{
+		printf("\nERROR: deactive data call fail!!!\n");
+		return -1;
+	}
+	return 0;
+}
+void evt_cb(qser_data_call_state_s *state)
+{
+    char buf_ip[64] = {0};
+    char buf_gateway[64] = {0};
+    char buf_pri_dns[64] = {0};
+    char buf_sec_dns[64] = {0};
+    printf("DATA_DEMO_CALL_BACK: profile_idx=%d, name=%s, ip_family=%d, state=%d, error=%d\n"
+        , state->profile_idx, state->name, state->ip_family, state->state, state->err);
+    printf("DATA_DEMO_CALL_BACK: v4.ip=%s\n"
+        , inet_ntoa(state->v4.ip));
+    printf("DATA_DEMO_CALL_BACK: v4.gateway=%s\n"
+        , inet_ntoa(state->v4.gateway));
+    printf("DATA_DEMO_CALL_BACK: v4.pri_dns=%s, v4.sec_dns=%s\n"
+        , inet_ntoa(state->v4.pri_dns));
+    printf("DATA_DEMO_CALL_BACK: v4.sec_dns=%s\n"
+        , inet_ntoa(state->v4.sec_dns));
+    inet_ntop(AF_INET6, &(state->v6.ip), buf_ip, sizeof(buf_ip));
+    inet_ntop(AF_INET6, &(state->v6.gateway), buf_gateway, sizeof(buf_gateway));
+    inet_ntop(AF_INET6, &(state->v6.pri_dns), buf_pri_dns, sizeof(buf_pri_dns));
+    inet_ntop(AF_INET6, &(state->v6.sec_dns), buf_sec_dns, sizeof(buf_sec_dns));
+    printf("DATA_DEMO_CALL_BACK: v6.ip=%s, v6.gateway=%s, v6.pri_dns=%s, v6.sec_dns=%s\n"
+        , buf_ip, buf_gateway, buf_pri_dns, buf_sec_dns);
+	//后续对回调函数中返回值的处理建议放在其它线程中进行，避免阻塞在回调函数中影响后续消息上报
+}
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/files/makefile b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/files/makefile
new file mode 100755
index 0000000..c48324c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/files/makefile
@@ -0,0 +1,53 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -std=gnu++14 \
+                -g -Os \
+                -flto \
+                -fpermissive \
+
+ifeq ($(strip $(TARGET_PLATFORM)), T106)
+LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 -DHAVE_ENDIAN_H -DHAVE_PTHREADS -DHAVE_SYS_UIO_H -DHAVE_POSIX_FILEMAP -DHAVE_STRLCPY -DHAVE_PRCTL -DHAVE_MEMSET16 -DHAVE_MEMSET32 -DANDROID_SMP=0
+endif
+
+LOCAL_CFLAGS += -Werror=format-security
+
+$(warning ################# rock ROOT: $(ROOT),includedir:$(includedir),)
+
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/include/ \
+  -I$(ROOT)$(includedir)/ \
+
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -lstdc++ \
+    -lpthread \
+    -llynq-qser-data \
+
+
+
+SOURCES = lynq-qser-data-demo.cpp
+
+EXECUTABLE = lynq-qser-data-demo
+
+OBJECTS=$(SOURCES:.cpp=.o)
+
+all: $(EXECUTABLE) 
+
+$(EXECUTABLE): $(OBJECTS)
+	$(CXX) $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.cpp
+	$(CXX) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+.PHONY: clean
+clean:
+	$(RM) $(OBJECTS) $(EXECUTABLE)
+	$(RM) $(OBJECTS_TOOL) $(EXECUTABLE)
+
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/lynq-qser-data-demo.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/lynq-qser-data-demo.bb
new file mode 100755
index 0000000..9bd06ba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-data-demo/lynq-qser-data-demo.bb
@@ -0,0 +1,31 @@
+#inherit externalsrc package
+#inherit externalsrc package systemd
+DESCRIPTION = "lynq-qser-data-demo"
+LICENSE = "CLOSED"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"
+SRC_URI = "file://lynq-qser-data-demo.cpp \
+           file://makefile \
+"
+DEPENDS += "liblynq-qser-data"
+
+SRC-DIR = "${S}/../lynq-qser-data-demo"
+FILES_${PN} += "${bindir}/"
+TARGET_CC_ARCH += "${LDFLAGS}"
+SYSTEMD_PACKAGES = "${PN}"
+S = "${WORKDIR}"
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+	if test "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" || test "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4"; then
+		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -mhard-float"
+	else
+		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}"
+	fi
+}
+
+
+do_install() {
+
+	install -d ${D}${bindir}/
+	install -m 0755 ${S}/lynq-qser-data-demo ${D}${bindir}/
+}
