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 23bac63..e67c8a4 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
@@ -262,6 +262,7 @@
         lynq-qser-network-demo \
         poweralarm-demo \
         lynq-systime-demo \
+        lynq-fota-backup \
         "
 
 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-fota-backup/files/LICENSE b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/LICENSE
new file mode 100755
index 0000000..0489348
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/LICENSE
@@ -0,0 +1,31 @@
+opyright Statement:
+
+This software/firmware and related documentation ("MobileTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MobileTek Inc. and/or its licensors. Without
+the prior written permission of MobileTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MobileTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+Mobiletek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MobileTek SOFTWARE")
+RECEIVED FROM MobileTek AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MobileTek EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MobileTek PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MobileTek SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MobileTek
+SOFTWARE. MobileTek SHALL ALSO NOT BE RESPONSIBLE FOR ANY MobileTek SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MobileTek'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MobileTek SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MobileTek'S OPTION, TO REVISE OR REPLACE THE
+MobileTek SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MobileTek FOR SUCH MobileTek SOFTWARE AT ISSUE.
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.cpp
new file mode 100755
index 0000000..84a727b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.cpp
@@ -0,0 +1,97 @@
+/*******************************************************
+* 
+* @brief:
+* @details:  add fota A/B backup service 
+* @author:   l.yang
+* @date:     2023.8.29
+* @version:  V1.0
+* @copyright：Copyright (c) MobileTek 
+*
+*********************************************/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <dlfcn.h>
+#include <string.h>
+#include <pthread.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <liblog/lynq_deflog.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FOTA_FLAG_FILE "/mnt/userdata/.back_up_flag"
+#define FOTA_SYNC_FLAG    1
+
+extern int lynq_sync_system();
+extern int lynq_fota_get_addr_value(char *tmp_value);
+extern int lynq_fota_set_addr_value(char        *value,int size);
+extern int lynq_fota_nrestart(void);
+int main()
+{
+    int ret = 0 ;
+    int sync_flag = 0;
+    char tmp_addr[128] = {0};
+    FILE *fp = NULL;
+
+    fp = fopen(FOTA_FLAG_FILE,"r");
+    if(fp == NULL)
+    {
+        printf("No need fota sync\n");
+        return -1;
+
+    }
+    
+    fread(&sync_flag,sizeof(int),1,fp);
+    
+    if(sync_flag == FOTA_SYNC_FLAG)
+    {
+        ret = lynq_sync_system();
+        if(ret != 0)
+        {
+            printf("sync faild\n");
+            fclose(fp);
+        }
+       system("rm -rf /mnt/userdata/.back_up_flag");
+        
+    }
+    else if(sync_flag != FOTA_SYNC_FLAG)
+    {
+        ret = lynq_fota_get_addr_value(tmp_addr);
+        if(ret != 0)
+        {
+            printf("Get addr failed\n");
+            return -1;
+        }
+        printf("tmp_addr is %s\n",tmp_addr);
+        ret = lynq_fota_set_addr_value(tmp_addr,10);
+        if(ret != 0)
+        {
+            printf("Set addr failed\n");
+            return -1;
+
+        }
+        ret = lynq_fota_nrestart();
+        if(ret != 0)
+        {
+            printf("Upgrade failed\n");
+            return -1;
+        }
+        
+    }
+   
+    return 0;
+
+}
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.service b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.service
new file mode 100755
index 0000000..28851ff
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=lynq-fota-backup-service
+
+[Service]
+ExecStart=/usr/bin/lynq-fota-backup
+Type=simple
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.sh b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.sh
new file mode 100644
index 0000000..53eb20f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Run the daemon
+#
+
+DAEMON="lynq-fota-backup-service"
+PIDFILE="/var/run/$DAEMON.pid"
+EXEC="/usr/bin/lynq-fota-backup"
+EXEC_ARGS=""
+
+
+start() {
+        echo -n "Starting $DAEMON... "
+        start-stop-daemon --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
+        [ $? -eq 0 ] && echo "OK" || echo "ERROR"
+}
+
+stop() {
+        echo -n "Stopping $DAEMON... "
+        start-stop-daemon -K -p $PIDFILE
+        [ $? -eq 0 ] && echo "OK" || echo "ERROR"
+}
+
+restart() {
+        stop
+        start
+}
+
+case "$1" in
+  start|stop|restart)
+        "$1"
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?
+
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/makefile b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/makefile
new file mode 100755
index 0000000..0a349d3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/makefile
@@ -0,0 +1,57 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -std=gnu++14 \
+                -g -Os \
+                -flto \
+                -fPIC \
+    
+                
+ 
+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)/logger \
+  -I$(ROOT)$(includedir)/liblog \
+  -I$(ROOT)$(includedir)/glib-2.0 \
+  -I$(ROOT)$(libdir)/glib-2.0/include \
+  -I$(ROOT)$(includedir)  \
+
+
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -lstdc++ \
+    -llynq-log \
+    -llynq-fota \
+
+SOURCES = lynq-fota-backup.cpp
+
+EXECUTABLE = lynq-fota-backup
+
+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-fota-backup/lynq-fota-backup.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/lynq-fota-backup.bb
new file mode 100755
index 0000000..b89f7ab
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-fota-backup/lynq-fota-backup.bb
@@ -0,0 +1,54 @@
+#inherit externalsrc package systemd
+
+DESCRIPTION = "lynq-fota-backup.service"
+
+LICENSE = "MIT"
+##License checksum file is always required
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=c794e8ff1acd3b7f156a6497e780dd54"
+
+SRC_URI = "file://lynq-fota-backup.cpp \
+	   file://lynq-fota-backup.sh \
+	   file://makefile \
+	   file://lynq-fota-backup.service \
+	   file://LICENSE \
+"
+
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+
+DEPENDS += "liblynq-log liblynq-uci liblynq-qser-fota"
+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
+}
+#INHIBIT_PACKAGE_STRIP = "1"
+
+
+do_install() {
+	install -d ${D}${bindir}/
+	echo "Installing image PN ${PN}"
+	echo "Installing image systemd_unitdir ${systemd_unitdir}"
+	echo "Installing image D ${D}"
+	echo "Installing image B ${B}"
+
+	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+		install -d ${D}${systemd_unitdir}/system/
+		install -m 0644 ${B}/lynq-fota-backup.service ${D}${systemd_unitdir}/system
+    else
+		install -d ${D}${sysconfdir}/init.d
+        	install -m 0755  ${S}/lynq-fota-backup.sh ${D}${sysconfdir}/init.d/
+        	install -d ${D}${sysconfdir}/rcS.d
+        	ln -s ../init.d/lynq-fota-backup.sh ${D}${sysconfdir}/rcS.d/S82lynq-fota-backup-service
+	fi
+
+	install -m 0755 ${S}/lynq-fota-backup ${D}${bindir}/
+	install -d ${D}${includedir}
+}
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp
index 9baced7..e0dcafd 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-fota/lynq-qser-fota.cpp
@@ -28,14 +28,15 @@
 #include "include/lynq-qser-fota.h"
 #include "liblog/lynq_deflog.h"
 
