diff --git a/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c b/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c
index 9cd770d..f42ba33 100755
--- a/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c
+++ b/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c
@@ -1,5 +1,9 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <fcntl.h>
+#include <linux/i2c-dev.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
 #include "lynq_codec.h"
 #include <syslog.h>
 #include <log/log.h>
@@ -293,7 +297,7 @@
 
 void set_codec(media_src_t src, codec_op open_close)
 {
-    RLOGD("set_zk_3104_codec src=[%d] op=[%d]", src, open);
+    RLOGD("set_zk_3104_codec src=[%d] op=[%d]", src, open_close);
     set_zk_3104_codec(open_close);
 }
 
@@ -368,14 +372,14 @@
 
 int customer_get_pa_volume(int* volume)
 {
-    int file;
+int file;
     char *filename = "/dev/i2c-0";
     int addr = 0x6c;
     char buf[2];
 
-    if (volume < 1 || volume > 4)
+    if(volume == NULL)
     {
-        RLOGE("Invalid volume specified\n");
+        RLOGE("lynq_get_pa_volume Invalid pointer to volume\n");
         return -1;
     }
 
@@ -392,44 +396,35 @@
         return -1;
     }
 
-    switch (volume) {
-        case 1:
-            buf[0] = 0x03;
-            buf[1] = 0x00;  //Gain set to 20 dB
-            break;
-        case 2:
-            buf[0] = 0x03;
-            buf[1] = 0x78;  //Gain set to 26 dB
-            break;
-        case 3:
-            buf[0] = 0x03;
-            buf[1] = 0x80;  //Gain set to 32 dB
-            break;
-        case 4:
-            buf[0] = 0x03;
-            buf[1] = 0xc0;  //Gain set to 36 dB
-            break;
-    }
+    buf[0] = 0x03;
 
-    if (write(file, buf, 2) != 2)
+    if (write(file, buf, 1) != 1)
     {
         RLOGE("Failed to write to the i2c bus\n");
         close(file);
         return -1;
     }
 
-    RLOGE("Set the 0x%02x register value to 0x%02x\n", buf[0], buf[1]);
+    if (read(file, buf, 1) != 1)
+    {
+        RLOGE("Failed to read from the i2c bus\n");
+        close(file);
+        return -1;
+    }
 
     close(file);
 
+    *volume = (buf[0] >> 6) + 1;
+
     return 0;
+
 }
 
 #elif defined(GSW_CODEC_CFG)
 
 void set_codec(media_src_t src, codec_op open_close)
 {
-    RLOGD("set_gsw_3104_codec src=[%d] op=[%d]", src, open);
+    RLOGD("set_gsw_3104_codec src=[%d] op=[%d]", src, open_close);
     set_gsw_3104_codec(open_close);
 }
 
diff --git a/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h b/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
index 362baaf..fac71b0 100755
--- a/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
+++ b/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
@@ -7,7 +7,7 @@
 
 #include "gpshal.h"
 #include "hal2mnl_interface.h"
