diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
index 3f01e93..c5ac426 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
@@ -28,6 +28,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/time.h>
+#include <include/lynq_sim.h>
 
 #include <unistd.h>
 #include <dlfcn.h>
@@ -152,7 +153,6 @@
   return;
 }
 
-
  void init_sim_func()
 {
     int res;
@@ -314,7 +314,11 @@
 int t106_early_suspend(void)
 {
     int ret;
+
     RLOGD("t106_early_suspend start\n");
+    ret=lynq_sleep_status(0);
+    RLOGD("lynq_get_sleep_status ret=%d\n", ret);
+
     system("zlog_nvctrl -m 1");
     ret = t106_set_whitelist();
     if(ret)
@@ -347,6 +351,9 @@
     }
     system("zlog_nvctrl -m 0");
 
+    ret=lynq_sleep_status(1);
+    RLOGD("lynq_get_sleep_status ret=%d\n", ret);
+
     return NULL;
 }
 #endif
@@ -650,7 +657,7 @@
     int ret;
     char buf[80];
     char timeout_str[100]="100000";
-
+    pid = getpid();
     //if (property_get("sys.autosuspend.timeout", timeout_str, NULL))
     {
         possible_max_sleep_time = atoi(timeout_str);
@@ -693,6 +700,15 @@
         ALOGD("sc_mnet_whitelist_init failed.\n");
         return NULL;
     }
+    ret = lynq_sim_init((int)pid);
+    if(ret == 0)
+    {
+        ALOGD("Run lynq_sim_init\n");
+    }
+    else
+    {
+        return NULL;
+    }
     ret = pthread_create(&suspend_thread, NULL, suspend_thread_func, NULL);
     if (ret) {
         strerror_r(ret, buf, sizeof(buf));
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile
index a2eba39..ca263bf 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile
@@ -50,7 +50,7 @@
     -lsctel \
     -latutils \
     -latreg \
-    
+    -llynq-sim \
 
 
 SOURCES = $(wildcard *.c )
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb
index 96c90de..a3df67f 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb
@@ -22,7 +22,7 @@
 LOCAL_C_INCLUDES = "-I. "
 
 DEPENDS = "liblynq-log liblynq-uci"
-DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} liblynq-log liblynq-uci libbsp libsctel libatutils libatreg"
+DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} liblynq-log liblynq-uci libbsp libsctel libatutils libatreg liblynq-sim"
 LOCAL_LIBS = "-L. -ldl -lstdc++ -lpthread -llog"
 SOURCES = "$(wildcard *.c )"
 
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h
index 384f916..168d776 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h
@@ -205,6 +205,7 @@
     {"LYNQ_REQUEST_LIST_SMS_FROM_MEMORY",listSmsToMemory, "write sms to memory",LYNQ_REQUEST_LIST_SMS_FROM_MEMORY},
     {"LYNQ_REQUEST_CHANGE_SCREEN_STATE",getScreenState,"lynq get Screen State",LYNQ_REQUEST_CHANGE_SCREEN_STATE},/*jb.qi change for two sim suspend 2022/9/19 */
     {"LYNQ_REQUEST_CHANGE_RADIO",setRadioPower,"setRadioPower",LYNQ_REQUEST_CHANGE_RADIO},/*lei add for both radio on/off */
+    {"LYNQ_REQUEST_CHANGE_SLEEP_STATE",getSleepState,"lynq get Sleep State",LYNQ_REQUEST_CHANGE_SLEEP_STATE},/*jb.qi change for suspend 2024/2/23 */
     /*Warren change for t800 ril service 2022/1/18 end*/
 
     #ifdef C2K_SUPPORT
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h
index 4a94b10..95a50ce 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h
@@ -23,6 +23,8 @@
 #define LYNQ_REQUEST_OOS_DEEP_SLEEP_RECOVER_TIMER_INTERVAL (LYNQ_REQUEST_VENDOR_BASE +13)
 #define LYNQ_REQUEST_CHANGE_SCREEN_STATE (LYNQ_REQUEST_VENDOR_BASE + 14)/*jb.qi add for two sim suspend 2022/9/19*/
 #define LYNQ_REQUEST_CHANGE_RADIO (LYNQ_REQUEST_VENDOR_BASE + 15)
