diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
index e61bfe6..de0a5fa 100755
--- a/mbtk/mbtk_gnssd/gnss_hd8122.c
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -573,6 +573,23 @@
     return GNSS_ERR_OK;
 }
 
+static gnss_err_enum gnss_8122_ephsave(int fd, uint8 status)
+{
+    uint8 buff[GNSS_PACK_BUFF_SIZE];
+    LOGD("EPHSAVE");
+    int len = pack_create(HD8122_ID_TYPE_CFG, HD8122_ID_CFG_EPHSAVE, 1, (uint8*)(&status), buff, sizeof(buff));
+    if(len <= 0)
+    {
+        LOGE("pack_create() fail.");
+        return GNSS_ERR_ARG;
+    }
+    log_hex("PACK", buff, len);
+    gnss_write(fd, buff, len);
+    msg_insert(HD8122_ID_TYPE_CFG, HD8122_ID_CFG_EPHSAVE);
+    return GNSS_ERR_OK;
+}
+
+
 int gnss_8122_dev_open()
 {
     //return mbtk_gpio_value_set(GNSS_POWER_GPIO, MBTK_GPIO_DIRECT_OUT, 1);
@@ -601,6 +618,14 @@
     return gnss_port_close(fd);
 }
 
+int gnss_8122_init_set(int fd)
+{
+    sleep(1); //wait 8122 ready...
+    gnss_8122_ephsave(fd, (uint8)HD8122_EPHSAVE_STATUS_DISABLE);
+    gnss_8122_cfg_save(fd);
+    return GNSS_ERR_OK;
+}
+
 int gnss_8122_fw_dl(int fd, const char *fw_name, const char *dev)
 {
     int uart_fd = OpenUart(dev);//PORT_NAME234