+#define FOTA_FLAG_FILE "/mnt/userdata/.back_up_flag"
 
-#define USER_LOG_TAG "LYNQ_FOTA"
-
+#define USER_LOG_TAG    "LYNQ_FOTA"
+#define FOTA_ADDR_FILE  "/mnt/userdata/.addr_value"
+#define FOTA_FILE_NAME  "upgrade.package"
 
 #define  SYSTEM_A  "34650"
 #define  SYSTEM_B  "39019"
 
-char path[] = {0};
 
 #define BOOTABLE   "45227"
 #define UNBOOTABLE "47806"
@@ -49,7 +50,6 @@
 #define    LYNQ_UPGRADE_STATUS_UPDATE_FAIL         (5)
 
 
-
 typedef struct
 {
     int system;
@@ -121,7 +121,17 @@
     
     int ret = 0;
     int current_slot = 0;
-
+    int fota_sync_flag = 0;
+    FILE *fp = NULL;
+    fp = fopen(FOTA_FLAG_FILE,"w+");
+    if(fp == NULL)
+    {
+        LYINFLOG("Creat fota flag file failed");
+        return -1;
+    }
+    fwrite(&fota_sync_flag,sizeof(int),1,fp);
+    fclose(fp);
+    
     ret = lynq_fota_verify();
     if(ret != 0)
     {
@@ -209,7 +219,18 @@
         }
 
     }
-
+    
+    fp = fopen(FOTA_FLAG_FILE,"w+");
+    if(fp == NULL)
+    {
+        LYINFLOG("Creat fota flag file failed");
+        return -1;
+    }
+    
+    fota_sync_flag = 1;
+    fwrite(&fota_sync_flag,sizeof(int),1,fp);
+    fclose(fp);
+    
     if(reboot_flag == 1)
     {
         LYINFLOG("Enter reboot device");
@@ -251,7 +272,7 @@
 int lynq_fota_set_addr_value(char        *value,int size)
 {
     int ret =0;
-    
+    FILE *fp = NULL;    
     LYLOGSET(LOG_INFO);
     LYLOGEINIT(USER_LOG_TAG);
     
@@ -267,10 +288,62 @@
         return -1;
     }
     
+    fp = fopen(FOTA_ADDR_FILE,"w+");
+    if(fp == NULL)
+    {
+        LYINFLOG("Open addr file failed");
+        return -1;
+    }
+    
+    fprintf(fp,"%s",value);
+    fclose(fp);
+
     LYINFLOG("Configure upgrade package path success");
     return 0;
 }
 
+/*****************************************
+* @brief:lynq_fota_get_addr_value
+* @param count [IN]:char  *tmp_value
+* @param sum [OUT]:
+* @return :success 0, failed -1
+* @todo:NA
+* @see:NA
+* @warning:NA
+******************************************/
+int lynq_fota_get_addr_value(char *tmp_value)
+{
+    FILE *fp = NULL;
+    char tmp_addr[128] = {0};
+
+ 
+    fp = fopen(FOTA_ADDR_FILE,"r");
+    if(fp == NULL)
+    {
+        LYINFLOG("Open fota addr faile failed!!!");
+        return -1;
+    }
+    while(fgets(tmp_addr,sizeof(tmp_addr),fp) != NULL)
+    {
+        if( strstr(tmp_addr,FOTA_FILE_NAME) != NULL)
+        {
+            strncpy(tmp_value,tmp_addr,sizeof(tmp_addr) - 1);
+            break;
+        }
+        else
+        {
+            LYINFLOG("Get addr failed\n");
+            fclose(fp);
+            return -1;
+        }
+    }
+
+    fclose(fp);
+    return 0;
+        
+
+}
+
 
 /*****************************************
 * @brief:lynq_fota_verify
@@ -740,4 +813,3 @@
 #ifdef __cplusplus
 }
 #endif
-
