diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
new file mode 100755
index 0000000..dc36267
--- /dev/null
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -0,0 +1,69 @@
+/*
+*    gnss_hd8122.c
+*
+*    HD8122 GNSS source.
+*
+*/
+/******************************************************************************
+
+                          EDIT HISTORY FOR FILE
+
+  WHEN        WHO       WHAT,WHERE,WHY
+--------    --------    -------------------------------------------------------
+2024/6/14     LiuBin      Initial version
+
+******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+#include "mbtk_gpio.h"
+#include "gnss_utils.h"
+#include "gnss_hd8122.h"
+
+#define UART_BITRATE_NMEA_DEF_FW    115200   // Default bitrate.
+#define GNSS_POWER_GPIO 43
+
+static pthread_cond_t read_cond;
+static pthread_mutex_t read_mutex;
+
+
+int gnss_8122_dev_open()
+{
+    return mbtk_gpio_value_set(GNSS_POWER_GPIO, MBTK_GPIO_DIRECT_OUT, 1);
+}
+
+int gnss_8122_dev_close()
+{
+    return mbtk_gpio_value_set(GNSS_POWER_GPIO, MBTK_GPIO_DIRECT_OUT, 0);
+}
+
+int gnss_8122_open(const char *dev)
+{
+    pthread_mutex_init(&read_mutex, NULL);
+    pthread_cond_init(&read_cond, NULL);
+    return gnss_port_open(dev, O_RDWR | O_NONBLOCK | O_NOCTTY, UART_BITRATE_NMEA_DEF_FW, TRUE);
+}
+
+int gnss_8122_close(int fd)
+{
+    pthread_mutex_destroy(&read_mutex);
+    pthread_cond_destroy(&read_cond);
+    return gnss_port_close(fd);
+}
+
+int gnss_8122_fw_dl()
+{
+    return 0;
+}
+
+
+gnss_err_enum gnss_8122_set(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len)
+{
+    return GNSS_ERR_OK;
+}
+
