diff --git a/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h b/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
index ced745b..48a4b8c 100755
--- a/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
@@ -83,6 +83,24 @@
 int lynq_set_feature_config_sbp(int sbp_flag);
 int lynq_query_feature_config_sbp(int *sbp_status );
 
+#ifdef MODE_DSDS
+
+typedef struct{
+    signalStrength_t solSigStren_for_sim0;
+    signalStrength_t solSigStren_for_sim1;
+}signalStrength_dual_t;
+
+/**
+ * @brief check signal_strength for all sim cards once
+ * @param signalStrength_dual_t:two signalStrength_t struct for two sim 
+ * @return int
+ * 0:success
+ * other:fail
+ */
+int lynq_solicited_signal_strength_dual(signalStrength_dual_t *solSigStren_dual);
+
+#endif
+
 
 typedef enum {
     NETWORK_STATE_BUFFER_TYPE_VOICE_REG,
diff --git a/common_src/lib/liblynq-network/lynq_module_socket.cpp b/common_src/lib/liblynq-network/lynq_module_socket.cpp
index 35dd9d6..3472454 100755
--- a/common_src/lib/liblynq-network/lynq_module_socket.cpp
+++ b/common_src/lib/liblynq-network/lynq_module_socket.cpp
@@ -37,6 +37,17 @@
     char param[LYNQ_REQUEST_PARAM_BUF];
 }lynq_client_t;
 
+#ifdef MODE_DSDS
+typedef struct{
+    int uToken;
+    int request;
+    int paramLen;
+    char param[LYNQ_REQUEST_PARAM_BUF];
+    char slot_status;
+    char slot;
+}lynq_client_dual_t;
+#endif
+
 typedef struct{
     int resp_type;
     int token;
@@ -293,6 +304,77 @@
     return ret;    
 }
 
+#ifdef MODE_DSDS
+int lynq_send_common_request_dual(Parcel*& p, int time_out, int request_id, int argc, char slot_status ,char slot,const char* format,...)
+{
+    lynq_client_dual_t client;
+    int ret;
+    int send_num;
+    
+    client.uToken = g_module_Global_uToken;
+    g_module_Global_uToken=(g_module_Global_uToken+1)%10000;/*0-10000*/
+    client.request = request_id;
+    client.paramLen = argc;
+    client.slot_status = slot_status;
+    client.slot = slot;
+    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+    if(argc!=0)
+    {
+        va_list args;
+        va_start(args, format);
+        vsnprintf(client.param, LYNQ_REQUEST_PARAM_BUF, format, args);
+        va_end(args);    
+    }
+    LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s,slot_status=%c,slot=%c",client.uToken,client.request,client.paramLen,client.param,client.slot_status,client.slot);
+    pthread_mutex_lock(&s_sendto_mutex);
+     if(s_inner_test==1)
+    {
+        send_num = 1;          
+    }
+    else
+    {
+        send_num = sendto(module_rc_sock_fd,&client,sizeof(client),0,(struct sockaddr *)&module_rc_addr_serv,module_len_rc_addr_serv); 
+    }
+    if(s_inner_test>=1000)
+    {
+        time_out = s_inner_test-1000;
+    }        
+    pthread_mutex_unlock(&s_sendto_mutex);
+
+    if(send_num <= 0)       
+    {
+        LYERRLOG("send request fail, send num is %d", send_num);
+        return LYNQ_E_SEND_REQUEST_FAIL;
+    }
+    ret = waitResponse(p, client.uToken,time_out);
+
+    if(ret==0)
+    {
+        lynq_resp_t head; 
+        ret=GetHeader(p,head);
+        if(ret!=0)
+        {
+            LYERRLOG("%s %d get head error %d",__func__,client.uToken,ret);
+            delete p;
+            return LYNQ_E_GET_HEAD_ERROR;
+        }
+        if(head.error!=0)
+        {
+            LYERRLOG("%s %d mdm return head error %d",__func__,client.uToken,head.error);
+            delete p;
+            return head.error;
+        }
+        LYERRLOG("%s %d suc",__func__,client.uToken);
+        return RESULT_OK;  
+    }
+
+    LYERRLOG("%s %d fail, ret is %d",__func__,client.uToken,ret);
+   
+    return ret;    
+}
+
+#endif
+
 /*hq add for urc broadcase optimisson 2023/01/03 begin*/
 #define SHM_BUFFER_INDEX_OFFSET 1
 #define SHM_BUFFER_SIZE_OFFSET 16
