[Feature][T106_INTEST2WIFI]19.06_diff_19.09

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: Ib941cb9b9df99849ca9cc3758fb729011ae84ddd
diff --git a/esdk/layers/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/esdk/layers/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
new file mode 100755
index 0000000..ea544cc
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -0,0 +1,479 @@
+require conf/distro/include/cpe-base.inc
+
+DISTRO          = "vehicle_dc_ref"
+DISTRO_NAME     = "zxic Distro vehicle_dc_ref"
+DISTRO_VERSION  = "1.0"
+SDK_VENDOR      = "-zxic"
+MAINTAINER      = "Sanechips Co.,Ltd."
+TARGET_VENDOR   = "-zxic"
+
+## OPTEE
+DISTRO_FEATURES += "OPTEE"
+meta_optee += " ${@bb.utils.contains("DISTRO_FEATURES", "OPTEE", " optee-client optee-example  ", "", d)} "
+
+PREFERRED_PROVIDER_virtual/kernel  = "linux-zxic"
+PREFERRED_VERSION_linux-zxic      = "5.10.156"
+PREFERRED_VERSION_busybox      = "1.33.1"
+#PREFERRED_VERSION_openssl      = "1.1.1l"
+
+TCLIBC = "glibc"
+VIRTUAL-RUNTIME_dev_manager   = "busybox-mdev"
+VIRTUAL-RUNTIME_login_manager = "busybox"
+VIRTUAL-RUNTIME_init_manager  = "busybox"
+VIRTUAL-RUNTIME_initscripts   = "initscripts"
+
+# #
+# # Use systemd for system initialization
+# #
+# VIRTUAL-RUNTIME_init_manager        = "systemd"
+# PREFERRED_PROVIDER_udev             = "systemd"
+# PREFERRED_PROVIDER_udev-utils       = "systemd"
+# DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
+# VIRTUAL-RUNTIME_initscripts         = ""
+# DEFAULT_DISTRO_FEATURES           += "systemd"
+# DISTRO_FEATURES_append              = " systemd"
+# DISTRO_FEATURES_remove              = "sysvinit"
+
+KERNEL_DEVICETREE = " \
+	zx297520v3-vehicle_dc_ref.dtb     \
+"
+# selinux 配置
+DISTRO_FEATURES_append=" selinux "
+
+# 默认是强制模式 enforcing ,调试建议采用宽容模式 permissive
+DEFAULT_ENFORCING = "permissive"
+
+# selinux 策略
+PREFERRED_PROVIDER_virtual/refpolicy ?= "refpolicy-mls"
+
+## adb login
+DISTRO_FEATURES += "adb_login"
+
+# storage type: nand or emmc
+STRORAGE_TYPE = "nand"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+STRORAGE_CONF = "nand-config-default"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+require conf/distro/include/${STRORAGE_CONF}.inc
+
+#rootfs文件系统类型
+IMAGE_FSTYPES  = "squashfs"
+#IMAGE_FSTYPES  = "cpio.gz"
+
+
+#rootfs文件系统squashfs参数配置,压缩方式和块大小可以更改
+#squashfs_xz squashfs_zstd
+DISTRO_FEATURES_append = " squashfs_zstd "
+ROOTFS_SQUASHFS_ARGS = "-nopad -noappend -root-owned -b 256k -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1' -processors 1"
+ROOTFS_SQUASHFS_ARGS += " ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "-xattrs", "", d)} "
+ROOTFS_SQUASHFS_ARGS += "${@bb.utils.contains("DISTRO_FEATURES", "squashfs_zstd", " -comp zstd ","", d)}"
+ROOTFS_SQUASHFS_ARGS += "${@bb.utils.contains("DISTRO_FEATURES", "squashfs_xz", " -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 ","", d)}"
+
+#userdata文件系统类型
+USERDATA_FSTYPE       = "ubi"
+USERDATA_UBINIZE_CFG  = "userdata-ubi-default.cfg"
+OEMDATA_UBINIZE_CFG   = "oemdata-ubi-default.cfg"
+
+#userdata ext4 文件系统大小
+USERDATA_EXT4SIZE = "194018"
+
+#
+# system initialization
+#
+DISTRO_FEATURES_append = " sysvinit "
+
+
+#是否支持MMI LCD功能
+#DISTRO_FEATURES += "MMI_LCD"
+#语音控制
+DISTRO_FEATURES += "voice_alsa"
+DISTRO_FEATURES += "use_voice_buffer"
+#DISTRO_FEATURES += "voice_at"
+
+#cap_oem.img
+DISTRO_FEATURES += " oemfs "
+
+#dm-verity for squashfs
+DISTRO_FEATURES += " dm-verity "
+
+
+#CUSTOM_MACRO在各个产品不变的宏放到cpe-base.inc文件,变化的宏放在产品发布文件。
+CUSTOM_MACRO  += " -D_GNU_SOURCE "
+
+#产品linux kernel配置,主要区分cpe、v2x、mdl,fpga文件在./meta-zxic/recipes-kernel/linux/files目录下
+#BOOT_CTL:版本的启动方式,normal/recovery,如:linux-5_4-fpga-normal.defconfig
+LINUX_BASE_CONFIG = "linux-5_10-${DISTRO}-${BOOT_CTL}-defconfig"
+
+#型号机linux kernel配置,主要区分mdlxx、mdlyy等型号机,文件在./meta-zxic-custom/recipes-kernel/linux/files目录下
+#BOOT_CTL:版本的启动方式,normal/recovery,如:linux-5_4-mdl-normal.cfg
+LINUX_CONFIG = "linux-5_10-${DISTRO}-${BOOT_CTL}.cfg"
+
+#busybox 配置 文件在./meta-zxic/recipes-core/busybox/files目录下
+BUSYBOX_CONFIG = "${DISTRO}-${BOOT_CTL}-busybox.cfg"
+
+##############################################################################
+# custom macro for lib and app
+CUSTOM_MACRO  		+= " -DAPP_OS_LINUX=1 "
+CUSTOM_MACRO	 	+= " -DAPP_OS_TYPE=APP_OS_LINUX "
+
+ENABLE_TESTBENCH_TTY  =  "no"
+##testbench macro for mode,notty=0 single=1 uchm=2
+CUSTOM_MACRO += " -DTTY_MODE_NO=0 "
+CUSTOM_MACRO += " -DTTY_MODE_SINGLE=1 "
+CUSTOM_MACRO += " -DTTY_MODE_MUX=2 "
+CUSTOM_MACRO += " -DUSE_UBIFS "
+CUSTOM_MACRO += " -DUSE_CAP_SUPPORT "
+CUSTOM_MACRO += " -DFOTA_AB "
+CUSTOM_MACRO += "${@bb.utils.contains('ENABLE_TESTBENCH_TTY', 'yes', '-DTESTBENCH_TTY_MODE=TTY_MODE_SINGLE', '-DTESTBENCH_TTY_MODE=TTY_MODE_NO', d)}"
+CONFIG_MMI_LCD = "${@bb.utils.contains("DISTRO_FEATURES", "MMI_LCD", "yes","no", d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_MMI_LCD', 'yes', '', '-DDISABLE_LCD', d)}"
+USE_ZXIC_WEBUI = "no"
+CONFIG_USE_WEBUI_SSL="yes"
+CONFIG_USE_WEBUI_SECURITY="yes"
+#security compile options
+CFLAGS_append  = " -Wl,-z,noexecstack"
+SECURITY_PIE_CFLAGS = " -pie -fPIE"
+SECURITY_STACK_PROTECTOR = " -fstack-protector-all"
+#CUSTOM_MACRO += " -D_USE_CODEC_TI3100 "
+#CUSTOM_MACRO += " -D_USE_CODEC_NAU8810 "
+#CUSTOM_MACRO += " -D_USE_CODEC_TI3104 "
+#CUSTOM_MACRO += " -D_USE_CODEC_MAX9867 "
+CUSTOM_MACRO += " -D_USE_CODEC_ES8311 "
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'voice_alsa', '-D_USE_VOICE_ALSA', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'use_voice_buffer', '-D_USE_VOICE_BUFFER', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'voice_at', '-D_USE_VOICE_AT', '', d)}"
+#CONFIG_VB_TRANSMIT_INTF = "RTP"
+#CONFIG_VB_TRANSMIT_INTF = "USB"
+CONFIG_VB_TRANSMIT_INTF = "NULL"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'RTP', '-D_VB_TRANSMIT_INTF_RTP', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'USB', '-D_VB_TRANSMIT_INTF_USB', '', d)}"
+#wifi 配置
+#"mt7916" "" "" ""
+CONFIG_WIFI_MODULE = "mt7916"
+#"apsta" "sta" "ap"
+CONFIG_WIFI_FUNCTION = "ap"
+#wificfg       = "${@bb.utils.contains('CONFIG_WIFI_FUNCTION', 'ap', bb.utils.contains('CONFIG_WIFI_MODULE', 'esp8089', 'lib32-hostapd-2.6', '', d), '', d)}"
+
+#BL接口支持("BL"),RIL接口支持("RIL")
+CONFIG_TEL_API_SUPPORT = "RIL"
+
+CUSTOM_MACRO  		+= "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'BL', '-D_USE_BL', '', d)}"
+
+#RIL AT通道支持RPMSG模式
+CUSTOM_MACRO  		+= "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', '-DZXIC_ATCHN_RPMSG_MODE', '', d)}"
+CUSTOM_MACRO  		+= "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', '-DUSE_CUSTOM_YK', '', d)}"
+
+DISTRO_FEATURES += " vehicle_dc_ref "
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'vehicle_dc_ref', '-D_USE_VEHICLE_DC_REF', '', d)}"
+
+#多媒体编解码库支持类型"FFMPEG","NONE"
+CONFIG_MSMSVR_CODEC_TYPE = "NONE"
+CUSTOM_MACRO  		+= "${@bb.utils.contains('CONFIG_MSMSVR_CODEC_TYPE', 'FFMPEG', '-D_USE_FFMPEG', '', d)}"
+
+#是否使用新的信号强度命令
+CONFIG_USE_NEW_SIGNAL_STRENGTH = "yes"
+
+# app and libs 配置
+#normal的版本应用及库
+zxic_lib += "\
+	libnvram \
+	libatchn \
+	libsofttimer \
+	libzxic-pbm \
+	libsoftap \
+	libatutils \
+	libsqlite \
+	libscipc \
+	libsctel \
+	libbsp \
+	libtinyalsa\
+	libvoice \
+	libmedia \
+	libdebug-info \	
+	libmtd \
+	libsclog \
+	libupi-ab \
+	libbinder \
+	libflags \
+	libmsmsvr \
+	libscrtc \
+        liblynq-uci \
+        liblynq-shm \
+        liblynq-log \
+        libapn \
+        libpal \
+        libvendor-ril \
+        liblynq-call \
+        liblynq-sim \
+        liblynq-network \
+        liblynq-sms \
+        liblynq-data \
+        liblynq-qser-voice \
+        liblynq-qser-sim \
+        liblynq-qser-sms \
+        liblynq-qser-thermal \
+        liblynq-qser-data \
+        liblynq-qser-network \
+        liblynq-qser-gnss \
+        liblynq-qser-fota \
+        liblynq-qser-audio \
+        liblynq-qser-usb \
+        liblynq-qser-wifi \
+        libpoweralarm \
+        liblynq-systime \
+        liblynq-autosuspend \
+        liblynq-qser-autosuspend \
+        liblynq-at-factory \
+        liblynq-gpio \
+        liblynq-irq \
+        liblynq-at-common \
+        liblynq-led \
+        liblynq-adc \
+        liblynq-monitor \
+	"
+
+zxic_lib += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', 'libril', 'libtelsvr', d)}"
+zxic_lib += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'RTP', 'librtp', '', d)}"
+#zxic自研应用	
+zxic_app_open += "\
+	nvserver cfg-tool adb ab-bootinfo \
+	at-ctl \
+	atchn-test \
+	zxic-mainctrl \
+	zxic-mmi \
+	zxic-script \
+	zxic-hotplug \
+	zxic-ramdump \
+	sntp \
+	zxic-ipv6-slaac \
+	zxic-ipv6-addr-conver \
+	zxic-ndp \
+	rtc-service \
+	dhcp6 \
+	fscheck \
+	nv-rpc-daemon \
+	zlog-agent \
+	cc-demo \
+	sim-demo \
+	sms-demo \
+	socket-demo \
+	i2ctest \
+	spitest \
+	uarttest \
+	bsp-test \
+	zxic-debug \
+	crc \
+	crc-api \
+	voiceipc-mainctrl \
+	voice-demo \
+	fsmonitor \
+	ethtest \
+	sc-at-test \
+	dialtest \
+	sc-nw-mgr-test \
+	sc-cfg-test \
+	sc-softtimer-test \
+	sc-log-test \
+	sc-shm-test \
+	sc-msg-test \
+	adctest \
+	rtc-timer-demo \
+	tsctest \
+	fota-upi-ab \
+	sc-net-test \	
+	usbtest \
+  	zxic-amt \
+	wlan-proxy \
+	wifi-demo \
+	mnet-whitelist \
+	mnet-whitelist-proxy \
+	flags-tool \
+	msm-svr \
+	phymiitest \
+	player-demo \
+	servicemanager \
+	service \
+	service-test \
+	i2cslavetest \
+	fota-auto-sync \
+	softap-demo \
+	lynq-ril-service \
+	lynq-sdk-ready \
+        lynq-led-demo \
+        lynq-led-sev \
+        uci \
+        gdb \
+        mobiletek-tester-rdit \
+        lynq-qser-voice-demo \
+        lynq-qser-fota-demo \
+        lynq-qser-gnss-demo \
+        lynq-qser-network-demo \
+        poweralarm-demo \
+        lynq-systime-demo \
+        lynq-fota-backup \
+        lynq-qser-sim-demo \
+        lynq-qser-sms-demo \
+        lynq-qser-data-demo \
+        lynq-qser-thermal-demo \
+        lynq-autosuspend \
+	lynq-atcid \
+        lynq-qser-autosuspend-demo \
+        lynq-gpio-demo \
+        lynq-irq-demo \
+        lynq-gnss-update \
+        lynq-audio-demo \
+        lynq-usb-demo \
+        lynq-wifi-demo \
+        lynq-adc-demo \
+        lynq-at-test \
+        lynq-monitor-demo \
+        lynq-vb-demo \
+        "
+
+zxic_app_open += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', 'rild', '', d)}"
+zxic_app_open += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'BL', 'tel-svr', '', d)}"
+zxic_app_open += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'NULL', 'vb-demo', '', d)}"
+
+#开源应用及库	
+meta_app_open += "\
+	dropbear \
+	dbus \
+	e2fsprogs \
+	iptables \
+	curl \
+	dnsmasq \	
+	dhcp6 \
+	radvd \
+	iproute2 \
+	busybox-syslog \
+	ethtool \
+	sqlcipher \
+	iperf3 \
+	tcpdump \
+	python3 \
+	openssl-bin \
+	mtd-utils-ubifs \
+	${@bb.utils.contains('DISTRO_FEATURES', 'dm-verity', 'cryptsetup', '', d)} \
+	${meta_optee} \
+	tzdata \
+	fdk-aac-master \
+	opencore-amr \
+	vo-amrwbenc \
+	ffmpeg \
+	python3 \
+	lrzsz \
+	"
+meta_app_open += "${@bb.utils.contains('CONFIG_MSMSVR_CODEC_TYPE', 'FFMPEG', 'fdk-aac-master opencore-amr vo-amrwbenc ffmpeg', '', d)}"
+
+#normal的版本应用及库
+zxic_app += "\
+	${zxic_lib}	\
+	${zxic_app_open} \
+	${meta_app_open} \
+	"
+
+#zxic自研recovery版本的应用
+zxic_app_open_recovery += "\
+	"
+#recovery版本的开源应用及库
+meta_app_open_recovery += "\
+	"
+#recovery的版本应用及库
+zxic_app_recovery += "\
+	${zxic_app_open_recovery} \
+	${meta_app_open_recovery} "
+
+IMAGE_INSTALL +="\
+	${@bb.utils.contains("BOOT_CTL", "recovery", "${zxic_app_recovery}", "${zxic_app}", d)} \ 
+	"
+
+PACKAGE_EXCLUDE = "eudev eudev-dev eudev-dbg"
+PACKAGE_EXCLUDE = "eudev"
+
+#DISTRO   = "lynq_vehicle_dc"
+#DISTRO_NAME   = "lynq distro vehicle_dc"
+RAT_CONFIG_C2K_SUPPORT = "no"
+MTK_MULTI_SIM_SUPPORT = "dsds" 
+TARGET_PLATFORM = "T106"
+MTK_LED_SUPPORT = "yes"
+#support lynq_atsvc [hong.liu add for lynq atsvc on 2022.12.1]
+LYNQ_ATSVC_SUPPORT = "yes"
+
+#GPIO_CFG value:"PLATFORM" , "GENVICT" ,"GSW"
+MOBILETEK_GPIO_CFG = "PLATFORM"
+
+#PLL_CFG value:"PLATFORM","GSW"
+MOBILETEK_PLL_CFG = "PLATFORM"
+
+#RTP_CFG value:"PLATFORM","GSW"
+MOBILETEK_RTP_CFG = "PLATFORM"
+
+#MEDIA_CFG value:"PLATFORM","GSW"
+MOBILETEK_MEDIA_CFG = "PLATFORM"
+
+#LOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_LOG_CFG = "PLATFORM"
+
+#FOTA_CFG value:"PLATFORM","GSW"
+MOBILETEK_FOTA_CFG = "PLATFORM"
+
+#RIL_CFG value:"PLATFORM","GSW"
+MOBILETEK_RIL_CFG = "PLATFORM"
+
+#UART_CFG value:"PLATFORM","GSW"
+MOBILETEK_UART_CFG = "PLATFORM"
+
+#USB_CFG value:"PLATFORM","GSW"
+MOBILETEK_USB_CFG = "PLATFORM"
+
+#ndis_CFG value:"PLATFORM","GSW"
+MOBILETEK_NDIS_CFG = "PLATFORM"
+
+#SUSPEND_CFG value:"PLATFORM","GSW"
+MOBILETEK_SUSPEND_CFG = "PLATFORM"
+
+#MNLDLOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_MNLDLOG_CFG = "PLATFORM"
+
+#OPTEE_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPTEE_CFG = "PLATFORM"
+
+#EMMC_CFG value:"PLATFORM","GSW"
+MOBILETEK_EMMC_CFG = "PLATFORM"
+
+#WIFIKERNELCODE_CFG value:"PLATFORM","GSW"
+MOBILETEK_WIFIKERNELCODE_CFG = "PLATFORM"
+
+#SYSTEMD_CFG value:"PLATFORM","GSW"
+MOBILETEK_SYSTEMD_CFG = "PLATFORM"
+
+#GSTREAMER_CFG value:"PLATFORM","GSW"
+MOBILETEK_GSTREAMER_CFG = "PLATFORM"
+
+#BUSYBOX_CFG value:"PLATFORM","GSW"
+MOBILETEK_BUSYBOX_CFG = "PLATFORM"
+
+#OPENSSH_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPENSSH_CFG = "PLATFORM"
+
+#OEMAPP_CFG value:"PLATFORM","GSW"
+MOBILETEK_OEMAPP_CFG = "PLATFORM"
+
+#cz.li@20240221 add for choosing GNSS's chip: "HD","HX"
+MOBILETEK_GNSS_TYPE = "HD"
+
+#MOBILETEK_ADB_LOGIN value:"YES","NO"
+MOBILETEK_ADB_LOGIN = "NO"
+
+#cz.li@20240221 add for MOBILETEK_GNSS_UPDATE_ENABLE value: "yes","no"
+MOBILETEK_GNSS_UPDATE_ENABLE = "yes"
+
+#xf.li@20240716 add for MOBILETEK_LOG_ENCRYPT value: "enable","disable"
+MOBILETEK_LOG_ENCRYPT = "disable"
+
+#xf.li@20250123 add for M22 SDK value (support M22 or not): "M22", "default"
+MOBILETEK_NAND_TYPE = "M22"
+
+LYNQ_CONFIG_COMMITID = "e2a3410390ff0ad762462ccb6af8faa5e16dcd61"
+LYNQ_CONFIG_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
+LYNQ_CONFIG_SW_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
diff --git a/esdk/layers/meta-zxic-custom/conf/lynq_base.conf b/esdk/layers/meta-zxic-custom/conf/lynq_base.conf
new file mode 100755
index 0000000..565e516
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/conf/lynq_base.conf
@@ -0,0 +1,72 @@
+#DISTRO   = "lynq_vehicle_dc"
+#DISTRO_NAME   = "lynq distro vehicle_dc"
+RAT_CONFIG_C2K_SUPPORT = "no"
+MTK_MULTI_SIM_SUPPORT = "dsds" 
+TARGET_PLATFORM = "T106"
+MTK_LED_SUPPORT = "yes"
+#support lynq_atsvc [hong.liu add for lynq atsvc on 2022.12.1]
+LYNQ_ATSVC_SUPPORT = "yes"
+
+#GPIO_CFG value:"PLATFORM" , "GENVICT" ,"GSW"
+MOBILETEK_GPIO_CFG = "PLATFORM"
+
+#PLL_CFG value:"PLATFORM","GSW"
+MOBILETEK_PLL_CFG = "PLATFORM"
+
+#RTP_CFG value:"PLATFORM","GSW"
+MOBILETEK_RTP_CFG = "PLATFORM"
+
+#MEDIA_CFG value:"PLATFORM","GSW"
+MOBILETEK_MEDIA_CFG = "PLATFORM"
+
+#LOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_LOG_CFG = "PLATFORM"
+
+#FOTA_CFG value:"PLATFORM","GSW"
+MOBILETEK_FOTA_CFG = "PLATFORM"
+
+#RIL_CFG value:"PLATFORM","GSW"
+MOBILETEK_RIL_CFG = "PLATFORM"
+
+#UART_CFG value:"PLATFORM","GSW"
+MOBILETEK_UART_CFG = "PLATFORM"
+
+#USB_CFG value:"PLATFORM","GSW"
+MOBILETEK_USB_CFG = "PLATFORM"
+
+#ndis_CFG value:"PLATFORM","GSW"
+MOBILETEK_NDIS_CFG = "PLATFORM"
+
+#SUSPEND_CFG value:"PLATFORM","GSW"
+MOBILETEK_SUSPEND_CFG = "PLATFORM"
+
+#MNLDLOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_MNLDLOG_CFG = "PLATFORM"
+
+#OPTEE_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPTEE_CFG = "PLATFORM"
+
+#EMMC_CFG value:"PLATFORM","GSW"
+MOBILETEK_EMMC_CFG = "PLATFORM"
+
+#WIFIKERNELCODE_CFG value:"PLATFORM","GSW"
+MOBILETEK_WIFIKERNELCODE_CFG = "PLATFORM"
+
+#SYSTEMD_CFG value:"PLATFORM","GSW"
+MOBILETEK_SYSTEMD_CFG = "PLATFORM"
+
+#GSTREAMER_CFG value:"PLATFORM","GSW"
+MOBILETEK_GSTREAMER_CFG = "PLATFORM"
+
+#BUSYBOX_CFG value:"PLATFORM","GSW"
+MOBILETEK_BUSYBOX_CFG = "PLATFORM"
+
+#OPENSSH_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPENSSH_CFG = "PLATFORM"
+
+#OEMAPP_CFG value:"PLATFORM","GSW"
+MOBILETEK_OEMAPP_CFG = "PLATFORM"
+
+LYNQ_CONFIG_COMMITID = "42c9f78988359c468696bde525b9ac0cff3b251f"
+LYNQ_CONFIG_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
+LYNQ_CONFIG_SW_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/first.sh b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/first.sh
new file mode 100755
index 0000000..b3dc7dd
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/first.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          mountvirtfs
+# Required-Start:
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Mount kernel virtual file systems.
+# Description:       Mount initial set of virtual filesystems the kernel
+#                    provides and that are required by everything.
+### END INIT INFO
+
+if [ -e /proc ] && ! [ -e /proc/mounts ]; then
+  mount -t proc proc /proc
+fi
+
+if [ -e /sys ] && grep -q sysfs /proc/filesystems && ! [ -e /sys/class ]; then
+  mount -t sysfs sysfs /sys
+fi
+
+if [ -e /sys/kernel/debug ] && grep -q debugfs /proc/filesystems; then
+  mount -t debugfs debugfs /sys/kernel/debug
+fi
+
+if [ -e /sys/kernel/config ] && grep -q configfs /proc/filesystems; then
+  mount -t configfs configfs /sys/kernel/config
+fi
+
+if [ -e /sys/firmware/efi/efivars ] && grep -q efivarfs /proc/filesystems; then
+  mount -t efivarfs efivarfs /sys/firmware/efi/efivars
+fi
+
+if ! [ -e /dev/zero ] && [ -e /dev ] && grep -q devtmpfs /proc/filesystems; then
+  mount -n -t devtmpfs devtmpfs /dev
+fi
+
+mkdir -p /tmp
+#l.yang modify for T106BUG-387 start 
+mount   -t  tmpfs   tmpfs    /tmp -o nodev,nosuid,noexec
+#l.yang modify for T106BUG-387 end
+mkdir -p /run
+#l.yang modify for T106BUG-387 start
+mount   -t  tmpfs   tmpfs    /run  -o nodev,nosuid,noexec
+#l.yang modify for T106BUG-387 end
+mkdir -p /dev/pts
+mount   -t  devpts  devpts   /dev/pts
+
+mkdir -p /tmp/run
+
+#软锁panic
+#echo 1 > /proc/sys/kernel/softlockup_panic
+#内存耗尽oom panic
+echo 1 > /proc/sys/vm/panic_on_oom
+#警告panic
+#echo 1 > /proc/sys/kernel/panic_on_warn
+#echo 0 > /proc/sys/kernel/hung_task_timeout_secs
+
+echo "mount configfs..."
+mount none /sys/kernel/config  -t configfs
+
+
+echo "ifconfig lo up"
+ifconfig lo 127.0.0.1 up
+
+echo 2 > /proc/sys/kernel/randomize_va_space
+echo 2 > /proc/sys/kernel/kptr_restrict
+
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/zxic-image.bb b/esdk/layers/meta-zxic-custom/recipes-core/images/zxic-image.bb
new file mode 100755
index 0000000..ef3cdd5
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-core/images/zxic-image.bb
@@ -0,0 +1,294 @@
+SUMMARY       = "zxic normal image"
+IMAGE_LINGUAS = " "
+LICENSE       = "zte"
+PV = "1.0.0"
+PR = "r0"
+
+inherit core-image extrausers   ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "selinux-image", "", d)} 
+
+OPENWRT_FULL ="\
+    packagegroup-openwrt-minimal \
+    packagegroup-openwrt-base \
+    packagegroup-openwrt-full \
+    ugps \
+    usbmode \
+    urngd \
+    mtd-utils-ubifs \
+    fwtool \
+    usign \
+    swconfig \
+    mtd-openwrt \
+    opkg \
+    cgi-io \
+    "
+OPENWRT_RECOVERY ="\
+    packagegroup-openwrt-minimal \
+    mtd-utils-ubifs \
+    mtd-openwrt \
+    "
+
+
+OPENWRT_PACKAGE = "${@bb.utils.contains("BOOT_CTL", "recovery", "${OPENWRT_RECOVERY}", "${OPENWRT_FULL}", d)}"
+IS_OPENWRT = "${@bb.utils.contains('DISTRO_FEATURES', 'OPENWRT', 'true', 'false', d)}"
+ROOT_FS_NAME = "${@bb.utils.contains("BOOT_CTL", "recovery", "ap_recoveryfs.bin", "ap_caprootfs.img", d)}"
+USEDATA_FS_NAME = "${@bb.utils.contains("BOOT_CTL", "recovery", "ap_userdata_recovery.bin", "ap_capuserdata.img", d)}"
+OEMDATA_FS_NAME = "${@bb.utils.contains("BOOT_CTL", "recovery", "ap_oemdata_recovery.bin", "cap_oemdata.img", d)}"
+
+CORE_IMAGE_BASE_INSTALL = '\
+    ${@bb.utils.contains("DISTRO_FEATURES", "OPENWRT", "${OPENWRT_PACKAGE}", "", d)} \ 
+    packagegroup-core-boot-zxic \
+    packagegroup-lynq-t106 \
+    ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "packagegroup-selinux-minimal", "", d)} \ 
+    ${MACHINE_EXTRA_RDEPENDS}   \
+    ${CORE_IMAGE_EXTRA_INSTALL} \
+    '
+
+# Include modules in rootfs
+IMAGE_INSTALL += "${CORE_IMAGE_BASE_INSTALL}"
+
+IMAGE_INSTALL += " \
+	kernel-modules \
+	${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'dpkg-start-stop', '', d)} \
+	"
+
+#pub include
+include ${BSPDIR}/sources/meta-zxic/conf/pub.inc
+
+DEPENDS  += "\
+    u-boot-tools-native rsync-native \
+    ${@bb.utils.contains("USERDATA_FSTYPE", "ubi", "mtd-utils-native", "", d)} \
+    ${@bb.utils.contains('IMAGE_FSTYPES', 'squashfs', 'squashfskit-native', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','cryptsetup-native','',d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','coreutils-native','',d)} \
+    " 
+
+# Add \ in front of $
+ROOT_PASSWD = "\$6\$GnJN6BAFj7TmbOS\$o4tptoaFJYZe79CWh2VzAgGhQGqfDHoraVUs0nr4TT2e9V2ubq.l.nLrF80ECrtfvPrJDL1J3fbR62nei9A3F1"
+#EXTRA_USERS_PARAMS += "usermod -p '${ROOT_PASSWD}' root;"
+EXTRA_USERS_PARAMS += "${@bb.utils.contains("DISTRO_FEATURES", "OPENWRT", "usermod -p '${ROOT_PASSWD}' root;", "", d)}"
+
+fakeroot distro_rootfs_files_systemd() {
+	rm -rf ${IMAGE_ROOTFS}/boot
+	cp -arfp ${FS-DIR}/fs/${BOOT_CTL}/rootfs/*   ${IMAGE_ROOTFS}/
+}
+
+fakeroot distro_rootfs_files_fpga() {
+	rm -rf ${IMAGE_ROOTFS}/boot
+	rm -rf ${IMAGE_ROOTFS}/linuxrc
+	rm -rf ${IMAGE_ROOTFS}/etc/systemd/system.conf
+	cp -arfp ${FS-DIR}/fs/${BOOT_CTL}/rootfs/*   ${IMAGE_ROOTFS}/
+	chmod 644 ${IMAGE_ROOTFS}/etc/passwd
+	chmod 644 ${IMAGE_ROOTFS}/etc/group
+	chmod 644 ${IMAGE_ROOTFS}/etc/inittab
+	chmod 400 ${IMAGE_ROOTFS}/etc/shadow
+	chmod a+x ${IMAGE_ROOTFS}/etc/init.d/rcS
+	chmod a+r ${IMAGE_ROOTFS}/etc/init.d/rcS
+}
+
+fakeroot distro_rootfs_files_sysvinit() {
+	rm -rf ${IMAGE_ROOTFS}/boot
+	cp -arfp ${FS-DIR}/fs/${BOOT_CTL}/rootfs/*   ${IMAGE_ROOTFS}/
+
+	rm -rf ${IMAGE_ROOTFS}/etc/rc[0-6].d
+	rm -f ${IMAGE_ROOTFS}/etc/fstab
+	rm -f ${IMAGE_ROOTFS}/etc/default/rcS
+	chmod 644 ${IMAGE_ROOTFS}/etc/passwd
+	chmod 644 ${IMAGE_ROOTFS}/etc/group
+	chmod 644 ${IMAGE_ROOTFS}/etc/inittab
+	chmod 400 ${IMAGE_ROOTFS}/etc/shadow
+	chmod a+x ${IMAGE_ROOTFS}/etc/init.d/rcS
+	find ${IMAGE_ROOTFS}/ -name '.gitkeep' -print0 | xargs -0 rm -fr
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "\
+    ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "distro_rootfs_files_sysvinit;", "", d)}   \
+    ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "distro_rootfs_files_systemd;", "", d)}   \
+    "
+
+fakeroot do_cprootfs() {
+	#rm -fv ${BINS-PATH}/${ROOT_FS_NAME}
+	mkdir -p ${BINS-PATH} ${ELFS-PATH}
+
+	if [ ${IMAGE_FSTYPES} = 'cpio.gz' ]; then
+		cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc | gzip -9 > ${IMAGE_ROOTFS}/ramdisk.image.gz
+		mv  ${IMAGE_ROOTFS}/ramdisk.image.gz  ${BINS-PATH}/${ROOT_FS_NAME}
+		if [ -d "${TMPDIR}/work/zx298501-zxic-linux-musl/linux-zxic/5.4.154-r0" ]; then      
+			cp -arfp ${THISDIR}/files/Makefile_dtb ${B}/Makefile
+			cp -arfp ${THISDIR}/files/fix_rootfs_dts.sh  ${B}/
+			${B}/fix_rootfs_dts.sh   ${MACHINE}-${DISTRO}  ${TMPDIR}/work-shared/zx298501/kernel-source  ${BINS-PATH}
+			oe_runmake -C ${B} S=${TMPDIR}/work/zx298501-zxic-linux-musl/linux-zxic/5.4.154-r0  BINS-PATH=${ELFS-PATH} DTB=${MACHINE}-${DISTRO}.dtb
+		fi
+	else
+		#cp -v ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${IMAGE_FSTYPES}  ${BINS-PATH}/${ROOT_FS_NAME}
+		cp -v ${IMGDEPLOYDIR}/rootfs.tgz ${ELFS-PATH}/${ROOT_FS_NAME}.tgz
+	fi
+}
+
+fakeroot do_cleanrootfs () {
+	rm -fv ${BINS-PATH}/${ROOT_FS_NAME}
+	rm -fv ${BINS-PATH}/${USEDATA_FS_NAME}
+	rm -fv ${BINS-PATH}/*.img*
+}
+
+do_product_ini() {
+	mkdir -p ${BINS-PATH}
+	echo "[imagefs]" > ${BINS-PATH}/product.ini
+	echo "mkfs_ubifs=${IMAGEFS_MKUBIFS_ARGS}" >>  ${BINS-PATH}/product.ini
+	echo "ubinize=${IMAGEFS_UBINIZE_ARGS}"    >>  ${BINS-PATH}/product.ini
+}
+
+do_all_flags_bin() {
+	${BSPDIR}/zxic_code/pub/tools/libflags/flags_tool -f ${BINS-PATH}/all_flags.bin ${FLAGS_ARGS}
+}
+
+fakeroot do_mkubifs(){
+	if [ ${BOOT_CTL} = 'normal' ]; then
+		cp -arfp ${THISDIR}/files/ubinize-cfg.sh ${B}
+		cp -arfp ${BSPDIR}/sources/meta-zxic-custom/conf/distro/include/${USERDATA_UBINIZE_CFG} ${B}
+		mkdir -p ${BINS-PATH}
+		${B}/ubinize-cfg.sh "${BINS-PATH}/${USEDATA_FS_NAME}"  "${B}/${USERDATA_UBINIZE_CFG}"  "${USERDATA_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+		${B}/ubinize-cfg.sh "${BINS-PATH}/ap_capuserdata_M22.img"  "${B}/${USERDATA_UBINIZE_CFG}"  "${LYNQ_M22_USERDATA_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+		mkdir -p ${IMAGE_ROOTFS}/etc_ro/
+		cp -v "${BINS-PATH}/${USEDATA_FS_NAME}" ${IMAGE_ROOTFS}/etc_ro/
+	fi
+}
+
+
+fakeroot do_rootfs_squashfs(){
+	cp -arfp ${THISDIR}/files/ubinize-static.sh ${B}
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		cp -arfp ${THISDIR}/files/squashfs_dm-verity.sh ${B}
+		cp -arfp ${THISDIR}/files/zxic_generate_squashfs_verity ${B}
+	fi
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		touch  ${IMAGE_ROOTFS}/etc_ro/dm-verity
+	else
+		rm -fv ${IMAGE_ROOTFS}/etc_ro/dm-verity
+	fi
+
+	rm -fv ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp
+	mksquashfs4 ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp ${ROOTFS_SQUASHFS_ARGS}
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		cp ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp  ${S}/${ROOT_FS_NAME}.unsigned
+		echo "veritysetup and ubinize in do_dm_verity() later ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}"
+	else
+		echo "rootfs squashfs need ubinize-image on nand flash"
+		${B}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs.img" ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp "${UBINIZE_ARGS}"
+	fi
+	cd ${IMAGE_ROOTFS}/../ && tar -czvf ${IMGDEPLOYDIR}/rootfs.tgz  rootfs
+}
+
+fakeroot do_oemfs_squashfs(){
+	cp -arfp ${THISDIR}/files/ubinize-static.sh ${B}
+	cp  -arfp  ${FS-DIR}/fs/normal/oem/   ${S}/
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		cp -arfp ${THISDIR}/files/squashfs_dm-verity.sh ${B}
+		cp -arfp ${THISDIR}/files/zxic_generate_squashfs_verity ${B}
+	fi
+
+	rm -fv ${IMGDEPLOYDIR}/oem.squashfs_tmp
+	mksquashfs4 ${S}/oem ${IMGDEPLOYDIR}/oem.squashfs_tmp ${ROOTFS_SQUASHFS_ARGS}
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		cp ${IMGDEPLOYDIR}/oem.squashfs_tmp  ${S}/cap_oem.img.unsigned
+		echo "veritysetup and ubinize in do_dm_verity() later"
+	else
+		echo "oem squashfs need ubinize-image on nand flash"
+		${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem.img" ${IMGDEPLOYDIR}/oem.squashfs_tmp "${UBINIZE_ARGS}"
+		mkdir -p ${ELFS-PATH}
+		rm -rf ${IMGDEPLOYDIR}/oem.squashfs_tmp
+	fi
+	mkdir -p ${ELFS-PATH}
+	cd ${S}/oem/../ && tar -czvf ${ELFS-PATH}/oem.tgz  oem
+
+}
+
+fakeroot do_oemfs_oemdata(){
+	if [ ${BOOT_CTL} = 'normal' ]; then
+		cp -arfp ${THISDIR}/files/ubinize-cfg.sh ${B}
+		cp -arfp ${BSPDIR}/sources/meta-zxic-custom/conf/distro/include/${OEMDATA_UBINIZE_CFG} ${B}
+		mkdir -p ${BINS-PATH}
+		${B}/ubinize-cfg.sh "${BINS-PATH}/${OEMDATA_FS_NAME}"  "${B}/${OEMDATA_UBINIZE_CFG}"  "${USERDATA_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+		${B}/ubinize-cfg.sh "${BINS-PATH}/cap_oemdata_M22.img"  "${B}/${OEMDATA_UBINIZE_CFG}"  "${LYNQ_M22_USERDATA_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+		mkdir -p ${IMAGE_ROOTFS}/etc_ro/
+		cp -v "${BINS-PATH}/${OEMDATA_FS_NAME}" ${IMAGE_ROOTFS}/etc_ro/
+	fi
+}
+
+ROOTFS_POSTPROCESS_COMMAND_remove += 'empty_var_volatile;'
+
+fakeroot do_postinstall(){
+	if [ -f ${IMAGE_ROOTFS}/postinstall.sh ]; then
+		cd ${IMAGE_ROOTFS} && sh postinstall.sh && rm -v ${IMAGE_ROOTFS}/postinstall.sh
+	fi
+}
+
+fakeroot do_ln_musl_ld(){
+	if [ ! -L ${IMAGE_ROOTFS}/lib/ld-linux-aarch64.so.1 ]; then
+		if [ -L ${IMAGE_ROOTFS}/lib/ld-musl-aarch64.so.1 ]; then
+			cd ${IMAGE_ROOTFS}/lib && ln -snf ld-musl-aarch64.so.1  ld-linux-aarch64.so.1
+		fi
+	fi
+}
+
+do_dm_verity(){
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		rm -fv ${BINS-PATH}/ap_caprootfs.dm
+		${S}/squashfs_dm-verity.sh  ${S}/${ROOT_FS_NAME}.unsigned  ${S} \
+			${BINS-PATH}/ap_caprootfs.img.dm ${SIGNIMAGE_PRIVATE_KEY} ${BSPDIR}/tools/SignTool/SignImage
+		${S}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs.img" ${BINS-PATH}/ap_caprootfs.img.dm "${UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+		${S}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs_M22.img" ${BINS-PATH}/ap_caprootfs.img.dm "${LYNQ_M22_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+		if ${@bb.utils.contains('DISTRO_FEATURES','oemfs','true','false',d)}; then
+			rm -fv ${BINS-PATH}/cap_oem.img.dm
+			${B}/squashfs_dm-verity.sh  ${S}/cap_oem.img.unsigned  ${B} \
+				${BINS-PATH}/cap_oem.img.dm ${SIGNIMAGE_PRIVATE_KEY} ${BSPDIR}/tools/SignTool/SignImage
+			${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem.img" ${BINS-PATH}/cap_oem.img.dm "${UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+			${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem_M22.img" ${BINS-PATH}/cap_oem.img.dm "${LYNQ_M22_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+		fi
+	fi
+}
+
+IMAGE_POSTPROCESS_COMMAND_prepend = ' \
+    do_postinstall; \
+    ${@bb.utils.contains("TCLIBC", "musl", "do_ln_musl_ld;", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "selinux_set_labels ;", "", d)} \
+   '
+
+IMAGE_POSTPROCESS_COMMAND += "\
+    ${@bb.utils.contains("USERDATA_FSTYPE", "ubi", "do_mkubifs;", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "oemfs", "do_oemfs_squashfs;", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "oemfs", "do_oemfs_oemdata;", "", d)} \
+    ${@bb.utils.contains("IMAGE_FSTYPES", "squashfs", "do_rootfs_squashfs;", "", d)} \
+    "
+#xf.li@20240716 add start
+do_oem_config() {
+	LYNQ_INSIDE_VERSION_UCI="        option LYNQ_SW_INSIDE_VERSION '${LYNQ_CONFIG_VERSION}'"
+	eval sed -i 's/^.*LYNQ_SW_INSIDE_VERSION.*$/"${LYNQ_INSIDE_VERSION_UCI}"/' ${IMAGE_ROOTFS}/etc/config/lynq_uci_ro
+	if [ "${MOBILETEK_LOG_ENCRYPT}" = "enable" ]; then
+		touch ${IMAGE_ROOTFS}/etc/syslog_encrypt_flag
+	else
+		rm -rf ${IMAGE_ROOTFS}/etc/syslog_encrypt_flag
+		touch ${IMAGE_ROOTFS}/etc/no_log_encrypt
+	fi
+}
+addtask  do_oem_config after do_rootfs before do_image
+#xf.li@20240716 add end
+addtask  cprootfs after do_dm_verity before do_build
+addtask  do_dm_verity after do_image_complete  before do_build
+addtask  cleanrootfs after do_clean  before do_cleansstate
+
diff --git a/esdk/layers/meta-zxic-custom/recipes-kernel/linux/linux-zxic_5.10.bbappend b/esdk/layers/meta-zxic-custom/recipes-kernel/linux/linux-zxic_5.10.bbappend
new file mode 100755
index 0000000..3d328f4
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-kernel/linux/linux-zxic_5.10.bbappend
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:${THISDIR}/files:"
+
+SRC_URI_append = "\
+    file://${LINUX_CONFIG} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'OPTEE', 'file://optee.cfg', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'dm-verity', 'file://dm-verity.cfg', '', d)} \
+"
\ No newline at end of file
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/liblynq-autosuspend/liblynq-autosuspend.bb b/esdk/layers/meta-zxic-custom/recipes-lynq/liblynq-autosuspend/liblynq-autosuspend.bb
new file mode 100755
index 0000000..fc81884
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-lynq/liblynq-autosuspend/liblynq-autosuspend.bb
@@ -0,0 +1,53 @@
+#inherit externalsrc package
+
+DESCRIPTION = "liblynq-autosuspend"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"
+DEPENDS += "libbsp liblynq-log"
+#inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-autosuspend"
+FILESEXTRAPATHS_prepend :="${TOPDIR}/../src/lynq/lib/:"
+SRC_URI = " \
+          file://liblynq-autosuspend \
+          "
+
+SRC-DIR = "${S}/../liblynq-autosuspend"
+TARGET_CC_ARCH += "${LDFLAGS}"
+BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"
+BB_LDFLAGS_ADD = "--sysroot=${STAGING_DIR_HOST} -Wl,--hash-style=gnu"
+#Parameters passed to do_compile()
+EXTRA_OEMAKE = "'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+FILES_${PN} = "${base_libdir}/*.so \
+               ${base_bindir}\
+               ${base_sbindir} \
+               /etc/dbus-1/system.d/"
+FILES_${PN}-dev = "/test \
+                   ${includedir}"
+FILES_${PN}-doc = "/doc"
+FILES_${PN}-dbg ="${base_bindir}/.debug \
+                  ${base_libdir}/.debug \
+                  ${base_sbindir}/.debug"
+INSANE_SKIP_${PN} += "already-stripped"
+INSANE_SKIP_${PN} += "installed-vs-shipped"
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+	if [ "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" ]; then
+		oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu"
+	elif [ "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4" ]; then
+		oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu"
+	elif [ "${PACKAGE_ARCH}" = "cortexa53hf-neon-fp-armv8" ]; then
+		oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu -mhard-float -mfpu=neon-fp-armv8 -mfloat-abi=hard -mcpu=cortex-a53 -mtune=cortex-a53"
+	else
+		oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -Wl,--hash-style=gnu -DTELEPHONYWARE"
+	fi
+}
+
+do_install() {
+    oe_runmake install -C ${SRC-DIR} ROOT=${D}
+    if [ -d "${WORKONSRC}" ] ; then
+        install -d ${D}${includedir}
+        cp -af ${SRC-DIR}/include/libauto/ ${D}${includedir}/libauto
+    fi
+}
+
diff --git a/esdk/layers/poky/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb b/esdk/layers/poky/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
new file mode 100755
index 0000000..65b3cd7
--- /dev/null
+++ b/esdk/layers/poky/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
@@ -0,0 +1,117 @@
+SUMMARY = "Base system master password/group files"
+DESCRIPTION = "The master copies of the user database files (/etc/passwd and /etc/group).  The update-passwd tool is also provided to keep the system databases synchronized with these master files."
+HOMEPAGE = "https://launchpad.net/base-passwd"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+RECIPE_NO_UPDATE_REASON = "Version 3.5.38 requires cdebconf for update-passwd utility"
+
+SRC_URI = "https://launchpad.net/debian/+archive/primary/+files/${BPN}_${PV}.tar.gz \
+           file://add_shutdown.patch \
+           file://nobash.patch \
+           file://noshadow.patch \
+           file://input.patch \
+           file://disable-docs.patch \
+           file://kvm.patch \
+           "
+
+SRC_URI[md5sum] = "6beccac48083fe8ae5048acd062e5421"
+SRC_URI[sha256sum] = "f0b66388b2c8e49c15692439d2bee63bcdd4bbbf7a782c7f64accc55986b6a36"
+
+# the package is taken from launchpad; that source is static and goes stale
+# so we check the latest upstream from a directory that does get updated
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/b/base-passwd/"
+
+inherit autotools
+
+do_install () {
+	install -d -m 755 ${D}${sbindir}
+	install -o root -g root -p -m 755 ${B}/update-passwd ${D}${sbindir}/
+	install -d -m 755 ${D}${mandir}/man8 ${D}${mandir}/pl/man8
+	install -p -m 644 ${S}/man/update-passwd.8 ${D}${mandir}/man8/
+	install -p -m 644 ${S}/man/update-passwd.pl.8 \
+		${D}${mandir}/pl/man8/update-passwd.8
+	gzip -9 ${D}${mandir}/man8/* ${D}${mandir}/pl/man8/*
+	install -d -m 755 ${D}${datadir}/base-passwd
+	install -o root -g root -p -m 644 ${S}/passwd.master ${D}${datadir}/base-passwd/
+	sed -i 's#:/root:#:${ROOT_HOME}:#' ${D}${datadir}/base-passwd/passwd.master
+	install -o root -g root -p -m 644 ${S}/group.master ${D}${datadir}/base-passwd/
+
+	install -d -m 755 ${D}${docdir}/${BPN}
+	install -p -m 644 ${S}/debian/changelog ${D}${docdir}/${BPN}/
+	gzip -9 ${D}${docdir}/${BPN}/*
+	install -p -m 644 ${S}/README ${D}${docdir}/${BPN}/
+	install -p -m 644 ${S}/debian/copyright ${D}${docdir}/${BPN}/
+}
+
+basepasswd_sysroot_postinst() {
+#!/bin/sh
+
+# Install passwd.master and group.master to sysconfdir
+install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir}
+for i in passwd group; do
+	install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/\$i.master \
+		${STAGING_DIR_TARGET}${sysconfdir}/\$i
+done
+
+# Run any useradd postinsts
+for script in ${STAGING_DIR_TARGET}${bindir}/postinst-useradd-*; do
+	if [ -f \$script ]; then
+		\$script
+	fi
+done
+}
+
+SYSROOT_DIRS += "${sysconfdir}"
+SYSROOT_PREPROCESS_FUNCS += "base_passwd_tweaksysroot"
+
+base_passwd_tweaksysroot () {
+	mkdir -p ${SYSROOT_DESTDIR}${bindir}
+	dest=${SYSROOT_DESTDIR}${bindir}/postinst-${PN}
+	echo "${basepasswd_sysroot_postinst}" > $dest
+	chmod 0755 $dest
+}
+
+python populate_packages_prepend() {
+    # Add in the preinst function for ${PN}
+    # We have to do this here as prior to this, passwd/group.master
+    # would be unavailable. We need to create these files at preinst
+    # time before the files from the package may be available, hence
+    # storing the data from the files in the preinst directly.
+
+    f = open(d.expand("${STAGING_DATADIR}/base-passwd/passwd.master"), 'r')
+    passwd = "".join(f.readlines())
+    f.close()
+    f = open(d.expand("${STAGING_DATADIR}/base-passwd/group.master"), 'r')
+    group = "".join(f.readlines())
+    f.close()
+
+    preinst = """#!/bin/sh
+mkdir -p $D${sysconfdir}
+if [ ! -e $D${sysconfdir}/passwd ]; then
+\tcat << 'EOF' > $D${sysconfdir}/passwd
+""" + passwd + """EOF
+fi
+if [ ! -e $D${sysconfdir}/group ]; then
+\tcat << 'EOF' > $D${sysconfdir}/group
+""" + group + """EOF
+fi
+"""
+    d.setVar(d.expand('pkg_preinst_${PN}'), preinst)
+}
+
+addtask do_package after do_populate_sysroot
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGES =+ "${PN}-update"
+FILES_${PN}-update = "${sbindir}/* ${datadir}/${PN}"
+
+pkg_postinst_${PN}-update () {
+#!/bin/sh
+if [ -n "$D" ]; then
+	exit 0
+fi
+${sbindir}/update-passwd
+}