-
+#define DEV "/dev/ttyGS3"
 typedef enum{
     LYNQ_MODE_GPS_GLONASS = 0,
     LYNQ_MODE_GPS_BEIDOU,
diff --git a/IC_src/mtk/lib/liblynq-gnss/makefile b/IC_src/mtk/lib/liblynq-gnss/makefile
index f1ca7fc..fcf6780 100755
--- a/IC_src/mtk/lib/liblynq-gnss/makefile
+++ b/IC_src/mtk/lib/liblynq-gnss/makefile
@@ -32,8 +32,19 @@
 	-lcutils \
 	-lgnsshal \
 	-lpthread \
+	-llynq-uci \
 #    -llynq-log \
 
+
+
+ifeq ($(strip $(MOBILETEK_GNSS_ELT_OUTPUT_CFG)), yes)
+    LOCAL_CFLAGS += -DGNSS_ELT_OUTPUT_CFG
+endif
+
+ifeq ($(strip $(MOBILETEK_GNSS_SYNC_TIME_CFG)), yes)
+    LOCAL_CFLAGS += -DGNSS_SYNC_TIME_CFG
+endif
+
 $(warning libs=$(LOCAL_LIBS))
 
 CXXSRC=\
diff --git a/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c b/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
index b8a402f..59a866a 100755
--- a/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
+++ b/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
@@ -3,11 +3,26 @@
 #include<unistd.h>
 #include<errno.h>
 #include<string.h>
+#include <sys/time.h>
+#include <time.h>
+#include <log/log.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <time.h>
 
 #include"lynq_gnsshal.h"
 #include"mtk_lbs_utility.h"
 #include"lynq_gnss.h"
 
+#define NMEA_ACC "ACCURACY"
+#define NMEA_GSA "GSA"
+#define NMEA_RMC "RMC"
+#define NMEA_GGA "GGA"
+#define NMEA_VTG "VTG"
+#define NMEA_GSV "GSV"
+
+time_t reopen_start;
 extern lynq_gnss_cb* lynq_callbacks;
 extern lynq_raw_gnss_cbs *lynq_meas_callbacks;
 
@@ -40,9 +55,89 @@
 {
 
 }
+#ifdef GNSS_SYNC_TIME_CFG
+extern int g_gnss_sync_enable_flag;
+extern int g_gnss_sync_done;
+#endif
+#ifdef GNSS_ELT_OUTPUT_CFG
+extern int g_ttyGS_fd;
+extern bool Open_ELT;
+#endif
+
+static inline int update_systime_time(GpsUtcTime gpstime)
+{
+    struct timeval tv;
+    int ret = gettimeofday(&tv, NULL);
+    if (ret == -1) {
+        perror("gettimeofday");
+        return -1;
+    }
+    if (tv.tv_sec == gpstime / 1000)
+    {
+        return 0;
+    }
+    printf("Now: %ld.%06ld\n", tv.tv_sec, tv.tv_usec);
+    tv.tv_sec = gpstime / 1000;
+    tv.tv_usec = (gpstime % 1000) * 1000;
+    ret = settimeofday(&tv, NULL);
+    if (ret == -1) {
+        perror("settimeofday");
+        return -1;
+    }
+
+    return 0;
+}
 
 void lynq_gps_nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)
 {
+#ifdef GNSS_ELT_OUTPUT_CFG
+    int ret;
+    time_t reopen_end;
+#endif
+#ifdef GNSS_SYNC_TIME_CFG
+    if (g_gnss_sync_enable_flag == 1 && g_gnss_sync_done == 0)
+    {
+        if( strncmp(nmea+3,NMEA_RMC,strlen(NMEA_RMC)) == 0 && nmea[18] == 'A')
+        {
+            if (update_systime_time(timestamp) == 0)
+            {
+                g_gnss_sync_done = 1;
+            }
+        }
+    }
+#endif
+#ifdef GNSS_ELT_OUTPUT_CFG
+    if(Open_ELT)
+    {
+        if(g_ttyGS_fd >= 0)
+        {
+            ret = write(g_ttyGS_fd,nmea,length);
+            if(ret<0)
+            {
+                close(g_ttyGS_fd);
+                g_ttyGS_fd = -1;
+                reopen_start = time(NULL);
+            }
+        }
+
+        else
+        {
+            reopen_end = time(NULL);
+            if(difftime(reopen_end,reopen_start) > 3)
+            {
+                g_ttyGS_fd= open(DEV, O_RDWR | O_NOCTTY | O_NDELAY);
+                if(g_ttyGS_fd < 0)
+                {
+                    reopen_start = time(NULL);
+                }
+                else
+                {
+                    RLOGD("Open dev success\n");
+                }
+            }
+        }
+    }
+#endif
     lynq_callbacks->lynq_nmea_cb(timestamp,nmea,length);
 
 }
@@ -153,13 +248,6 @@
 
 }
 
