diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 3672fc7..102d130 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -38,10 +38,12 @@
 
 pthread_t g_ap_watcher_pid = 0;
 volatile int g_ap_watcher_stop_flag = 0;
+volatile int g_ap_watcher_started_flag = 0;
 
 pthread_t g_sta_watcher_pid = 0;
 volatile int g_sta_watcher_stop_flag = 0;
 volatile int g_sta_scan_finish_flag = 0;
+volatile int g_sta_watcher_started_flag = 0;
 
 void * g_ap_callback_priv = NULL;
 AP_CALLBACK_FUNC_PTR g_ap_callback_func = NULL;
@@ -136,6 +138,7 @@
             }
 
             wpa_ctrl_attach(lynq_wpa_ctrl);
+            g_ap_watcher_started_flag = 1;
         }
 
         if ( 0 == wpa_ctrl_pending(lynq_wpa_ctrl)) {
@@ -179,6 +182,7 @@
             }
 
             wpa_ctrl_attach(lynq_wpa_ctrl);
+            g_sta_watcher_started_flag = 1;
         }
 
         if ( 0 == wpa_ctrl_pending(lynq_wpa_ctrl)) {
@@ -248,7 +252,7 @@
     }
 
     for (i=0; i<10; i++) {
-        if (system("connmanctl technologies | grep \"/net/connman/technology/wifi\"") == 0) {
+        if (system("connmanctl technologies | grep -q \"/net/connman/technology/wifi\"") == 0) {
             break;
         }
         usleep(300*1000);
@@ -258,11 +262,13 @@
         return -1;
     }
 
-    if (0 != system("ifconfig | grep ap0")) {
-        printf("enable wifi\n");
+    if (0 != system("ifconfig | grep -q ap0")) {
         system("connmanctl enable wifi");
+        usleep(300*1000);
         system("wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 DRIVER interface_create ap0");
+        usleep(300*1000);
         system("connmanctl tether wifi on lynq 1qaz@WSX#$%^");
+        usleep(300*1000);
     }
 
     if (g_ap_watcher_pid == 0 ) {
@@ -279,6 +285,13 @@
         }
     }
 
+    for (i=0; i<10; i++) {
+        usleep(300*1000);
+        if (g_ap_watcher_started_flag == 1 && g_sta_watcher_started_flag == 1) {
+            break;
+        }
+    }
+
     return ret;
 }
 
@@ -329,7 +342,7 @@
         return -1;
     }
 
-    printf("reply len %d, %08x\n", reply_len, (int)out_put);
+//    printf("reply len %d, %08x\n", reply_len, (int)out_put);
     memcpy(out_put, cmd_reply, reply_len + 1);
     return 0;
 }
@@ -1028,7 +1041,7 @@
         }
     }
     else {
-        if (inner_get_param(CTRL_AP, AP_NETWORK_0, "key_mgmt", lynq_proto_str) != 0) {
+        if (inner_get_param(CTRL_AP, AP_NETWORK_0, "proto", lynq_proto_str) != 0) {
             *auth = LYNQ_WIFI_AUTH_WPA_PSK;
         }
         else if (memcmp(lynq_proto_str, "RSN", 3) == 0) {
@@ -1043,7 +1056,6 @@
 }
 
 
-
 int lynq_wifi_ap_start(lynq_wifi_index_e idx)
 {
     char LYNQ_WIFI_CMD[128]={0};
@@ -1671,7 +1683,7 @@
 
     system("connmanctl enable wifi");
 
-    if (system("ifconfig | grep wlan0") != 0) {
+    if (system("ifconfig | grep -q wlan0") != 0) {
         return -1;
     }
 
