diff --git a/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h b/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h
index 5c461f4..bdd73e2 100755
--- a/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h
+++ b/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h
@@ -50,3 +50,4 @@
 { RIL_UNSOL_ECC_NUM,responseString, WAKE_PARTIAL},
 {RIL_UNSOL_SIP_CALL_PROGRESS_INDICATOR, responseStrings, WAKE_PARTIAL},
 {RIL_UNSOL_CALL_INFO_INDICATION, responseStrings, WAKE_PARTIAL},
+{RIL_UNSOL_TELEPHONY_RESTART, responseVoid, WAKE_PARTIAL}
diff --git a/src/lynq/framework/lynq-ril-service/src/ril.cpp b/src/lynq/framework/lynq-ril-service/src/ril.cpp
index ccd0e01..20fcf22 100755
--- a/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -26,6 +26,7 @@
 #include <hardware_legacy/power.h>
 #include <vendor-ril/telephony/ril.h>
 #include <telephony/ril_cdma_sms.h>
+#include <telephony/mtk_ril_sp.h>
 #include <cutils/jstring.h>
 #include <telephony/record_stream.h>
 #include <utils/SystemClock.h>
@@ -5396,6 +5397,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 RIL_UNSOL_TELEPHONY_RESTART:return "RIL_UNSOL_TELEPHONY_RESTART";/*xy.he add for t800 ril service 2023/10/23*/
         /*warren add for t800 ril service 2022/1/22 end*/
         default: return "<unknown request>";
     }
@@ -5694,6 +5696,7 @@
         case RIL_UNSOL_ECALL_MSDHACK: return 1;
         case RIL_UNSOL_TX_POWER: return 1;
         case RIL_UNSOL_NETWORK_INFO: return 1;
+        case RIL_UNSOL_TELEPHONY_RESTART: return 1;
 #ifdef ECALL_SUPPORT
         case RIL_UNSOL_ECALL_INDICATIONS: return 1;
 #endif /*ECALL_SUPPORT*/
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index b7498a6..def2a32 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -26,6 +26,7 @@
 
 #define LYNQ_DATA_UCI_BUF 258
 #define LYNQ_DATA_TIME_OUT 1000*120
+#define TELEPHONY_RESTART 10
 
 
 using ::android::Parcel;
@@ -65,6 +66,7 @@
 int lynq_data_socket_server_addr_len;
 
 int lynq_data_call_change_id = -1;
+int lynq_telephony_restart_g = 0;
 pthread_t lynq_data_tid =-1;
 static pthread_mutex_t s_data_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t s_data_call_state_change_cond = PTHREAD_COND_INITIALIZER;
@@ -115,6 +117,8 @@
 lynq_data_call_response_v11_t lynq_data_call_lists[LYNQ_APN_CHANNEL_MAX] = {};
 int lynq_data_call = 0;
 
+int radio_switch(int status);
+
 int getLynqApnID(char apnType[])
 {
     int ret = 0;
@@ -560,6 +564,7 @@
 
         case LYNQ_URC_MODIFY_APNDB:
         case LYNQ_URC_RESET_APNDB:
+        case LYNQ_TELEPHONY_RESTART:
             return true;                
         default:
             return false;
@@ -796,6 +801,23 @@
                 }
                 free(urc_msg);
             }
+        case LYNQ_TELEPHONY_RESTART:
+            {
+                if(slot_id == 0)
+                {
+                    RLOGI("data has received telephony has restart");
+                    RLOGI("handle set to 10");
+                    lynq_telephony_restart_g = 1;
+                    pthread_mutex_lock(&s_lynq_urc_vector_mutex);
+                    s_data_urc_wait_list.push_back(TELEPHONY_RESTART);
+                    pthread_mutex_unlock(&s_lynq_urc_vector_mutex);
+                    radio_switch(0);
+                    sleep(1);
+                    radio_switch(1);
+                    sleep(1);
+                    sendSignalPdnChange();
+                }
+            }
         default:
             break;
     }
@@ -813,7 +835,7 @@
 }
 int get_imsi();
 int check_apn_status();
-int radio_switch(int status);
+
 int lynq_init_data(int uToken)
 {
     if (g_lynq_data_init_flag == 1)
diff --git a/src/lynq/lib/liblynq-data/lynq_data_urc.h b/src/lynq/lib/liblynq-data/lynq_data_urc.h
index 7ac4f75..59f9f9d 100755
--- a/src/lynq/lib/liblynq-data/lynq_data_urc.h
+++ b/src/lynq/lib/liblynq-data/lynq_data_urc.h
@@ -16,6 +16,7 @@
 #define LYNQ_REQUEST_SET_DTMF_VOLUME (LYNQ_REQUEST_VENDOR_BASE +3)
 #define LYNQ_URC_MODIFY_APNDB (LYNQ_URC_VENDOR_BASE+4)
 #define LYNQ_URC_RESET_APNDB (LYNQ_URC_VENDOR_BASE+5)
+#define LYNQ_TELEPHONY_RESTART 3113
 
 typedef struct{
     int resp_type;
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp
index 15a17ab..dca7898 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp
@@ -647,7 +647,11 @@
 #if defined(TELEPHONYWARE)
 static void send_restart_unsol(RIL_SOCKET_ID slot){
 #if defined(ANDROID_MULTI_SIM) && !defined(MODE_DSSS)
+    RLOGI("start send RIL_UNSOL_TELEPHONY_RESTART111111");
     RFX_onUnsolicitedResponse(RIL_UNSOL_TELEPHONY_RESTART, NULL, 0, slot);
+#else
+    //RFX_onUnsolicitedResponse(RIL_UNSOL_TELEPHONY_RESTART, NULL, 0, slot);
+    RLOGI("don't defined ANDROID_MULIT_SIM and MODE_DSSS");
 #endif
     return;
 }
@@ -657,6 +661,11 @@
 void *ril_socket_reader_looper(void *arg) {
     while (1) {
         RilpSocket *socket = (RilpSocket *)arg;
+    #if defined(TELEPHONYWARE)
+        RLOGI("[ril_socket_reader_looper]TELEPHONY HAS RESTART");
+        RLOGI("has defined TELEPHONYWARE");
+        send_restart_unsol(socket->id);
+    #endif
         socket->readerLooper();
         rfx_close_socket(socket->group, socket->id);
 
