diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sim-demo/files/lynq-qser-sim-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sim-demo/files/lynq-qser-sim-demo.cpp
index 732225b..c5b61b6 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sim-demo/files/lynq-qser-sim-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-sim-demo/files/lynq-qser-sim-demo.cpp
@@ -308,7 +308,8 @@
                     char new_pin[BUF_PIN] = {0};
                     printf("input new pin\n");
                     scanf("%s", new_pin);
-
+                    memset(pt_info.puk_value, 0, sizeof(pt_info.puk_value));
+                    memset(pt_info.new_pin_value, 0, sizeof(pt_info.new_pin_value));
                     strncpy(pt_info.puk_value, puk, BUF_PIN);
                     strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
                     printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
@@ -403,7 +404,7 @@
                         res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
                         if(res == 0)
                         {
-                            printf("state is %d !!!\n",pt_info.e_card_state);
+                            printf("state is 0x%x !!!\n",pt_info.e_card_state);
                         }else{
                             printf("get imsi error,res = %d\n", res);
                         }
@@ -416,119 +417,149 @@
             //qser_deinit_sim
             case 10:
             {
-                char imei[BUF_SIZE]="";
-                qser_sim_getimei = (int(*)(sim_client_handle_type h_sim, char *imei))dlsym(dlHandle_sim,"qser_sim_getimei");
-                if(NULL != qser_sim_getimei)
-                {
-                    res = qser_sim_getimei(h_sim, imei);
-                    if(res == 0)
-                    {
-                        printf("get imei success!!!\n");
-                    }else{
-                        printf("get imei error, res = %d\n", res);
-                    }
-                }else{
-                    printf("qser_sim_getimei dlsym error\n");
+                if(flag_init == 0){
+                    printf("must init first\n");
                 }
-                flag_init = 0;
-                break;
+                else{
+                    char imei[BUF_SIZE]="";
+                    qser_sim_getimei = (int(*)(sim_client_handle_type h_sim, char *imei))dlsym(dlHandle_sim,"qser_sim_getimei");
+                    if(NULL != qser_sim_getimei)
+                    {
+                        res = qser_sim_getimei(h_sim, imei);
+                        if(res == 0)
+                        {
+                            printf("get imei success!!!\n");
+                        }else{
+                            printf("get imei error, res = %d\n", res);
+                        }
+                    }else{
+                        printf("qser_sim_getimei dlsym error\n");
+                    }
+                 }
+                    //flag_init = 0;
+                    break;
             }
             //qser_get_imei_and_sv
             case 11:
             {
-                char imei[BUF_SIZE]="";
-                char sv[BUF_SIZE]="";
-                qser_get_imei_and_sv = (int(*)(sim_client_handle_type h_sim, char *imei, char *sv))dlsym(dlHandle_sim,"qser_get_imei_and_sv");
-                if(NULL != qser_get_imei_and_sv)
-                {
-                    res = qser_get_imei_and_sv(h_sim, imei, sv);
-                    if(res == 0)
-                    {
-                        printf("get imei and sv success!!!\n");
-                    }else{
-                        printf("get imei and sv error, res = %d\n", res);
-                    }
-                }else{
-                    printf("qser_get_imei_and_sv dlsym error\n");
+                if(flag_init == 0){
+                    printf("must init first\n");
                 }
-                flag_init = 0;
+                else{
+                    char imei[BUF_SIZE]="";
+                    char sv[BUF_SIZE]="";
+                    qser_get_imei_and_sv = (int(*)(sim_client_handle_type h_sim, char *imei, char *sv))dlsym(dlHandle_sim,"qser_get_imei_and_sv");
+                    if(NULL != qser_get_imei_and_sv)
+                    {
+                        res = qser_get_imei_and_sv(h_sim, imei, sv);
+                        if(res == 0)
+                        {
+                            printf("get imei and sv success!!!\n");
+                        }else{
+                            printf("get imei and sv error, res = %d\n", res);
+                        }
+                    }else{
+                        printf("qser_get_imei_and_sv dlsym error\n");
+                    }
+                }
+                //flag_init = 0;
                 break;
             }
             //qser_reset_modem
             case 12:
             {
-                qser_reset_modem = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_modem");
-                if(NULL != qser_reset_modem)
-                {
-                    res = qser_reset_modem(h_sim);
-                    if(res == 0)
-                    {
-                        printf("reset modem success!!!\n");
-                    }else{
-                        printf("reset modem error, res = %d\n", res);
-                    }
-                }else{
-                    printf("qser_reset_modem dlsym error\n");
+                if(flag_init == 0){
+                    printf("must init first\n");
                 }
-                flag_init = 0;
+                else{
+                    qser_reset_modem = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_modem");
+                    if(NULL != qser_reset_modem)
+                    {
+                        res = qser_reset_modem(h_sim);
+                        if(res == 0)
+                        {
+                            printf("reset modem success!!!\n");
+                        }else{
+                            printf("reset modem error, res = %d\n", res);
+                        }
+                    }else{
+                        printf("qser_reset_modem dlsym error\n");
+                    }
+                }
+                //flag_init = 0;
                 break;
             }
             //qser_get_version
             case 13:
             {
-                char buf[VER_SIZE]="";
-                qser_get_version = (int(*)(sim_client_handle_type h_sim, char *buf))dlsym(dlHandle_sim,"qser_get_version");
-                if(NULL != qser_get_version)
-                {
-                    res = qser_get_version(h_sim, buf);
-                    if(res == 0)
-                    {
-                        printf("get version success!!!\n");
-                    }else{
-                        printf("get version error, res = %d\n", res);
-                    }
-                }else{
-                    printf("qser_get_version dlsym error\n");
+                if(flag_init == 0){
+                    printf("must init first\n");
                 }
-                flag_init = 0;
+                else{
+                    char buf[VER_SIZE]="";
+                    qser_get_version = (int(*)(sim_client_handle_type h_sim, char *buf))dlsym(dlHandle_sim,"qser_get_version");
+                    if(NULL != qser_get_version)
+                    {
+                        res = qser_get_version(h_sim, buf);
+                        if(res == 0)
+                        {
+                            printf("get version success!!!\n");
+                        }else{
+                            printf("get version error, res = %d\n", res);
+                        }
+                    }else{
+                        printf("qser_get_version dlsym error\n");
+                    }
+                }
+                //flag_init = 0;
                 break;
             }
             //qser_reset_sim
             case 14:
             {
-                qser_reset_sim = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_sim");
-                if(NULL != qser_reset_sim)
-                {
-                    res = qser_reset_sim(h_sim);
-                    if(res == 0)
-                    {
-                        printf("reset sim success!!!\n");
-                    }else{
-                        printf("reset sim error, res = %d\n", res);
-                    }
-                }else{
-                    printf("qser_reset_sim dlsym error\n");
+                if(flag_init == 0){
+                    printf("must init first\n");
                 }
-                flag_init = 0;
+                else{
+                    qser_reset_sim = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_sim");
+                    if(NULL != qser_reset_sim)
+                    {
+                        res = qser_reset_sim(h_sim);
+                        if(res == 0)
+                        {
+                            printf("reset sim success!!!\n");
+                        }else{
+                            printf("reset sim error, res = %d\n", res);
+                        }
+                    }else{
+                        printf("qser_reset_sim dlsym error\n");
+                    }
+                }
+                //flag_init = 0;
                 break;
             }
             //qser_deinit_sim
             case 15:
             {
-                qser_sim_client_deinit = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_sim_client_deinit");
-                if(NULL != qser_sim_client_deinit)
-                {
-                    res = qser_sim_client_deinit(h_sim);
-                    if(res == 0)
-                    {
-                        printf("sim deinit success is!!!\n");
-                    }else{
-                        printf("sim deint errors, res = %d\n", res);
-                    }
-                }else{
-                    printf("qser_sim_client_deinit dlsym error\n");
+                if(flag_init == 0){
+                    printf("must init first\n");
                 }
-                flag_init = 0;
+                else{
+                    qser_sim_client_deinit = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_sim_client_deinit");
+                    if(NULL != qser_sim_client_deinit)
+                    {
+                        res = qser_sim_client_deinit(h_sim);
+                        if(res == 0)
+                        {
+                            printf("sim deinit success is!!!\n");
+                        }else{
+                            printf("sim deint errors, res = %d\n", res);
+                        }
+                    }else{
+                        printf("qser_sim_client_deinit dlsym error\n");
+                    }
+                 }
+                //flag_init = 0;
                 break;
             }
             default:
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-systime-demo/files/lynq_systime_demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-systime-demo/files/lynq_systime_demo.cpp
index d0fffcf..a600884 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-systime-demo/files/lynq_systime_demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-systime-demo/files/lynq_systime_demo.cpp
@@ -35,6 +35,8 @@
 int (*ntp_sync_time)(int enable);
 int (*user_set_time)(char *date, char *time);
 int (*lynq_get_time_src_status)(time_src_status_s *time_src);
+int (*get_sync_time_result)();
+
 
 int lynq_ntp_sync_demo(int argc, char *argv[])
 {
@@ -159,6 +161,22 @@
     return 0;
 }
 
+int lynq_get_sync_status_demo(int arg_c, char *arg_v[])
+{
+    get_sync_time_result = (int (*)(void))dlsym(dlHandle_systime, "get_sync_time_result");
+    int ret = 0;
+    if(NULL == get_sync_time_result)
+    {
+        printf("Failed to dlsym function get_sync_time_result: %s\n", dlerror());
+        dlclose(dlHandle_systime);
+        return -1;
+    }
+    ret = get_sync_time_result();
+    printf("get_sync_time_result = %d\n",ret);
+	dlclose(dlHandle_systime);
+    return 0;
+}
+
 int main(int argc, char *argv[])
 {
     int ret = -1;
@@ -237,6 +255,10 @@
     {
         ret = lynq_get_time_src_status_demo(argc, argv);
     }
+    else if (strcmp(cmd,"sync_status") == 0)
+    {
+        ret = lynq_get_sync_status_demo(argc, argv);
+    }
     else
     {
         printf("command wrong !\n");
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-call/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-call/makefile
index 57d6e2d..b38e05b 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-call/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-call/makefile
@@ -14,7 +14,7 @@
 
 
 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
+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 -Wl,-Bsymbolic
 endif
 
 ifeq ($(strip $(TARGET_PLATFORM)), T106)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-data/makefile
index 1dbdf99..c36e038 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/makefile
@@ -9,7 +9,7 @@
                 -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
+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 -Wl,-Bsymbolic
 endif
 
 ifeq ($(strip $(TARGET_PLATFORM)), T106)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-network/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-network/makefile
index 5505037..533ddcf 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-network/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-network/makefile
@@ -12,7 +12,7 @@
                 -DECALL_SUPPORT
 
 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
+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 -Wl,-Bsymbolic
 endif
 
 ifeq ($(strip $(TARGET_PLATFORM)), T106)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile
index 0f99e4f..8ab6383 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile
@@ -35,6 +35,7 @@
     -llynq-uci \
     -lsctel \
     -lbsp \
+    -lnvram \
 
 
 SOURCES = $(wildcard *.c wildcard *.h src/*.cpp)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
index 862aeea..d508438 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
@@ -34,6 +34,9 @@
 extern int sc_rtc_timer_init(void);
 extern int sc_rtc_timer_uninit(void);
 extern int sc_rtc_time_set(int srcid);
+extern int sc_cfg_get(char *name, char* buf, int bufLen);
+extern int sc_cfg_set (char *name, char *value);
+
 
 static inline int update_system_time(time_t timestamp)
 {
@@ -393,6 +396,12 @@
         _mopen_location_info->longitude = atof(tmp_str);
         memset(tmp_str, 0, sizeof(tmp_str));
         // get product name
+        ret = gnss_get_para_from_nmea(str, tmp_str, 6);
+        if(ret)
+            return;
+        _mopen_location_info->flags = atoi(tmp_str);
+        memset(tmp_str, 0, sizeof(tmp_str));
+        // get product name
         ret = gnss_get_para_from_nmea(str, tmp_str, 9);
         if(ret)
             return;
@@ -495,12 +504,7 @@
     {
         handle->gnss_handler_func((uint32)handle, E_MT_LOC_MSG_ID_NMEA_INFO, &nmea_info, NULL);
     }
-    if(handle->gnss_handler_func && handle->mode == 1 &&
-            mopen_location_info.latitude &&
-            mopen_location_info.longitude &&
-            mopen_location_info.altitude &&
-            mopen_location_info.timestamp &&
-            mopen_location_info.speed)
+    if(handle->gnss_handler_func && handle->mode == 1 && mopen_location_info.timestamp && mopen_location_info.flags)
     {
         
         handle->gnss_handler_func((uint32)handle, E_MT_LOC_MSG_ID_LOCATION_INFO, &mopen_location_info, NULL);
@@ -514,6 +518,7 @@
             if (update_system_time(nmea_info.timestamp) == 0)
             {
                 g_gnss_sync_done = 1;
+                sc_cfg_set("gnss_process_result","success");
             }
         }
     }
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
index 2628d27..d75c23b 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
@@ -488,6 +488,61 @@
     return state;  
 }
 
+int qser_romaing_state_qurey(int regState)
+{
+    if (regState == 5)
+    {
+        return  E_QSER_NW_ROAM_STATE_ON;   
+    }
+    return E_QSER_NW_ROAM_STATE_OFF;
+}
+
+int fill_registration_details_3gpp(QSER_NW_3GPP_REG_INFO_T  *registration_details_3gpp,  int regState, int netType, int serve_cell_info[MAX_CELLINFO_ITEM_NUMBER])
+{
+
+    if(serve_cell_info[1]>=0 && serve_cell_info[1] <= 999 && serve_cell_info[2]>=0 && serve_cell_info[2] <= 999 )
+    {
+        registration_details_3gpp->tech_domain = E_QSER_NW_TECH_DOMAIN_3GPP;
+        registration_details_3gpp->radio_tech = qser_radio_tech_qurey(netType);
+        registration_details_3gpp->roaming = qser_romaing_state_qurey(regState);
+        registration_details_3gpp->forbidden=0;
+
+        sprintf(registration_details_3gpp->mcc,"%d",serve_cell_info[1]);
+        sprintf(registration_details_3gpp->mnc,"%d",serve_cell_info[2]);  
+
+        if(serve_cell_info[0]<=LYNQ_CELL_INFO_TYPE_WCDMA)
+        {
+            registration_details_3gpp->lac=serve_cell_info[3];
+            registration_details_3gpp->tac=0xffff;
+        }
+        else
+        {
+            registration_details_3gpp->lac=0xffff;
+            registration_details_3gpp->tac=serve_cell_info[3];
+        }
+        
+        registration_details_3gpp->cid=serve_cell_info[4]; 
+        
+ 
+        if(serve_cell_info[0]==LYNQ_CELL_INFO_TYPE_WCDMA)
+        {
+             registration_details_3gpp->psc=serve_cell_info[5];
+        }
+        else
+        {
+             registration_details_3gpp->psc=0xffff;
+        }            
+        
+        return RESULT_OK;
+    }
+    LYERRLOG("mnc mcc error %d %d",serve_cell_info[1],serve_cell_info[2]);
+    return RESULT_ERROR;
+}
+
+int is_have_serve_cell(int regState)
+{
+    return (regState==E_QSER_NW_SERVICE_LIMITED || regState==E_QSER_NW_SERVICE_FULL);
+}
 
 int qser_nw_get_reg_status(nw_client_handle_type h_nw,QSER_NW_REG_STATUS_INFO_T *pt_info)
 {
@@ -504,6 +559,7 @@
     }    
     
     int ret = 0;
+    int ret_serve_cell=0;
     int regState = 0;
     int imsRegState = 0;
     char CID[128]={0};
@@ -511,53 +567,68 @@
     int netType = 0;
     int radioTechFam = 0;
     int netreject = 0;
-    pt_info->voice_registration_valid = 1;
-    ret = lynq_query_registration_state("VOICE",&regState,&imsRegState,LAC,CID,&netType,&radioTechFam,&netreject);
-    if(ret == 0)
-    {
-        pt_info->voice_registration_valid = 1;
-        pt_info->voice_registration.tech_domain = E_QSER_NW_TECH_DOMAIN_NONE;
-        pt_info->voice_registration.radio_tech = qser_radio_tech_qurey(netType);
-        if (regState == 5)
-        {
-            pt_info->voice_registration.roaming = E_QSER_NW_ROAM_STATE_ON;
-        }
-        else
-        {
-            pt_info->voice_registration.roaming = E_QSER_NW_ROAM_STATE_OFF;
-        }
-        pt_info->voice_registration.registration_state = switch_nw_regstate(regState);
-    }
-    else
-    {
-        pt_info->voice_registration_valid = 0;
-        LYERRLOG("get voice regstate fail");
-    }
-    ret = lynq_query_registration_state("DATA",&regState,&imsRegState,LAC,CID,&netType,&radioTechFam,&netreject);
-    if(ret == 0)
-    {
-        pt_info->data_registration_valid = 1;
-        pt_info->data_registration.tech_domain = E_QSER_NW_TECH_DOMAIN_NONE;
-        pt_info->data_registration.radio_tech = qser_radio_tech_qurey(netType);
-        if (regState == 5)
-        {
-            pt_info->data_registration.roaming = E_QSER_NW_ROAM_STATE_ON;
-        }
-        else
-        {
-            pt_info->data_registration.roaming = E_QSER_NW_ROAM_STATE_OFF;
-        }
-        pt_info->data_registration.registration_state = switch_nw_regstate(regState);
-    }
-    else
-    {
-        pt_info->data_registration_valid = 0;
-        LYERRLOG("get data regstate fail");
-    }
+    int serve_cell_info[MAX_CELLINFO_ITEM_NUMBER];
+    int valid_number;
+    int query_servce_cell=false;
+
+    pt_info->voice_registration_valid = 0;
+    pt_info->data_registration_valid = 0;
     pt_info->voice_registration_details_3gpp_valid = 0;
     pt_info->data_registration_details_3gpp_valid = 0;
     pt_info->voice_registration_details_3gpp2_valid = 0;
     pt_info->data_registration_details_3gpp2_valid = 0;
+        
+
+    ret = lynq_query_registration_state("VOICE",&regState,&imsRegState,LAC,CID,&netType,&radioTechFam,&netreject);
+    if(ret!=0)
+    {
+         LYERRLOG("get voice regstate fail");
+    }
+    else {    
+        pt_info->voice_registration_valid = 1;
+        pt_info->voice_registration.tech_domain = E_QSER_NW_TECH_DOMAIN_NONE;
+        pt_info->voice_registration.radio_tech = qser_radio_tech_qurey(netType);       
+        pt_info->voice_registration.roaming = qser_romaing_state_qurey(regState);       
+        pt_info->voice_registration.registration_state = switch_nw_regstate(regState);
+        
+        if(is_have_serve_cell(pt_info->voice_registration.registration_state))
+        {  
+            ret_serve_cell=lynq_query_serve_cell_info(serve_cell_info, &valid_number);                   
+            query_servce_cell=true;
+            if(ret_serve_cell== RESULT_OK && fill_registration_details_3gpp(&pt_info->voice_registration_details_3gpp,regState,netType,serve_cell_info) == RESULT_OK)
+            {
+                pt_info->voice_registration_details_3gpp_valid=1;                   
+            }    
+        }             
+    }
+    
+    ret = lynq_query_registration_state("DATA",&regState,&imsRegState,LAC,CID,&netType,&radioTechFam,&netreject);
+    if(ret!=0)
+    {
+         LYERRLOG("get data regstate fail");
+    }
+    else
+    {      
+        pt_info->data_registration_valid = 1;
+        pt_info->data_registration.tech_domain = E_QSER_NW_TECH_DOMAIN_NONE;
+        pt_info->data_registration.radio_tech = qser_radio_tech_qurey(netType);      
+        pt_info->data_registration.roaming = qser_romaing_state_qurey(regState);         
+        pt_info->data_registration.registration_state = switch_nw_regstate(regState);
+
+        if(is_have_serve_cell(pt_info->data_registration.registration_state))
+        {  
+            if(!query_servce_cell)
+            {
+                ret_serve_cell=lynq_query_serve_cell_info(serve_cell_info, &valid_number);                   
+            }
+                         
+            if(ret_serve_cell== RESULT_OK && fill_registration_details_3gpp(&pt_info->data_registration_details_3gpp,regState,netType,serve_cell_info) == RESULT_OK)
+            {
+                pt_info->data_registration_details_3gpp_valid=1;   
+            }    
+        }         
+    }    
+    
     return RESULT_OK;
 }
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-sim/lynq_qser_sim.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-sim/lynq_qser_sim.cpp
index d413c17..4225625 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-sim/lynq_qser_sim.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-sim/lynq_qser_sim.cpp
@@ -194,6 +194,7 @@
 int qser_sim_getcardstatus(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T   *pt_info)
 {
     int ret = 0;
+    int sim_status = 0;
     if(NULL == pt_info)
     {
         LYERRLOG("input  error\n");
@@ -204,8 +205,17 @@
         LYERRLOG("not init\n");
         return E_QSER_ERROR_BADPARM;
     }
-    ret = lynq_get_sim_status((int*)&pt_info->e_card_state);
-    LYINFLOG("[%s-%d] QSER_CARD_STATUS: %d\n", __FUNCTION__, __LINE__, (int *)pt_info->e_card_state);
+    ret = lynq_get_sim_status(&sim_status);
+    if(1 == sim_status)
+    {
+        pt_info->e_card_state = 0xB03;
+    }
+    else
+    {
+    
+        pt_info->e_card_state = 0xB01;
+    }
+    LYINFLOG("[%s-%d] QSER_CARD_STATUS: 0x%x\n", __FUNCTION__, __LINE__, pt_info->e_card_state);
     return ret;
 }
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile
index d28dbcb..219bda7 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile
@@ -14,7 +14,7 @@
 
 
 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 -DMOBILETEK_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 -DMOBILETEK_TARGET_PLATFORM_T106 -Wl,-Bsymbolic
 endif
 
 $(warning ################# lynq sim ROOT: $(ROOT),includedir:$(includedir))
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
index e62153a..aa69974 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
@@ -926,9 +926,31 @@
 {
     FILE * fp;
     char buffer[128];
+    if(g_lynq_sim_init_flag == 0)
+    {
+        return -1;
+    }
     sprintf(buffer, "%s", "uci get lynq_uci_ro.lynq_version.LYNQ_SW_VERSION");
     fp = popen(buffer, "r");
-    fgets(buffer, sizeof(buffer), fp);
+    if(NULL == fp)
+    {
+        RLOGE("popen failed !");
+        return -1;
+    }
+    if(NULL != fgets(buffer, sizeof(buffer), fp))
+    {
+        if('\n' == buffer[strlen(buffer) - 1])
+        {
+            buffer[strlen(buffer) - 1] = '\0';
+        }
+    }
+    else
+    {
+        RLOGE("fgets failed !");
+        pclose(fp);
+        return -1;
+    }
+
     memcpy(buf, buffer, strlen(buffer));
     buf[strlen(buffer)] = '\0';
     pclose(fp);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sms/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-sms/makefile
index b316414..4ee0c2a 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sms/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sms/makefile
@@ -13,7 +13,7 @@
                 -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
+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 -Wl,-Bsymbolic
 endif
 
 $(warning ################# lynq data demo ROOT: $(ROOT),includedir:$(includedir))
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-systime/lynq_systime.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-systime/lynq_systime.cpp
index d898f9d..67bc631 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-systime/lynq_systime.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-systime/lynq_systime.cpp
@@ -30,6 +30,8 @@
 #define LYNQ_SYNC_TIME_SECTION "lynq_sync_time"
 #define LYNQ_MODEM_TIME_KEY "lynq_modem_sync_time_enable"
 #define LYNQ_GNSS_TIME_KEY "lynq_gnss_sync_time_enable"
+#define SNTP_PROCESS_RESULT  "sntp_process_result"
+#define GNSS_PROCESS_RESULT  "gnss_process_result"
 #define BUF_LEN 258
 #define TIME_BUF 100
 #define SYNC_TIME_SUCCESS 0
@@ -38,6 +40,7 @@
 
 #define SYSTEM_FUNC_FAILED 7
 #define ERROR_PARA 8
+#define NV_SET_FAILED 9
 
 #ifdef MOBILETEK_TARGET_PLATFORM_T106
 #define NTP_RESTART_BUF "/etc/init.d/sntp restart"
@@ -59,6 +62,8 @@
 extern int sc_rtc_timer_uninit(void);
 extern int sc_rtc_time_set(int srcid);
 extern int sc_rtc_time_get(int srcid, sc_rtc_time_get_cb rtc_notify);
+extern int sc_cfg_get(char *name, char* buf, int bufLen);
+extern int sc_cfg_set (char *name, char *value);
 
 char sync_from_rtc_cb_flag = 1;
 char rtc_time_get_cb_flag = 1;
@@ -107,6 +112,106 @@
     return 0;
 }
 
+int get_sntp_process_result()
+{
+    LYLOGSET(LOG_LEVEL);
+    LYLOGEINIT(USER_LOG_TAG);
+    char sntp_process_result[10] = {0};
+    int ret = 0;
+
+    ret = sc_cfg_get(SNTP_PROCESS_RESULT,sntp_process_result,sizeof(sntp_process_result));
+
+    if(0 == ret)
+    {
+        if(strcmp(sntp_process_result,"success") != 0)
+        {
+            strcpy(sntp_process_result,"failed");
+            LYINFLOG("sntp sync result:%s\n",sntp_process_result);
+            return -1;
+        }
+
+        else
+        {
+            LYINFLOG("sntp sync result:%s\n",sntp_process_result);
+            return SYNC_TIME_SUCCESS;
+        }
+    }
+
+    else
+    {
+        LYERRLOG("read sntp_sync_result failed\n");
+        return -1;
+    }
+    
+}
+
+int get_gnss_process_result()
+{
+    LYLOGSET(LOG_LEVEL);
+    LYLOGEINIT(USER_LOG_TAG);
+    char gnss_process_result[10] = {0};
+    int ret = 0;
+
+    ret = sc_cfg_get(GNSS_PROCESS_RESULT,gnss_process_result,sizeof(gnss_process_result));
+
+    if(0 == ret)
+    {
+        if(strcmp(gnss_process_result,"success") != 0)
+        {
+            strcpy(gnss_process_result,"failed");
+            LYINFLOG("gnss sync result:%s\n",gnss_process_result);
+            return -1;
+        }
+        else
+        {
+            LYINFLOG("gnss sync result:%s\n",gnss_process_result);
+            return SYNC_TIME_SUCCESS;
+        }
+    }
+    else
+    {
+        LYERRLOG("read gnss_sync_result failed\n");
+        return -1;
+    }
+    
+}
+
+int get_sync_time_result()
+{
+    LYLOGSET(LOG_LEVEL);
+    LYLOGEINIT(USER_LOG_TAG);
+    time_src_status_s time_src = {0};
+    lynq_get_time_src_status(&time_src);
+
+    LYINFLOG("time_src -> gnss = %d,time_src -> ntp = %d, time_src -> nitz = %d\n",time_src.gnss,time_src.ntp,time_src.nitz);
+
+    if(time_src.gnss)
+    {
+        LYINFLOG("time_source is gnss\n");
+        return get_gnss_process_result();
+    }
+
+    else if(time_src.ntp)
+    {
+        LYINFLOG("time_source is ntp\n");
+        return get_sntp_process_result();
+    }
+
+    else if(time_src.nitz)
+    {
+        LYINFLOG("time_source is nitz\n");
+        return 0;
+    }
+
+    else
+    {
+        LYINFLOG("don't set any time_source\n");
+        return 0;
+    }
+
+}
+
+
 int lynq_sync_time_from_rtc(void)
 {
     LYLOGSET(LOG_LEVEL);
@@ -288,7 +393,7 @@
     int ret = system(cmd_buf);
     if (ret != 0)
     {
-        printf("Function system(\"%s\") failed.", cmd_buf);
+        printf("Function system(\"%s\") failed.\n", cmd_buf);
         return SYSTEM_FUNC_FAILED;
     }
     return 0;
@@ -299,12 +404,19 @@
     LYLOGSET(LOG_LEVEL);
     LYLOGEINIT(USER_LOG_TAG);
     LYDBGLOG("[%s][%d] enter.\n", __func__, __LINE__);
+    int ret = 0;
     if (enable != 0 && enable != 1)
     {
         LYERRLOG("Parameter error! Only 0/1 allowed.\n");
         return ERROR_PARA;
     }
-    int ret = system(PGREP_NTP_DARMON);
+    ret = sc_cfg_set(SNTP_PROCESS_RESULT,"");
+    if (0 != ret)
+    {
+        LYERRLOG("set SNTP_PROCESS_RESULT failed\n");
+        return NV_SET_FAILED;
+    }
+    ret = system(PGREP_NTP_DARMON);
     if (0 == ret)
     {
         if (enable)
@@ -374,12 +486,20 @@
     LYLOGEINIT(USER_LOG_TAG);
     LYDBGLOG("[%s][%d] enter.\n", __FUNCTION__, __LINE__);
     char buf[BUF_LEN] = "";
+    char result[10] = "";
     int ret = 0;
     if (enable != 0 && enable != 1)
     {
         LYERRLOG("Parameter error! Only 0/1 allowed.\n");
         return ERROR_PARA;
     }
+    ret = sc_cfg_set(GNSS_PROCESS_RESULT,"");
+    if (0 != ret)
+    {
+        LYERRLOG("set GNSS_PROCESS_RESULT failed\n");
+        return NV_SET_FAILED;
+    }
+    
     if (enable)
     {
         // Only one time source is allowed to run simultaneously.
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-systime/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-systime/makefile
index 758315f..d0e37e8 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-systime/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-systime/makefile
@@ -37,6 +37,7 @@
     -lsctel \
     -llynq-uci \
     -llynq-log \
+    -lnvram \
 
 
 SOURCES = $(wildcard *.cpp)
