diff --git a/mbtk/liblynq_lib/src/lynq_fota.c b/mbtk/liblynq_lib/src/lynq_fota.c
index 1ac1b68..9b12656 100755
--- a/mbtk/liblynq_lib/src/lynq_fota.c
+++ b/mbtk/liblynq_lib/src/lynq_fota.c
@@ -1,6 +1,7 @@
 #include "lynq-qser-fota.h"
 #include "mbtk_type.h"
 #include "mbtk_fota.h"
+#include "mbtk_log.h"
 
 
 char addr_buf[128]={0};
@@ -12,7 +13,7 @@
 
 int fota_cb(int status, int percent)
 {
-//    printf("%d: percent: %d%%\n", percent/10, percent);
+    LOGE("%d: percent: %d%%\n", percent/10, percent);
     Process_flag = percent/10;
     return 0;
 }
@@ -25,12 +26,12 @@
 int lynq_rock_main(int first_run)
 {
     UNUSED(first_run);
-    printf("%s, %d", __FUNCTION__, __LINE__);
+    LOGE("%s, %d", __FUNCTION__, __LINE__);
     int ret = 0;
 
-    printf("addr_buf:%s, segment_size:%d\n", addr_buf, segment_size);
+    LOGE("addr_buf:%s, segment_size:%d\n", addr_buf, segment_size);
     ret = mbtk_fota_init(fota_cb);
-    if(!strcmp(addr_buf, "http"))
+    if(strncmp(addr_buf, "http", 4) == 0)
     {
     
         ret = mbtk_fota_fw_write_by_url(addr_buf, segment_size,10, 600);
@@ -42,7 +43,7 @@
 
     if(ret)
     {
-        printf("lynq_rock_main fail\n");
+        LOGE("lynq_rock_main fail\n");
         return -1;
     }
 
@@ -56,7 +57,7 @@
 {
     UNUSED(value);
     UNUSED(size);
-    printf("111%s, %d", __FUNCTION__, __LINE__);
+    LOGE("%s, %d", __FUNCTION__, __LINE__);
 
     if(value == NULL)
     {
@@ -67,19 +68,20 @@
     memcpy(addr_buf, value, strlen(value));
     segment_size = size;
 
-    printf("addr_buf:%s, value:%s\n", addr_buf, value);
-    printf("segment_size:%d, size:%d\n", segment_size, size);
+    LOGE("addr_buf:%s, value:%s\n", addr_buf, value);
+    LOGE("segment_size:%d, size:%d\n", segment_size, size);
 
     return 0;
 }
 
 int lynq_fota_nrestart(void)
 {
-    printf("%s, %d", __FUNCTION__, __LINE__);
+    LOGE("%s, %d", __FUNCTION__, __LINE__);
     int ret = 0;
 
+    LOGE("addr_buf:%s", addr_buf);
     ret = mbtk_fota_init(fota_cb);
-    if(!strcmp(addr_buf, "http"))
+    if(strncmp(addr_buf, "http", 4) == 0)
     {
         ret = mbtk_fota_fw_write_by_url(addr_buf, segment_size,10, 600);
     }
@@ -90,7 +92,7 @@
 
     if(ret)
     {
-        printf("lynq_fota_nrestart fail\n");
+        LOGE("lynq_fota_nrestart fail\n");
         return -1;
     }
 
@@ -99,7 +101,7 @@
 
 int lynq_get_upgrade_status(void)
 {
-    printf("%s, %d", __FUNCTION__, __LINE__);
+    LOGE("%s, %d", __FUNCTION__, __LINE__);
 
     return mbtk_fota_status();
 }
