diff --git a/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp b/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp
index 945e0a4..5aeb496 100755
--- a/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp
+++ b/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp
@@ -17,7 +17,8 @@
 #include "liblog/lynq_deflog.h"
 #include <include/libpoweralarm.h>
 #include <pthread.h>
-
+#include <string.h>
+#include <errno.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -25,6 +26,9 @@
 
 #define USER_LOG_TAG "LYNQ_POWERALARM"
 
+#define MIN_TIME    1
+#define MAX_TIME    268435456
+
 
 static int wk_rtc_id = 1;
 static int pw_rtc_id = 2;
@@ -36,7 +40,7 @@
 extern int sc_rtc_timer_add(int srcid, int rtc_id, unsigned long ulSec, sc_rtc_timer_exp_cb rtc_notify);
 extern int sc_rtc_timer_del(int srcid, int rtc_id);
 
-
+extern int sc_rtc_timer_add_utc(int srcid, int rtc_id, struct tm *utc_sec, int wakeup, sc_rtc_timer_exp_cb rtc_notify);
 
 /*****************************************
 * @brief:sc_rtc_timer_add_cb
@@ -66,6 +70,12 @@
 {
     unsigned long  time_sec = 0;
     int ret = 0;
+    char *buf_bak = buffer;
+    time_t tmp_time = 0;
+    struct tm *ptime = NULL;
+    struct tm *wake_arlarm = NULL;
+    tmp_time = time(NULL);
+    ptime = localtime(&tmp_time);
     
     LYLOGSET(LOG_INFO);
     LYLOGEINIT(USER_LOG_TAG);
@@ -76,16 +86,41 @@
         return -1;
     }
 
-    time_sec = atoll(buffer);
+    while(*buffer != '\0' )
+    {
+        if((*buffer < '0') || (*buffer > '9'))
+        {
+            LYERRLOG("Illeagel input buffer , there is invalid character!!!!");
+            return -1;
+        }
+        else
+        {
+            buffer++;
+        }
+    }
+   
+
+    buffer = buf_bak;
+    time_sec = strtoul(buffer,NULL,10);
+    if(time_sec < MIN_TIME || time_sec > MAX_TIME || errno == ERANGE)
+    {
+        LYERRLOG("Illeagle input: too large or too small !!!");
+        return -1;
+    }
+
+    tmp_time += time_sec;
+    wake_arlarm = localtime(&tmp_time);
     
     LYINFLOG("Set  wakealarm   %lu seconds ",time_sec);
+    
     wk_srcid = sc_rtc_timer_init();
     if (wk_srcid <= 0)
     {
         LYINFLOG("rtc_timer_init fail!");
         return -1;
     }
-    ret = sc_rtc_timer_add(wk_srcid, wk_rtc_id, time_sec, sc_rtc_timer_add_cb);
+    
+    ret = sc_rtc_timer_add_utc(wk_srcid, wk_rtc_id,wake_arlarm,0,sc_rtc_timer_add_cb);
     if(ret < 0)
     {
         LYINFLOG("Add  rtc timer failed!!!!");
@@ -119,29 +154,50 @@
     int srcid = 0;
     unsigned long  time_sec = 0;
     int ret = 0;
+    char *buf_bak = buffer;
     
     LYLOGSET(LOG_INFO);
     LYLOGEINIT(USER_LOG_TAG);
-    
+   
     if(buffer == NULL)
     {
-        LYINFLOG("Bad input parameter,exit!!!!");
+        LYERRLOG("Bad input parameter,exit!!!!");
         return -1;
     }
+    
+    while(*buffer != '\0' )
+    {
+        if(( *buffer < '0' )|| ( *buffer > '9'))
+        {
+            LYERRLOG("Illeagel input buffer , there is invalid character!!!!");
+            return -1;
+        }
+        else
+        {
+            buffer++;
+        }
+    }
+    
 
-    time_sec = atoll(buffer);
+    buffer = buf_bak;
+    time_sec = strtoul(buffer,NULL,10);
+    if(time_sec < MIN_TIME || time_sec > MAX_TIME || errno == ERANGE)
+    {
+        LYERRLOG("Illeagle input: too large or too small !!!");
+        return -1;
+    }
     
     LYINFLOG("Set poweralarm %lu seconds",time_sec);
     srcid = sc_rtc_timer_init();
     if (srcid <= 0)
     {
-        LYINFLOG("rtc_timer_init fail!");
+        LYERRLOG("rtc_timer_init fail!");
         return -1;
     }
     ret = sc_rtc_timer_add(srcid, pw_rtc_id, time_sec, sc_rtc_timer_add_cb);
     if(ret < 0)
     {
-        LYINFLOG("Add  rtc timer failed!!!!");
+        LYERRLOG("Add  rtc timer failed!!!!");
         return -1;
     }
     
@@ -174,7 +230,7 @@
     ret = sc_rtc_timer_del(wk_srcid, wk_rtc_id);
     if(ret < 0)
     {
-        LYINFLOG("Del wakealarm failed!!!");
+        LYERRLOG("Del wakealarm failed!!!");
         return -1;
     }
 
@@ -194,15 +250,24 @@
 ******************************************/
 int  lynq_set_poweralarm(unsigned long time_sec)
 {
-    LYLOGSET(LOG_INFO);
-    LYLOGEINIT(USER_LOG_TAG);
+
     int ret = 0;
     int srcid = 0;
+
+    LYLOGSET(LOG_INFO);
+    LYLOGEINIT(USER_LOG_TAG);
+    
+    if(time_sec < MIN_TIME || time_sec > MAX_TIME )
+    {
+        LYERRLOG("Illeagle input: too large or too small !!!");
+        return -1;
+    }
+    
     LYINFLOG("lynq_set_poweralarm %lu seconds",time_sec);
     srcid = sc_rtc_timer_init();
     if (srcid <= 0)
     {
-        LYINFLOG("rtc_timer_init fail!");
+        LYERRLOG("rtc_timer_init fail!");
         return -1;
     }
     ret = sc_rtc_timer_add(srcid, pw_rtc_id, time_sec, sc_rtc_timer_add_cb);
@@ -238,17 +303,35 @@
 {
     int ret = 0;
     
+    time_t tmp_time = 0;
+    struct tm *ptime = NULL;
+    struct tm *wake_arlarm = NULL;
+    tmp_time = time(NULL);
+    ptime = localtime(&tmp_time);
+    
     LYLOGSET(LOG_INFO);
     LYLOGEINIT(USER_LOG_TAG);
     
+    if(time_sec < MIN_TIME || time_sec > MAX_TIME)
+    {
+        LYERRLOG("Illeagle input: too large or too small !!!");
+        return -1;
+    }
+    
     LYINFLOG("lynq_set_wakealarm   %lu seconds ",time_sec);
+    
     wk_srcid = sc_rtc_timer_init();
     if (wk_srcid <= 0)
     {
         LYINFLOG("rtc_timer_init fail!");
         return -1;
     }
-    ret = sc_rtc_timer_add(wk_srcid, wk_rtc_id, time_sec, sc_rtc_timer_add_cb);
+    
+    tmp_time += time_sec;
+    wake_arlarm = localtime(&tmp_time);
+    LYINFLOG("Set  wakealarm   %lu seconds ",time_sec);
+    
+    ret = sc_rtc_timer_add_utc(wk_srcid, wk_rtc_id,wake_arlarm,0,sc_rtc_timer_add_cb);
     if(ret < 0)
     {
         LYINFLOG("Add  rtc timer failed!!!!");
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
index f9e405b..5369a73 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
@@ -787,9 +787,8 @@
 		
 		default:
 		{ 
-			err = at_send_command("AT^SYSCONFIG=2,0,1,2",  &response);
-			DO_MM_RESPONSE_ERROR_JDUGE;
-			break;
+			RLOGE("%s: not support network type %d", __FUNCTION__, networkType);
+			goto error;
 		}
 	}
 	RIL_onRequestComplete(token, RIL_E_SUCCESS, NULL, 0);
