diff --git a/src/lynq/lib/liblynq-fota/include/iot_rock.h b/src/lynq/lib/liblynq-fota/include/iot_rock.h
index d6f0a2c..fbeba75 100755
--- a/src/lynq/lib/liblynq-fota/include/iot_rock.h
+++ b/src/lynq/lib/liblynq-fota/include/iot_rock.h
@@ -128,6 +128,7 @@
 ssize_t lynq_nand_read(int fd, void *buf, size_t count);
 ssize_t lynq_nand_write(int fd, void *buf, size_t count);
 int lynq_nand_close(int fd);
+int lynq_get_upgrade_status(void);
 #endif
 
 
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
index 90992a3..41e0a14 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -2093,16 +2093,19 @@
 
 int lynq_nand_open(const char *pathname, int flags)
 {
+    printf("pathname:%s---flags:%d",pathname,flags);
     return mtk_device_wrap_open(pathname,flags);
 }
 
 ssize_t lynq_nand_read(int fd, void *buf, size_t count)
 {
+    printf("rfd:%d---buf:%s---count:%d",fd,buf,count);
     return mtk_device_wrap_read(fd,buf,count);
 }
 
 ssize_t lynq_nand_write(int fd, void *buf, size_t count)
 {
+    printf("wfd:%d---buf:%s---count:%d",fd,buf,count);
     return mtk_device_wrap_write(fd,buf,count);
 }
 
@@ -2110,3 +2113,32 @@
 {
     return mtk_device_wrap_close(fd);
 }
+
+/**
+ * @brief Obtain the upgrade result
+ * 
+ * @param void
+ * @return 0xff:open file fail,0:upgrade success,1,upgrade wait 
+ */
+ int lynq_get_upgrade_status(void)
+{
+    int lynq_state_fd;
+    int lynq_upgrade_wait = 1;
+    OTA_STATUS lynq_ota_status;
+
+    memset(&lynq_ota_status, 0, sizeof(lynq_ota_status));
+
+    lynq_state_fd = open(FILE_FOTA_STATE,O_RDWR | O_CREAT,0777);
+
+    if (lynq_state_fd < 0) 
+    {
+        return 0xff;
+    }
+    read(lynq_state_fd,(unsigned char *)&lynq_ota_status,sizeof(lynq_ota_status));
+    close(lynq_state_fd);
+    if((lynq_ota_status.ota_run != 0) && (lynq_ota_status.update_result == 0))
+    {
+        return lynq_upgrade_wait;
+    }
+    return lynq_ota_status.update_result;
+}
\ No newline at end of file
diff --git a/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c
index 4af951d..6a76781 100755
--- a/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c
+++ b/src/lynq/packages/thirdpart/Konoda/lynq-konoda-rock/src/main.c
@@ -19,8 +19,8 @@
 
 int main(int argc,char argv[])
 {
-
-
+    
+    int lynq_upgrade_state = 0;
     int first_run = 1; 
     int ret = 0;
     int fd_down,size,fd_target;
@@ -48,19 +48,22 @@
    lynq_ftp_download(&ftp_log_info);
    LYVERBLOG("[+UP]: Download the FTP data success\n");
 */
-LYVERBLOG("[+UP]: input MD5 data:");	
-	while(fgets(input_md5_data,64,stdin) != NULL)
-	{
-		LYVERBLOG("[+UP]: receive MD5 data:%s\n",input_md5_data);
-		ret = lynq_md5_file_verfy(UPDATA_ADDR, input_md5_data);
-		break;
-	}
+    lynq_upgrade_state = lynq_get_upgrade_status();
+    LYVERBLOG("[+UP]:Upgrade state:%d",lynq_upgrade_state);
 
-   fd_down = open(UPDATA_ADDR,O_RDONLY);
-	if (fd_down < 0) {
-		LYVERBLOG("[+UP]: open source  error\n");
-	    return 1;
-	}
+    LYVERBLOG("[+UP]: input MD5 data:");	
+    while(fgets(input_md5_data,64,stdin) != NULL)
+    {
+        LYVERBLOG("[+UP]: receive MD5 data:%s\n",input_md5_data);
+        ret = lynq_md5_file_verfy(UPDATA_ADDR, input_md5_data);
+        break;
+    }
+
+    fd_down = open(UPDATA_ADDR,O_RDONLY);
+    if (fd_down < 0) {
+    	LYVERBLOG("[+UP]: open source  error\n");
+        return 1;
+    }
 
     fd_target = lynq_nand_open(FLASH_DEV_DELTA,O_RDWR);
  
@@ -80,12 +83,12 @@
 	lynq_nand_close(fd_target);
 	close(fd_down);
 
-LYVERBLOG("+[UA]: Upgrade to start ret:%d\n",ret);
+    LYVERBLOG("+[UA]: Upgrade to start ret:%d\n",ret);
 //	if(ret == 0)
 	{
 		lynq_rock_main(first_run);
 	}
-LYVERBLOG("+[UA]: Upgrade to end\n");
+    LYVERBLOG("+[UA]: Upgrade to end\n");
   
   return 0;
 
