diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp
index 75da1e1..2e0f71f 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp
@@ -6,12 +6,16 @@
 #include <dlfcn.h>
 #include <stdint.h>
 
+
+#define INIT_SUCCESS    0
+
 typedef struct
 {
     int  cmdIdx;
     char *funcName;
 } st_api_test_case;
-    
+
+
 //for server test
 st_api_test_case at_api_testcases[] = 
 {
@@ -26,7 +30,10 @@
     {-1,    NULL}
 };
 
-int src_id = -1;
+ int init_flag = -1;
+ int src_id = -1;
+ void *dlHandle_poweralarm = NULL;
+ 
 typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);
 
 int (*lynq_rtc_service_init)(void);
@@ -37,7 +44,6 @@
 int (*lynq_set_poweralarm)(unsigned long time_sec,int src_id);
 int (*lynq_set_wakealarm)(unsigned long time_sec,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);
 
-void *dlHandle_poweralarm = NULL;
 
 
 void print_help(void)
@@ -125,6 +131,7 @@
     print_help();
     while(1)
     {
+        
         printf("\nplease input cmd index(-1 exit): ");
         scanf("%d", &cmdIdx);
         if(cmdIdx == -1)
@@ -139,92 +146,145 @@
             case 1:
                 {
                     src_id = lynq_rtc_service_init();
+                    if(src_id <= 0)
+                    {
+
+                        printf("RTC service init failed ");
+                        return -1;
+                    }
+                    else
+                    {
+                        init_flag = INIT_SUCCESS;
+                    }
+                    
                     break;
                 }
             case 2:
                 {
-                    int ret = 0;
-                    char tmp_time[32] = {0};
-                    printf("Set poweralarm time,e.g: 60 (seconds)\n");
-                    scanf("%s",tmp_time);
-                    ret = poweralarm(tmp_time,src_id);
-                    if(ret != 0)
+                    
+                    if(init_flag != INIT_SUCCESS)
                     {
-                        printf("set poweralarm failed\n");
-                        return -1;
+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+                    }
+                    else
+                    {
+                        int ret = 0;
+                        char tmp_time[32] = {0};
+                        printf("Set poweralarm time,e.g: 60 (seconds)\n");
+                        scanf("%s",tmp_time);
+                        ret = poweralarm(tmp_time,src_id);
+                        if(ret != 0)
+                        {
+                            printf("set poweralarm failed\n");
+                            return -1;
+                        }
                     }
                 break;
                 }
             case 3:
                 {
-                    int ret = 0;
-                    char tmp_time[32]={0};
-                    int rtc_id = 0;
-                    printf("Set wakealarm time ,e.g: 60  1 (seconds)\n");
-                    scanf("%s%d",tmp_time,&rtc_id);
-                   
-                    ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);
-                    if(ret != 0)
+                    if(init_flag != INIT_SUCCESS)
                     {
-                        printf("set wakealarm failed\n");
-                        return -1;
+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+                    }
+                    else
+                    {
+                        int ret = 0;
+                        char tmp_time[32]={0};
+                        int rtc_id = 0;
+                        printf("Set wakealarm time ,e.g: 60  1 (seconds)\n");
+                        scanf("%s%d",tmp_time,&rtc_id);
+                   
+                        ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);
+                        if(ret != 0)
+                        {
+                            printf("set wakealarm failed\n");
+                            return -1;
+                        }
                     }
                     break;
                 }
              case 4:
                 {
-                    int ret = 0;
-                    int rtc_id = 0;
-                    printf("Please input you want cancel rtc timer rtc id\n");
-                    scanf("%d",&rtc_id);
-                    ret = cancel_wakealarm(src_id,rtc_id);
-                    if(ret != 0)
+                    if(init_flag != INIT_SUCCESS)
                     {
-                        printf("Cancel_wakealarm failed!!!");
-                        return -1;
+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+                    }
+                    else
+                    {
+                        int ret = 0;
+                        int rtc_id = 0;
+                        printf("Please input you want cancel rtc timer rtc id\n");
+                        scanf("%d",&rtc_id);
+                        ret = cancel_wakealarm(src_id,rtc_id);
+                        if(ret != 0)
+                        {
+                            printf("Cancel_wakealarm failed!!!");
+                            return -1;
+                        }
                     }
                     break;
                 }
              case 5:
                 { 
-                   int ret = 0; 
-                   unsigned long time_sec = 0;
-                   printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");
-                   scanf("%lu",&time_sec);
-                   ret =lynq_set_poweralarm(time_sec,src_id);
-                   printf("ret is %d\n",ret);
-                   if(ret != 0)
-                   {
-                        printf("lynq_set_poweralarm failed\n");
-                        return -1;
-                   }
+                    if(init_flag != INIT_SUCCESS)
+                    {
+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+                    }
+                    else
+                    {
+                        int ret = 0; 
+                        unsigned long time_sec = 0;
+                        printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");
+                        scanf("%lu",&time_sec);
+                        ret =lynq_set_poweralarm(time_sec,src_id);
+                        printf("ret is %d\n",ret);
+                        if(ret != 0)
+                        {
+                            printf("lynq_set_poweralarm failed\n");
+                            return -1;
+                        }
+                    }
                    break;
                 }
             case 6:
