diff --git a/src/lynq/lib/liblynq-misc/LICENSE b/src/lynq/lib/liblynq-misc/LICENSE
new file mode 100755
index 0000000..605b7ea
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/LICENSE
@@ -0,0 +1,31 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MobileTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MobileTek Inc. and/or its licensors. Without
+the prior written permission of MobileTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MobileTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+MobileTek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MobileTek SOFTWARE")
+RECEIVED FROM MobileTek AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MobileTek EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MobileTek PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MobileTek SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MobileTek
+SOFTWARE. MobileTek SHALL ALSO NOT BE RESPONSIBLE FOR ANY MobileTek SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MobileTek'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MobileTek SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MobileTek'S OPTION, TO REVISE OR REPLACE THE
+MobileTek SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MobileTek FOR SUCH MobileTek SOFTWARE AT ISSUE.
diff --git a/src/lynq/lib/liblynq-misc/include/lynq_misc.h b/src/lynq/lib/liblynq-misc/include/lynq_misc.h
new file mode 100755
index 0000000..4207191
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/include/lynq_misc.h
@@ -0,0 +1,28 @@
+/**
+ * @file misc.h
+ * @author you.chen
+ * @brief 
+ * @version 1.0
+ * @date 2023-08-21
+ * 
+ * @copyright Copyright (c) 2023
+ * 
+ */
+#ifndef __LYNQ_MISC_H__
+#define __LYNQ_MISC_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief lynq_get_security_boot_flag get the flag in efuse
+ * @param enable_flag (output param, 1 for enabled)
+ * @return 0 success, -1 some error occur
+ */
+int lynq_get_security_boot_flag(int * enabled_flag);
+
+#ifdef __cplusplus
+}
+#endif 
+#endif //#ifndef __LYNQ_MISC_H__
diff --git a/src/lynq/lib/liblynq-misc/lynq_misc.cpp b/src/lynq/lib/liblynq-misc/lynq_misc.cpp
new file mode 100755
index 0000000..1bada46
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/lynq_misc.cpp
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include "lynq_misc.h"
+#include "log/log.h"
+
+#undef LOG_TAG
+#define LOG_TAG "MISC"
+
+int lynq_get_security_boot_flag(int * enabled_flag)
+{
+    int value, ret;
+    if (enabled_flag == NULL)
+    {
+        RLOGE("input param is null ptr");
+        return -1;
+    }
+    *enabled_flag = 0;
+    FILE *pfile=fopen("/proc/device-tree/chosen/atag,devinfo", "r");
+    if (pfile == NULL)
+    {
+        RLOGE("open devinfo fail");
+        return -1;
+    }
+    ret = fseek(pfile, 0x428, 0);
+    if (ret != 0)
+    {
+        RLOGE("seek file fail");
+        fclose(pfile);
+        return -1;
+    }
+    ret = fread(&value, sizeof (value), 1, pfile);
+    if (ret != 1)
+    {
+        RLOGE("read file fail");
+        fclose(pfile);
+        return -1;
+    }
+    fclose(pfile);
+
+    // the third bit of 32bits at 0x428 (big endian?), 1 for enabled, 0 not enabled
+    *enabled_flag = (value & 0x20) == 0 ? 0 : 1;
+    return 0;
+}
diff --git a/src/lynq/lib/liblynq-misc/makefile b/src/lynq/lib/liblynq-misc/makefile
new file mode 100755
index 0000000..b7d636b
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/makefile
@@ -0,0 +1,58 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -g -Os \
+                -flto \
+                -fPIC       
+
+PWD := $(shell pwd)
+
+$(warning ################# lynq msic ROOT: $(ROOT),includedir:$(includedir), PWD :$(PWD))
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/include \
+  -I$(ROOT)$(includedir) \
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -llog \
+
+SOURCES = $(wildcard *.cpp)
+
+EXECUTABLE = liblynq-msic.so
+
+OBJECTS=$(SOURCES:.c=.o)
+all: $(EXECUTABLE)
+
+$(EXECUTABLE): $(OBJECTS)
+	$(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+	$(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+build:  $(EXECUTABLE)
+	$(warning ########## build $(EXECUTABLE)  ##########)
+
+install:
+	$(warning ################# lynq msic EXECUTABLE: $(EXECUTABLE),base:$(base_libdir))
+	mkdir -p $(ROOT)$(base_libdir)/
+	install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+
+pack_rootfs:
+	$(warning ################# lynq msic PACK: $(PACK_INITRAMFS_TO),base:$(base_libdir))
+	mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+	mkdir -p $(PACK_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+
+.PHONY: clean
+clean:
+	$(RM) $(OBJECTS) $(EXECUTABLE)
+
+
