diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
index cff302b..2be6cff 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -432,6 +432,9 @@
 #OEMAPP_CFG value:"PLATFORM","GSW"
 MOBILETEK_OEMAPP_CFG = "PLATFORM"
 
+#cz.li@20240221 add for choosing GNSS's chip: "HD","HX"
+MOBILETEK_GNSS_TYPE = "HD"
+
 LYNQ_CONFIG_COMMITID = "e2a3410390ff0ad762462ccb6af8faa5e16dcd61"
 LYNQ_CONFIG_VERSION = "T106_ap_version_cap_0425"
 LYNQ_CONFIG_SW_VERSION = "T106_ap_version_MR3.02b06.00"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-gnss/liblynq-qser-gnss.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-gnss/liblynq-qser-gnss.bb
index 8dcdfb7..e55271a 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-gnss/liblynq-qser-gnss.bb
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-gnss/liblynq-qser-gnss.bb
@@ -17,12 +17,12 @@
 BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"
 BB_LDFLAGS_ADD = "--sysroot=${STAGING_DIR_HOST} -Wl,--hash-style=gnu"
 
+EXTRA_OEMAKE += "'MOBILETEK_GNSS_TYPE = ${MOBILETEK_GNSS_TYPE}'"
+
+EXTRA_OEMAKE += "'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
 FILES_${PN} += "${bindir} /data/gnss_update"
-
-EXTRA_OEMAKE = "'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
-
 FILES_${PN} += "${base_libdir}/*.so "
-
 FILES_${PN}-dev = "/test \
                    ${includedir}"
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
index bb24b17..5ae667a 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
@@ -278,7 +278,6 @@
 static int firmware_extren_state = 0;
 
 static char g_no_sv = 0;// 参与定位的卫星数量
-extern int gpio21_value;
 int mopen_gnss_get_nmea_config(uint32 h_gnss);
 int mopen_gnss_get_ant_state_info(uint32 h_gnss);
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile
index 8ab6383..174c713 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/makefile
@@ -11,6 +11,13 @@
 ifeq ($(strip $(TARGET_PLATFORM)), T106)
 LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 -DHAVE_ENDIAN_H -DHAVE_PTHREADS -DHAVE_SYS_UIO_H -DHAVE_POSIX_FILEMAP -DHAVE_STRLCPY -DHAVE_PRCTL -DHAVE_MEMSET16 -DHAVE_MEMSET32 -DANDROID_SMP=0
 endif
+
+ifeq ($(strip $(MOBILETEK_GNSS_TYPE)), HD)
+    LOCAL_CFLAGS += -DHD_GNSS
+else ifeq ($(strip $(MOBILETEK_GNSS_TYPE)), HX)
+    LOCAL_CFLAGS += -DHX_GNSS
+endif
+
 $(warning lynq qser gnss demo ROOT = $(ROOT), includedir = $(includedir))
 LOCAL_PATH   = .
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
index c879eb5..f769e44 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
@@ -53,8 +53,7 @@
     {
         ALOGE("Init faild\n");
     }
-    if(gpio21_value == 1)
-    {
+#ifdef HD_GNSS
         login_information_t = (login_information*)malloc(sizeof(struct login_information));
         if(NULL == login_information_t)
         {
@@ -69,7 +68,7 @@
         login_information_t->host = NULL;
         login_information_t->id = NULL;
         login_information_t->password = NULL;
-    }
+#endif
     inited = 1;
     return 0;
 }
@@ -210,23 +209,19 @@
     g_gnss_sync_done = 0;
 
     lynq_open_gps(1);
-    ALOGE("GNSS_VALUE: %d\n",gpio21_value);
-    if(gpio21_value == 1)
-    {
+#if defined(HD_GNSS)
         ret = set_baudrate(gnss_handle->dev_fd, B115200);
         if(-1 == ret)
         {
             return -2;
         }
-    }
-    else if(gpio21_value == 0)
-    {
+#elif defined(HX_GNSS)
         ret = set_baudrate(gnss_handle->dev_fd, B9600);
         if(-1 == ret)
         {
             return -2;
         }
-    }
+#endif
     return 0;
 }
 
@@ -433,22 +428,19 @@
         ALOGE("has not been initiated\n");
         return -1;
     }
-    if(gpio21_value == 0)
-    {
-        ret = mopen_gnss_download_tle();
-        if(ret < 0)
-        {
-            return -1;
-        }
-    }
-    else if(gpio21_value == 1)
-    {
+#if defined(HD_GNSS)
         ret = hd_gnss_download_tle(login_information_t->host, login_information_t->id, login_information_t->password);
         if(ret < 0)
         {
             return -1;
         }
-    }
+#elif defined(HX_GNSS)
+        ret = mopen_gnss_download_tle();
+        if(ret < 0)
+        {
+            return -1;
+        }
+#endif
     return 0;
 }
 
@@ -470,22 +462,20 @@
         ALOGE("has not been initiated\n");
         return -1;
     }