-                 { 
-                   int ret = 0; 
-                   unsigned long time_sec = 0;
-                   int rtc_id;
-                   printf("Input time_sec you want wakealarm,e.g:60  1(seconds)\n");
-                   scanf("%lu%d",&time_sec,&rtc_id);
-                   ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);
-                   if(ret != 0)
-                   {
-                        printf("lynq_set_wakealarm failed\n");
-                        return -1;
+                { 
+                    if(init_flag != INIT_SUCCESS)
+                    {
+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");
                    }
+                   else
+                   {
+                        int ret = 0; 
+                        unsigned long time_sec = 0;
+                        int rtc_id;
+                        printf("Input time_sec you want wakealarm,e.g:60  1(seconds)\n");
+                        scanf("%lu%d",&time_sec,&rtc_id);
+                        ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);
+                        if(ret != 0)
+                        {
+                            printf("lynq_set_wakealarm failed\n");
+                            return -1;
+                        }
+                    }
                    break;
                 }
             case 7:
                 {
-                    int ret  = -1;
-                    printf("rtc servce deinit !!!!!!!!!!!!");
-                    ret = lynq_rtc_service_deinit();
-                    if(ret != 0)
+                    if(init_flag != INIT_SUCCESS)
                     {
-                        printf("lynq rtc service deinit failed \n");
-                        return -1;
-
+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+                    }
+                    else
+                    {
+                        int ret  = -1;
+                        printf("rtc servce deinit !!!!!!!!!!!!");
+                        ret = lynq_rtc_service_deinit();
+                        if(ret != 0)
+                        {
+                            printf("lynq rtc service deinit failed \n");
+                            return -1;
+                        }
                     }
                     break;
                 }
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 4225625..5e12c84 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
@@ -210,9 +210,12 @@
     {
         pt_info->e_card_state = 0xB03;
     }
-    else
+    else if(0 == sim_status)
     {
     
+        pt_info->e_card_state = 0xB02;
+    }
+    else{
         pt_info->e_card_state = 0xB01;
     }
     LYINFLOG("[%s-%d] QSER_CARD_STATUS: 0x%x\n", __FUNCTION__, __LINE__, pt_info->e_card_state);
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 aa69974..75a1d0b 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
@@ -457,6 +457,10 @@
     }
     if(puk == NULL || pin == NULL)
         return -1;
+
+    if(strlen(puk) < 4 || strlen(pin) < 4){
+        return -1;
+    }
     Parcel p;
     int res = lynq_send_common_request(&p,RIL_REQUEST_ENTER_SIM_PUK,2,1,"%s %s\n", puk, pin);
     if(res != 0)