+#define LYNQ_REQUEST_CHANGE_SLEEP_STATE (LYNQ_REQUEST_VENDOR_BASE + 16)/*jb.qi change for suspend 2024/2/23 start*/
+
 #ifdef ECALL_SUPPORT
 #define RIL_UNSOL_ECALL_T2_TIMER_OUT  9000
 #define RIL_UNSOL_ECALL_T5_TIMER_OUT  9001
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/mtk_ril_commands.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/mtk_ril_commands.h
index d4a1fdb..2d17ee3 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/mtk_ril_commands.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/mtk_ril_commands.h
@@ -35,6 +35,7 @@
 
 { RIL_REQUEST_SET_TRM, dispatchInts, responseVoid},
 { RIL_REQUEST_SET_IMS_ENABLE,dispatchInts,responseVoid},
+{ LYNQ_REQUEST_CHANGE_SLEEP_STATE,dispatchInts,responseVoid},/*jb.qi change for suspend 2024/2/23 start*/
 //eCall
 #ifdef ECALL_SUPPORT
 { RIL_REQUEST_ECALL_FAST_MAKE_ECALL,dispatchFastEcall,responseVoid},
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
index 4c51a16..0f5785c 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -5268,6 +5268,7 @@
         case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/
         case RIL_REQUEST_GET_MSISDN:return "RIL_REQUEST_GET_MSISDN";
         case RIL_REQUEST_RESET_SIMCARD:return "RIL_REQUEST_RESET_SIMCARD";
+        case LYNQ_REQUEST_CHANGE_SLEEP_STATE: return "LYNQ_REQUEST_CHANGE_SLEEP_STATE";/*jb.qi change for suspend 2024/2/23 */
         /*warren add for t800 ril service 2022/1/22 end*/
         default: return "<unknown request>";
     }
@@ -5537,6 +5538,7 @@
         case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL:return "SET_DEFAULT_SIM_ALL";
         case LYNQ_REQUEST_CHANGE_SCREEN_STATE:return "LYNQ_REQUEST_CHANGE_SCREEN_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
         case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/
+        case LYNQ_REQUEST_CHANGE_SLEEP_STATE:return "LYNQ_REQUEST_CHANGE_SLEEP_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
         case RIL_REQUEST_GET_MSISDN: return "GET MSISDN";
         case RIL_REQUEST_RESET_SIMCARD: return "RESET SIMCARD";
         /*warren add for t800 ril service 2022/1/22 end*/
@@ -6243,7 +6245,7 @@
                     waitResponse(waittoken);
                     memset(Time_buf,0,sizeof(Time_buf));
                     GetTimeString(Time_buf);
-                    FUNCTION_RETURN(Time_buf,requestToString(request));          
+                    FUNCTION_RETURN(Time_buf,requestToString(request));
                     bzero(buffer, LYNQ_SOCKET_BUFFER);
 
                 }
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp
index 6a7c251..0a66abf 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp
@@ -111,7 +111,7 @@
     lynq_get_value(LYNQ_UCI_FILE, LYNQ_UCI_SECTION, LYNQ_UCI_NETLED_KEY, netled_on);
     if(!atoi(netled_on))
         return -1;
-    mbtk_netled_state_update(screen_state==0 ? GPIO_NETLED_AP_GOINGSLEEP : GPIO_NETLED_AP_WAKEUP);	
+    mbtk_netled_state_update(screen_state==0 ? GPIO_NETLED_AP_GOINGSLEEP : GPIO_NETLED_AP_WAKEUP);
     usleep(wait_led_update_effective_timer_ms*1000);
 #endif
 
@@ -120,6 +120,37 @@
     return 0;
 }
 