-    if(gpio21_value == 0)
-    {
-        ret = mopen_gnss_injects_aidpos(h_gnss);
-        if(ret < 0)
-        {
-            return -1;
-        }
-    }
-    else if(gpio21_value == 1)
-    {
+#if defined(HD_GNSS)
         ret = hd_gnss_injects_aidpos(h_gnss);
         if(ret < 0)
         {
             return -1;
         }
-    }
+#elif defined(HX_GNSS)
+        ret = mopen_gnss_injects_aidpos(h_gnss);
+        if(ret < 0)
+        {
+            return -1;
+        }
+#endif
+
     return 0;
 }
 
@@ -680,22 +670,19 @@
                 return -1;
             }
             lynq_open_gps(1);
-            if(gpio21_value == 1)
-            {
+        #if defined(HD_GNSS)
                 ret = set_baudrate(tty_fd, B115200);
                 if(-1 == ret)
                 {
                 return  -2;
                 }
-            }
-            else if(gpio21_value == 0)
-            {
+        #elif defined(HX_GNSS)
                 ret = set_baudrate(tty_fd, B9600);
                 if(-1 == ret)
                 {
                     return  -2;
                 }
-            }
+        #endif
         }
         else
         {
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
index 90a5521..fd0b9be 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
@@ -514,8 +514,11 @@
     //set system time.
     if (g_gnss_sync_enable_flag == 1 && g_gnss_sync_done == 0)
     {
-        
-        location = (gpio21_value == 0?17:18);
+    #if defined(HD_GNSS)
+        location = 18;
+    #elif defined(HX_GNSS)
+        location = 17;
+    #endif
         if(strncmp(data+3,NMEA_RMC,strlen(NMEA_RMC)) == 0 && data[location] == 'A')
         {
             if (update_system_time(nmea_info.timestamp) == 0)
@@ -922,18 +925,9 @@
     return -1;
 }
 
-int gpio21_value = -1;
 int lynq_open_gps(int state)
 {
     int ret;
-    /*when in Eur,GPIO21 value is 1; in CN,GPIO21 value is 0. so use it to determined CN or Eur*/
-    test_gpio_handle[21] = sc_gpio_init(21,0,0,0);
-    ret = sc_gpio_value_get(test_gpio_handle[21],&gpio21_value);
-    if(ret)
-    {
-        ALOGE("gpio21 value get error\n");
-    }
-
     /*in Eur,need set GPIO15 and 84 value; in CN,need set GPIO86 value*/
     if(0 == state)
     {
@@ -947,8 +941,7 @@
             usleep(10000);
         }
 
-        if(gpio21_value == 1)
-        {
+    #if defined(HD_GNSS)
             test_gpio_handle[15] = sc_gpio_init(15,1,0,0);
             test_gpio_handle[84] = sc_gpio_init(84,1,0,0);
             ret = sc_gpio_value_set(test_gpio_handle[15],0);
@@ -962,25 +955,21 @@
             {
                 ALOGE("gpio84 set value 0 error\n");
             }
-        }
-
-        else if(gpio21_value == 0)
-        {
+    #elif defined(HX_GNSS)
             test_gpio_handle[86] = sc_gpio_init(86,1,0,0);
             ret = sc_gpio_value_set(test_gpio_handle[86],0);
             if(ret)
             {
                 ALOGE("gpio86 set value 0 error\n");
             }
-        }
+    #endif
 
     }
 
     else if(1 == state)
     {
         nmea_state = 1;
-        if(gpio21_value == 1)
-        {
+    #if defined(HD_GNSS)
             test_gpio_handle[15] = sc_gpio_init(15,1,0,0);
             test_gpio_handle[84] = sc_gpio_init(84,1,0,0);
             ret = sc_gpio_value_set(test_gpio_handle[15],1);
@@ -994,32 +983,25 @@
             {
                 ALOGE("gpio84 set value 1 error\n");
             }
-        }
-        else if(gpio21_value == 0)
-        {
+    #elif defined(HX_GNSS)
             test_gpio_handle[86] = sc_gpio_init(86,1,0,0);
             ret = sc_gpio_value_set(test_gpio_handle[86],1);
             if(ret)
             {
                 ALOGE("gpio86 set value 1 error\n");
             }
-        }
+    #endif
     }
 
-    sc_gpio_uninit(test_gpio_handle[21]);
-    test_gpio_handle[21] = NULL;
-    if(gpio21_value == 1)
-    {
+    #if defined(HD_GNSS)
         sc_gpio_uninit(test_gpio_handle[15]);
         sc_gpio_uninit(test_gpio_handle[84]);
         test_gpio_handle[15] = NULL;
         test_gpio_handle[84] = NULL;
-    }
-    else if(gpio21_value == 0)
-    {
+    #elif defined(HX_GNSS)
         sc_gpio_uninit(test_gpio_handle[86]);
         test_gpio_handle[86] = NULL;
-    }
+    #endif
     return 0;
 }
 