-#define NMEA_ACC "ACCURACY"
-#define NMEA_GSA "GSA"
-#define NMEA_RMC "RMC"
-#define NMEA_GGA "GGA"
-#define NMEA_VTG "VTG"
-#define NMEA_GSV "GSV"
-
 void lynq_at_gps_nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)
 {
     if (at_gpsnmea_status == 1)
diff --git a/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c b/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
index a812738..6c8ba42 100755
--- a/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
+++ b/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
@@ -16,6 +16,9 @@
 #include <pthread.h>
 #include <log/log.h>
 #include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/stat.h>
 
 #include "lynq_gnss.h"
 #include "gpshal.h"
@@ -24,6 +27,7 @@
 #include "mtk_lbs_utility.h"
 #include "lynq_prop.h"
 #include "mnldinf_utility.h"
+#include "include/lynq_uci.h"
 
 #define LOG_TAG "LYNQ_GNSS"
 
@@ -43,13 +47,22 @@
 static int g_lynq_gnss_init_flag = 0;
 
 static int g_lynq_gnss_calback_flag = 0;
-
+#ifdef GNSS_SYNC_TIME_CFG
+int g_gnss_sync_enable_flag = 0;
+int g_gnss_sync_done = 0;
+#endif
 /**
  * @brief mark gnss raw meas state
  * 0: deinit state
  * 1: init state
  */
 static int g_lynq_gnss_raw_meas_flag = 0;
+int at_gps_status = 0;
+int at_gpsnmea_status = 0;
+#ifdef GNSS_ELT_OUTPUT_CFG
+int g_ttyGS_fd= -1;
+bool Open_ELT = true;
+#endif
 
 int lynq_gnss_init(void)
 {
@@ -67,6 +80,16 @@
     gpshal_set_gps_state_intent(GPSHAL_STATE_INIT);
     gpshal2mnl_gps_init();
     g_gpshal_ctx.mnl_retry_timer = mnldinf_init_timer(gpshal_mnl_retry_routine);
+#ifdef GNSS_ELT_OUTPUT_CFG
+    if(Open_ELT)
+    {
+        g_ttyGS_fd= open(DEV, O_RDWR | O_NOCTTY | O_NDELAY);
+        if(g_ttyGS_fd < 0)
+        {
+            RLOGD("Open dev fail");
+        }
+    }
+#endif
     return 0;
 }
 
@@ -132,6 +155,13 @@
     RLOGD("timer de init end");
     g_lynq_gnss_calback_flag = 0;
     g_lynq_gnss_init_flag = 0;
+#ifdef GNSS_ELT_OUTPUT_CFG
+    if(g_ttyGS_fd >= 0)
+    {
+        close(g_ttyGS_fd);
+        g_ttyGS_fd = -1;
+    }
+#endif
     return 0;
 }
 
@@ -142,6 +172,12 @@
         RLOGD("start is not allowed");
         return -1;
     }
+#ifdef GNSS_SYNC_TIME_CFG
+    char gnss_sync_enable[24] = "";
+    lynq_get_value("lynq_uci", "lynq_sync_time", "lynq_gnss_sync_time_enable" , gnss_sync_enable);
+    g_gnss_sync_enable_flag = atoi(gnss_sync_enable);
+    g_gnss_sync_done = 0;
+#endif
     //memset(&lynq_debug_data, 0, sizeof(DebugData));
     gpshal_set_gps_state_intent(GPSHAL_STATE_START);
     gpshal2mnl_gps_start();
@@ -353,8 +389,6 @@
 int lynq_at_cgps(int at_type,char *at_paramter);
 int lynq_at_cgpsnmea(int at_type,char *at_paramter);
 
-int at_gps_status = 0;
-int at_gpsnmea_status = 0;
 
 int strUpper(char * str)
 {
@@ -527,6 +561,9 @@
         }
         if (at_gps_status == 0)
         {
+#ifdef GNSS_ELT_OUTPUT_CFG
+            Open_ELT = true;
+#endif
             ret = lynq_gnss_stop();
             if (ret != 0)
             {
@@ -545,6 +582,9 @@
         }
         else if(at_gps_status == 1)
         {
+#ifdef GNSS_ELT_OUTPUT_CFG
+            Open_ELT = false;
+#endif
             lynq_at_callbacks = lynq_at_get__gnss_callbacks();
             ret = lynq_gnss_callback_reg(lynq_at_callbacks);
             if (ret != 0)
