diff --git a/src/lynq/lib/liblynq-at-extension/lynq_at.cpp b/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
index 8785310..28d9a4a 100755
--- a/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
+++ b/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
@@ -120,40 +120,43 @@
         LYDBGLOG("lose data when send to atci service. errno = %d", errno);
         return false;
     }
-    LYDBGLOG("send to app demo: %s", msg);
+    LYDBGLOG("client send to app demo: %s", msg);
     return true;
 }
 
 int atsvc_cmd_recv(int fd, char *buf, int len)
 {
+    LYINFLOG("[%d][%s] enter",LINE,FUNC);
     int ret = 0;
-    fd_set rfds;
-    //FD_CLR(fd, &rfds);
-    FD_SET(fd, &rfds);
-    ret = select(fd + 1, &rfds, NULL, NULL, NULL);
-    if (ret <= 0)
-    {
-        LYDBGLOG("acti_cmd_recv select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
-        return SOCKET_FAIL;
-    }
-    if (FD_ISSET(fd, &rfds))
-    {
+    // fd_set rfds;
+    // //FD_CLR(fd, &rfds);
+    // FD_SET(fd, &rfds);
+    // ret = select(fd + 1, &rfds, NULL, NULL, NULL);
+    // if (ret <= 0)
+    // {
+    //     LYDBGLOG("acti_cmd_recv client select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+    //     return SOCKET_FAIL;
+    // }
+    // if (FD_ISSET(fd, &rfds))
+    // {
+        LYDBGLOG("[%d][%s] recv before",LINE,FUNC);
         ret = recv(fd, buf, len, 0);
+        LYDBGLOG("[%d][%s] recv after",LINE,FUNC);
         if (ret < 0)
         {
-            LYDBGLOG("acti_cmd_recv select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+            LYDBGLOG("acti_cmd_recv client select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
             return SOCKET_FAIL;
         }
         else if(ret == 0)
         {
-            LYDBGLOG("acti_cmd_recv recv error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+            LYDBGLOG("acti_cmd_recv client recv error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
             return SOCKET_ZERO;
     }
-    else
-    {
-      //buf[ret] = '\0';
-    }
-  }
+    // else
+    // {
+    //   //buf[ret] = '\0';
+    // }
+//   }
   return SOCKET_SUCC;
 }
 /**
@@ -179,6 +182,7 @@
     fd = socket_local_client(AT_EXTERSION_SOCKET_NAME);
     if(fd <= 0)
     {
+        LYDBGLOG("socket_local_client  fail\n");
         connect_state = false;
         pthread_mutex_unlock(&s_startupMutex);
         return NULL;
@@ -186,6 +190,7 @@
     int len_buf = strlen(buffer_at);
     if(!send_msg_to_service(fd,buffer_at,len_buf))
     {
+        LYDBGLOG("send_msg_to_service  fail\n");
         connect_state = false;
         pthread_mutex_unlock(&s_startupMutex);
         return NULL;