diff --git a/common_src/lib/liblynq-network/lynq_module_socket.h b/common_src/lib/liblynq-network/lynq_module_socket.h
index 98f968e..299200d 100755
--- a/common_src/lib/liblynq-network/lynq_module_socket.h
+++ b/common_src/lib/liblynq-network/lynq_module_socket.h
@@ -9,6 +9,11 @@
 extern int g_wait_time;
 int lynq_send_common_request(Parcel*& p, int time_out, int request_id,  int argc, const char* format,...);
 
+#ifdef MODE_DSDS
+int lynq_send_common_request_dual(Parcel*& p, int time_out, int request_id, int argc, char slot_status ,char slot,const char* format,...);
+#endif
+
+
 int lynq_start_all_urc_socket_thread();
 void lynq_close_all_urc_socket_thread();
 int lynq_start_all_rc_socket_thread();
diff --git a/common_src/lib/liblynq-network/lynq_network.cpp b/common_src/lib/liblynq-network/lynq_network.cpp
index b89612e..dbc9c50 100755
--- a/common_src/lib/liblynq-network/lynq_network.cpp
+++ b/common_src/lib/liblynq-network/lynq_network.cpp
@@ -1169,6 +1169,134 @@
     delete p;
     return RESULT_OK;    
 }
+#ifdef MODE_DSDS
+
+int lynq_store_signal_strength_dual(Parcel* p,signalStrength_t *solSigStren)
+{
+    int none = 0;
+    int rscp;
+    int ecno;
+
+    p->readInt32(&solSigStren->rssi);
+    if(is_rssi_valid(solSigStren->rssi))
+    {
+        solSigStren->gw_sig_valid = 1;
+    }else{
+        solSigStren->gw_sig_valid = 0;
+    }
+
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&solSigStren->lte_signalstrength);
+
+    // p->readInt32(&solSigStren->signalStrength.LTE_SignalStrength.signalStrength);
+    p->readInt32(&solSigStren->rsrp);
+    p->readInt32(&solSigStren->rsrq);
+    p->readInt32(&solSigStren->rssnr);
+    LYINFLOG("LTE_signalstrength:%d",solSigStren->lte_signalstrength);
+    if(is_rssi_valid(solSigStren->lte_signalstrength))
+    {
+        solSigStren->lte_sig_valid = 1;
+    }else{
+        solSigStren->lte_sig_valid = 0;
+    }
+
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&none);
+    p->readInt32(&solSigStren->wcdma_signalstrength);
+    p->readInt32(&none);
+    p->readInt32(&rscp);
+    p->readInt32(&ecno);
+    
+    
+    LYINFLOG("WCDMA_signalstrength:%d",solSigStren->wcdma_signalstrength);
+    if(is_rssi_valid(solSigStren->wcdma_signalstrength))
+    {
+        solSigStren->wcdma_sig_valid = 1;
+        convert_rscp(rscp,&solSigStren->rscp);
+        convert_ecno(ecno,&solSigStren->ecno);
+    }else{
+        solSigStren->wcdma_sig_valid = 0;
+    }
+    /*bug fix*/
+    p->readInt32(&solSigStren->ssRsrp);  
+    
+    if(is_nr_ss_rsrp_valid(solSigStren->ssRsrp))
+    {
+        solSigStren->nr_sig_valid = 1;
+        p->readInt32(&solSigStren->ssRsrq);
+        p->readInt32(&solSigStren->ssSinr);
+        p->readInt32(&solSigStren->csiRsrp);
+        p->readInt32(&solSigStren->csiRsrq);
+        p->readInt32(&solSigStren->csiSinr);
+    }
+    else{
+        LYERRLOG("None of NR signal info");
+        solSigStren->nr_sig_valid = 0;
+    }        
+
+    LYINFLOG("%s suc",__func__);  
+    delete p;
+    return RESULT_OK;    
+
+}
+    
+int lynq_solicited_signal_strength_dual(signalStrength_dual_t *solSigStren_dual)
+{
+    if(g_module_init_flag != MODULE_RUNNING)
+    {
+        LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
+        return LYNQ_E_CONFLICT;
+    }
+    if(NULL == solSigStren_dual)
+    {
+        LYERRLOG("%s parameter is NULL",__func__);  
+        return LYNQ_E_PARAMETER_ANONALY;
+    }
+
+    Parcel* p_for_sim0=NULL;
+    Parcel* p_for_sim1=NULL;
+    int ret=lynq_send_common_request_dual(p_for_sim0,g_wait_time,RIL_REQUEST_SIGNAL_STRENGTH,0,'1','0',"");
+    if(ret!=RESULT_OK)
+    {
+        LYERRLOG("%s for sim0 call lynq_send_common_request failure, ret is %d",__func__,ret);
+        return ret;  
+    }            
+    
+    ret=lynq_store_signal_strength_dual(p_for_sim0,&(solSigStren_dual->solSigStren_for_sim0));
+    if(ret!=RESULT_OK)
+    {
+        LYERRLOG("lynq_store_signal_strength_DSDS failure, ret is %d",__func__,ret);
+        return ret;  
+    }           
+
+    ret=lynq_send_common_request_dual(p_for_sim1,g_wait_time,RIL_REQUEST_SIGNAL_STRENGTH,0,'1','1',"");
+    if(ret!=RESULT_OK)
+    {
+        LYERRLOG("%s for sim1 call lynq_send_common_request failure, ret is %d",__func__,ret);
+        return ret;  
+    }            
+    
+    ret=lynq_store_signal_strength_dual(p_for_sim1,&(solSigStren_dual->solSigStren_for_sim1));
+    if(ret!=RESULT_OK)
+    {
+        LYERRLOG("lynq_store_signal_strength_DSDS failure, ret is %d",__func__,ret);
+        return ret;  
+    }            
+    
+    return RESULT_OK;    
+}
+
+
+#endif
 
 int lynq_set_ims(const int ims_mode)
 {
@@ -1216,6 +1344,11 @@
         LYINFLOG("incoming solSigStren or slot_id is NULL!!!");
         return LYNQ_E_PARAMETER_ANONALY;
     }
+    #ifdef MODE_DSDS
+    *slot_id = s_module_urc_slot_id;
+    LYINFLOG("slot_id = %d",s_module_urc_slot_id);
+    #else
+    #endif
     switch(handle)
     {        
         case RIL_UNSOL_SIGNAL_STRENGTH: //1009
@@ -1241,8 +1374,11 @@
         }
         default:
         {
+            #ifdef MODE_DSDS
+            #else
             *slot_id = s_module_urc_slot_id;
             LYINFLOG("slot_id = %d",s_module_urc_slot_id);
+            #endif
 		}
     }        
     return RESULT_OK;   
diff --git a/common_src/lib/liblynq-network/makefile b/common_src/lib/liblynq-network/makefile
index 044d7f5..a5c8892 100755
--- a/common_src/lib/liblynq-network/makefile
+++ b/common_src/lib/liblynq-network/makefile
@@ -14,6 +14,12 @@
     LOCAL_CFLAGS += -DGSW_RIL_CFG
 endif
 
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsds)
+    LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2 \
+                     -DANDROID_MULTI_SIM \
+                     -DMODE_DSDS
+endif
+
 $(warning ################# lynq network demo ROOT: $(ROOT),includedir:$(includedir))
 LOCAL_PATH   = .
 