+/*jb.qi change for suspend 2024/2/23 start*/
+int getSleepState(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+    RLOGD("start getSleepState\n");
+    android::Parcel p;
+    int sent;
+    p.writeInt32(0);
+    p.writeInt32(pRI->uToken);
+    p.writeInt32(pRI->pCI->requestNumber);
+    p.writeInt32(socket_id);
+    p.writeInt32(0);//error
+    int sleep_state= atoi(argv[1]);
+    if(sleep_state == 0)
+    {
+        RLOGD("start to sleep\n");
+    }
+    else if(sleep_state ==1)
+    {
+        RLOGD("start to resume\n");
+    }
+    else
+    {
+        return -1;
+    }
+    android::LYNQ_RIL_respSocket(p, (void *)pRI);
+    free(pRI);
+    return 0;
+
+}
+/*jb.qi change for suspend 2024/2/23 end*/
+
 //RIL_REQUEST_SET_TRM
 int setTRM(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
 {
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.h
index b96b5ec..da9e083 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.h
@@ -36,7 +36,7 @@
 #define __RIL_STAM__
 #include  <vendor-ril/telephony/ril.h>
 #include  "common.h"
-
+int getSleepState(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);/*jb.qi change for suspend 2024/2/23 */
 int getDeviceIdentity(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 int getIMEI(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 int getIMEISV(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sim/include/lynq_sim.h b/cap/zx297520v3/src/lynq/lib/liblynq-sim/include/lynq_sim.h
index bf271f1..8bf9069 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sim/include/lynq_sim.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sim/include/lynq_sim.h
@@ -27,6 +27,9 @@
 int lynq_query_phone_number(char buf[]);
 int lynq_switch_card(int slot);
 int lynq_screen(int num);
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+int lynq_sleep_status(int sleep_state);
+#endif
 int lynq_get_imei(char buf[]);
 int lynq_get_imei_and_sv(char imei[],char sv[]);
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile
index 219bda7..0eafd49 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sim/makefile
@@ -17,6 +17,10 @@
 LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 -DHAVE_ENDIAN_H -DHAVE_PTHREADS -DHAVE_SYS_UIO_H -DHAVE_POSIX_FILEMAP -DHAVE_STRLCPY -DHAVE_PRCTL -DHAVE_MEMSET16 -DHAVE_MEMSET32 -DANDROID_SMP=0 -DMOBILETEK_TARGET_PLATFORM_T106 -Wl,-Bsymbolic
 endif
 
+ifeq ($(strip $(TARGET_PLATFORM)), T106)
+    LOCAL_CFLAGS += -DMOBILETEK_TARGET_PLATFORM_T106
+endif
+
 $(warning ################# lynq sim ROOT: $(ROOT),includedir:$(includedir))
 LOCAL_PATH   = .
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
index 75a1d0b..cfddb6c 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
@@ -29,6 +29,8 @@
 #define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL 8008
 #define LYNQ_REQUEST_CHANGE_SCREEN_STATE 8014 /*add for two sim suspend on 20220919*/
 #define LYNQ_REQUEST_CHANGE_RADIO 8015
+#define LYNQ_REQUEST_CHANGE_SLEEP_STATE 8016
+
 #define MAX_LEN 1024*8
 #define MAX_NUM 10
 #define LOG_TAG "LYNQ_SIM"
@@ -44,7 +46,7 @@
     char param[MAX_LEN];
 }lynq_client_t;
 
-/* socket文件描述符 */ 
+/* socket file descriptor*/ 
 int len_addr_serv;
 struct sockaddr_in addr_serv;
 static int sock_fd = 0;
@@ -703,6 +705,36 @@
     return res;
 }
 
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+/**@breif    notice ril the sleep state
+*param       num type: [IN]  sleep_state,0:sleep,1:resume
+*param       ret type: [OUT] result,0:success,other:fail
+*return int
+*/
+int lynq_sleep_status(int sleep_state)
+{
+    RLOGD("start lynq_get_sleep_status\n");
+    if(g_lynq_sim_init_flag == 0)
+    {
+        return -1;
+    }
+    if(!judge(sleep_state))
+        return -1;
+    Parcel p;
+    int res = lynq_send_common_request(&p,LYNQ_REQUEST_CHANGE_SLEEP_STATE,1,1,"%d\n",sleep_state);
+    if(res != 0)
+    {
+        RLOGD("function %s execute error\n", __FUNCTION__);
+        return res;
+    }
+    else
+    {
+        RLOGD("function %s execute success\n", __FUNCTION__);
+    }
+    return res;
+}
+#endif
+
 /**@breif    change screen state
 *param       num type: [IN]  screen_state,0:close,1:open
 *param       ret type: [OUT] result,0:success,other:fail
