diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
index ea1ced8..34cda32 100755
--- a/mbtk/mbtk_gnssd/gnss_hd8122.c
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -41,6 +41,7 @@
 #define READ_LEN_MAX 1024 //BOOT_UPGRADE_BUFF_MAX_1
 #define GNSS_FW_GQALS_PATH "/lib/firmware/gp_gl_ga_fw.bin"
 #define GNSS_FW_GAQBS_PATH "/lib/firmware/gp_bd_ga_fw.bin"
+#define GNSS_FW_8040_PATH "/lib/firmware/gnss8040_fw.bin"
 
 //#define AGNSS_TEST_URL               "http://aclientt.allystar.com:80/ephemeris/HD_GPS_BDS.hdb"
 #define AGNSS_URL                    "http://uagnss.allystar.com:80/ephemeris/%s?compid=yikecs1&token=Z38w5urAuawubTxi"
@@ -620,6 +621,10 @@
     {
         memcpy(fw_path, GNSS_FW_GAQBS_PATH, strlen(GNSS_FW_GAQBS_PATH));
     }
+    else if(memcmp(fw_name, "gnss8040", 8) == 0)
+    {
+        memcpy(fw_path, GNSS_FW_8040_PATH, strlen(GNSS_FW_8040_PATH));
+    }
     else if(fw_name != NULL)
     {
         memcpy(fw_path, fw_name, strlen(fw_name));
@@ -666,6 +671,10 @@
         mbtk_system("echo 0 > /sys/class/gpio/gpio62/value");
         usleep(100000);//100ms
         mbtk_system("echo 1 > /sys/class/gpio/gpio63/value");//boot
+        usleep(100000);//100ms
+        mbtk_system("echo 0 > /sys/class/gpio/gpio63/value");
+        usleep(100000);//100ms
+        mbtk_system("echo in > /sys/class/gpio/gpio63/direction");
         mbtk_system("echo 62 > /sys/class/gpio/unexport");
         mbtk_system("echo 63 > /sys/class/gpio/unexport");
 
@@ -697,14 +706,69 @@
         uart_close(uart_fd);
         return GNSS_ERR_OK;
     }
-    // branch2: else
+    // branch2: gns_8040
+    else if (memcmp(fw_name, "gnss8040", 8) == 0)
+    {
+        if(gnss_8122_dev_open())
+        {
+            LOGE("open gnss device fail:%d", errno);
+            goto error;
+        }
+    
+        mbtk_system("echo 63 > /sys/class/gpio/export");
+        mbtk_system("echo 62 > /sys/class/gpio/export");
+        mbtk_system("echo out > /sys/class/gpio/gpio63/direction");
+        mbtk_system("echo out > /sys/class/gpio/gpio62/direction");
+        mbtk_system("echo 0 > /sys/class/gpio/gpio63/value");
+        usleep(100000);//100ms
+        mbtk_system("echo 1 > /sys/class/gpio/gpio62/value");//reset
+        usleep(1000000);//1s
+        mbtk_system("echo 0 > /sys/class/gpio/gpio62/value");
+        usleep(100000);//100ms
+        mbtk_system("echo 1 > /sys/class/gpio/gpio63/value");//boot
+        usleep(100000);//100ms
+        mbtk_system("echo 0 > /sys/class/gpio/gpio63/value");
+        usleep(100000);//100ms
+        mbtk_system("echo in > /sys/class/gpio/gpio63/direction");
+        mbtk_system("echo 62 > /sys/class/gpio/unexport");
+        mbtk_system("echo 63 > /sys/class/gpio/unexport");
+    
+        ret = fw_update_boot(uart_fd, g_bin_buff, len);
+        if (ret < 0)
+        {
+            LOGE("fw_update_boot() fail : %d", ret);
+            goto error;
+        }
+        if(gnss_8122_dev_close(0))
+        {
+            LOGE("close gnss device fail:%d", errno);
+            goto error;
+        }
+    
+        if(ret == HDBD_UPG_SUCESS)
+        {
+            LOGD("upgrade sucess!");
+        }
+        else
+        {
+            LOGD("upgrade FAIL, fail style:%d", ret);
+            goto error;
+        }
+    
+        free(g_bin_buff);
+        uart_close(uart_fd);
+        return GNSS_ERR_OK;
+    }
+    // branch3: else
     else {
-        mbtk_system("echo 0 > /sys/class/gpio/gpio41/value");//41 gnss_power_en
+        mbtk_system("echo 1 > /sys/class/gpio/gpio47/value");//47 reset
         usleep(500000);//500ms
-
+        
         mbtk_system("echo 1 > /sys/class/gpio/gpio120/value");//120 boot
         usleep(500000);//500ms
-        mbtk_system("echo 1 > /sys/class/gpio/gpio41/value");//41 gnss_power_en
+        mbtk_system("echo 0 > /sys/class/gpio/gpio47/value");//47 reset
+        usleep(500000);//500ms
+        mbtk_system("echo 0 > /sys/class/gpio/gpio120/value");
         usleep(500000);//500ms
 
 
