diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 23a9a3b..70f7ac2 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -853,6 +853,12 @@
         else if (strcmp( flag, "[ESS]") == 0 || strcmp( flag,"[WPS][ESS]") == 0)
 	{
             return LYNQ_WIFI_AUTH_OPEN;
+	}else if ( strstr(flag, "SHA256") == 0 )
+        {
+            return LYNQ_WIFI_AUTH_WPA3_PSK;
+        }else if ( strstr( flag,"SAE-CCMP") == 0 )
+        {
+            return LYNQ_WIFI_AUTH_WPA2_WPA3_PSK;
         }
     }
 
@@ -1291,6 +1297,7 @@
 
     if (0 == lynq_wifi_ap_auth_get(idx, &org_auth) && org_auth != -1) {
         if (org_auth == auth) {
+            RLOGD("org_auth --- is %d\n",org_auth);
             return 0;
         }
         else {
@@ -1313,14 +1320,15 @@
     switch(auth){
 	case LYNQ_WIFI_AUTH_OPEN:
         {
+            RLOGD("auth == is LYNQ_WIFI_AUTH_OPEN\n");
             sprintf(lynq_auth_cmd,"SET_NETWORK %d key_mgmt NONE", AP_NETWORK_0);
             sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise NONE", AP_NETWORK_0);
-
             DO_OK_FAIL_REQUEST(lynq_auth_cmd);
 	    break;
 	}
         case LYNQ_WIFI_AUTH_WEP:
         {
+            RLOGD("auth == is LYNQ_WIFI_AUTH_WEP\n");
             sprintf(lynq_auth_cmd,"SET_NETWORK %d key_mgmt NONE", AP_NETWORK_0);
             sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise NONE", AP_NETWORK_0);
             sprintf(lynq_auth_alg_cmd,"SET_NETWORK %d auth_alg  SHARED", AP_NETWORK_0);
@@ -1330,6 +1338,17 @@
             break;
         }
 	case LYNQ_WIFI_AUTH_WPA_PSK:
+        {
+            sprintf(lynq_auth_cmd,"SET_NETWORK %d proto WPA", AP_NETWORK_0);
+            sprintf(lynq_psk_cmd,"SET_NETWORK %d key_mgmt WPA-PSK", AP_NETWORK_0);
+            sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise CCMP", AP_NETWORK_0);
+
+            DO_OK_FAIL_REQUEST(lynq_auth_cmd);
+            DO_OK_FAIL_REQUEST(lynq_psk_cmd);
+            DO_OK_FAIL_REQUEST(lynq_pairwise_cmd);
+            break;
+
+	}
         case LYNQ_WIFI_AUTH_WPA2_PSK:
 	{
             if (auth == LYNQ_WIFI_AUTH_WPA_PSK)
@@ -1406,30 +1425,41 @@
     {
         if (inner_get_param(CTRL_AP, AP_NETWORK_0, "auth_alg", lynq_auth_alg_str) != 0)
 	{
+            RLOGD("---auth is OPEN\n");
             *auth = LYNQ_WIFI_AUTH_OPEN;
+            return 0;
         }
         else if (memcmp(lynq_auth_alg_str, "SHARED", 6) == 0)
 	{
+            RLOGD("---auth is WEP\n");
             *auth = LYNQ_WIFI_AUTH_WEP;
+            return 0;
         }
         else
 	{
+            RLOGD("---auth is OPEN\n");
             *auth = LYNQ_WIFI_AUTH_OPEN;
+            return 0;
         }
     }
     else if(strcmp( lynq_auth_str, "WPA-PSK") == 0 )
     {
         if (inner_get_param(CTRL_AP, AP_NETWORK_0, "proto", lynq_proto_str) != 0)
 	{
+            RLOGE("---auth is -1\n");
             *auth = -1;
         }
         else if (memcmp(lynq_proto_str, "RSN", 3) == 0)
 	{
+            RLOGD("---auth WPA2_PSK\n");
             *auth = LYNQ_WIFI_AUTH_WPA2_PSK;
+            return 0;
         }
         else
 	{
+            RLOGD("---auth WPA_PSK\n");
             *auth = LYNQ_WIFI_AUTH_WPA_PSK;
+	    return 0;
         }
     }
     
@@ -1443,13 +1473,16 @@
     {
 	RLOGD("auth : LYNQ_WIFI_AUTH_WPA2_WPA3_PSK\n");
         *auth = LYNQ_WIFI_AUTH_WPA2_WPA3_PSK;
+        return 0;
     }else if (memcmp(lynq_auth_str,"2",1) == 0 )
     {
 	RLOGD("auth : LYNQ_WIFI_AUTH_WPA3_PSK\n");
         *auth = LYNQ_WIFI_AUTH_WPA3_PSK;
+        return 0;
     }
     else
     {
+	RLOGE("---auth -- -1\n");
         *auth = -1;
     }
 
@@ -1567,19 +1600,20 @@
 
     if (0 != lynq_wifi_ap_auth_get(idx, &auth))
     {
+        RLOGE("[lynq_ap_password_set] get ap auth info error\n");
         return -1;
     }
     else if (auth == LYNQ_WIFI_AUTH_OPEN)
     {
-        RLOGE("ap auth :LYNQ_WIFI_AUTH_OPEN\n");
-        return -1;
+        RLOGD("ap auth :LYNQ_WIFI_AUTH_OPEN\n");
+        return 0;
     }
 
     CHECK_WPA_CTRL(CTRL_AP);
 
     if (auth == LYNQ_WIFI_AUTH_WEP)
     {
-        RLOGD("ap auth : LYNQ_WIFI_AUTH_WEP\n");
+        RLOGD("[lynq_ap_password_set]ap auth : LYNQ_WIFI_AUTH_WEP\n");
         sprintf(lynq_tmp_cmd,"SET_NETWORK %d wep_key0 \"%s\"",AP_NETWORK_0, password);
         sprintf(lynq_wep_tx_keyidx_cmd,"SET_NETWORK %d wep_tx_keyidx 0",AP_NETWORK_0);
         DO_OK_FAIL_REQUEST(lynq_tmp_cmd);
@@ -1587,13 +1621,14 @@
     }
     else if (auth == LYNQ_WIFI_AUTH_WPA_PSK || auth == LYNQ_WIFI_AUTH_WPA2_PSK)
     {
-	RLOGD("ap auth :LYNQ_WIFI_AUTH_WPA_PSK  LYNQ_WIFI_AUTH_WPA2_PSK\n");
+        RLOGD("[lynq_ap_password_set]ap auth :LYNQ_WIFI_AUTH_WPA_PSK  LYNQ_WIFI_AUTH_WPA2_PSK\n");
         sprintf(lynq_tmp_cmd,"SET_NETWORK %d psk \"%s\"",AP_NETWORK_0, password);
         DO_OK_FAIL_REQUEST(lynq_tmp_cmd);
     }
     else if (auth == LYNQ_WIFI_AUTH_WPA2_WPA3_PSK || auth == LYNQ_WIFI_AUTH_WPA3_PSK)
     {
         
+        RLOGD("[lynq_ap_password_set]ap auth :LYNQ_WIFI_AUTH_WPA2_WPA3  LYNQ_WIFI_AUTH_WPA3_PSK\n");
         sprintf(lynq_tmp_cmd,"SET_NETWORK %d psk \"%s\"",AP_NETWORK_0, password);
         sprintf(lynq_wpa2_wpa3,"SET_NETWORK %d sae_password \"%s\"",AP_NETWORK_0, password);
         DO_OK_FAIL_REQUEST(lynq_tmp_cmd);
@@ -1601,8 +1636,8 @@
 
     }
     else
-    {
-	RLOGE("Something Error\n");
+    {   
+        RLOGD("[lynq_ap_password_set]ap auth :get ap auth error\n");
         return -1;
     }
 
@@ -1717,6 +1752,7 @@
             if (strcmp(lynq_proto_str, "RSN") == 0)
 	    {
                 *auth = LYNQ_WIFI_AUTH_WPA2_PSK;
+                return 0;
             }
         }
     }
@@ -1729,10 +1765,12 @@
     {
 
        *auth = LYNQ_WIFI_AUTH_WPA2_WPA3_PSK;
+       return 0;
     }else if( strncmp(lynq_auth_str,"2",1) == 0 )
     {
 
         *auth = LYNQ_WIFI_AUTH_WPA3_PSK;
+        return 0;
     }else
     {
         *auth = -1;
@@ -2114,7 +2152,7 @@
 
 static int inner_set_sta_auth_psw(int net_no, lynq_wifi_auth_s auth, char *password)
 {
-    char lynq_auth_cmd[64]={0};
+    char lynq_auth_cmd[128]={0};
     char lynq_ket_mgmt_cmd[64]={0};
     char lynq_pairwise_cmd[64]={0};
     char lynq_psk_cmd[64]={0};
@@ -2161,12 +2199,14 @@
         }	
 	case LYNQ_WIFI_AUTH_WPA2_WPA3_PSK:
 	{
-            sprintf(lynq_auth_cmd,"SET_NETWORJ %d ieee80211w 1",net_no);
-            sprintf(lynq_ket_mgmt_cmd,"SET_NETWORJ %d key_mgmt SAE WPA-PSK",net_no);
+            //sprintf(lynq_auth_cmd,"SET_NETWORK %d ieee80211w 1",net_no);
+            sprintf(lynq_auth_cmd,"wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 set_network %d ieee80211w 1",net_no);
+            sprintf(lynq_ket_mgmt_cmd,"SET_NETWORK %d key_mgmt SAE WPA-PSK",net_no);
             sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise CCMP", net_no);
             sprintf(lynq_psk_cmd, "SET_NETWORK %d psk \"%s\"", net_no, password);
             
-	    DO_OK_FAIL_REQUEST(lynq_auth_cmd);
+	   // DO_OK_FAIL_REQUEST(lynq_auth_cmd);
+	    system(lynq_auth_cmd);
             DO_OK_FAIL_REQUEST(lynq_ket_mgmt_cmd);
             DO_OK_FAIL_REQUEST(lynq_pairwise_cmd);
             DO_OK_FAIL_REQUEST(lynq_psk_cmd);
@@ -2175,12 +2215,14 @@
 	}
 	case LYNQ_WIFI_AUTH_WPA3_PSK:
 	{
-            sprintf(lynq_auth_cmd,"SET_NETWORJ %d ieee80211w 2",net_no);
-            sprintf(lynq_ket_mgmt_cmd,"SET_NETWORJ %d key_mgmt SAE",net_no);
+           // sprintf(lynq_auth_cmd,"SET_NETWORK %d ieee80211w 2",net_no);
+            sprintf(lynq_auth_cmd,"wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 set_network %d ieee80211w 1",net_no);
+            sprintf(lynq_ket_mgmt_cmd,"SET_NETWORk %d key_mgmt SAE",net_no);
             sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise CCMP", net_no);
             sprintf(lynq_psk_cmd, "SET_NETWORK %d psk \"%s\"", net_no, password);
             
-	    DO_OK_FAIL_REQUEST(lynq_auth_cmd);
+	   // DO_OK_FAIL_REQUEST(lynq_auth_cmd);
+            system(lynq_auth_cmd);
             DO_OK_FAIL_REQUEST(lynq_ket_mgmt_cmd);
             DO_OK_FAIL_REQUEST(lynq_pairwise_cmd);
             DO_OK_FAIL_REQUEST(lynq_psk_cmd);
@@ -2625,12 +2667,14 @@
 
 int lynq_wifi_sta_start_scan(lynq_wifi_index_e idx)
 {
+    const char *clean_last_re ="wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 bss_flush";
     const char *lynq_scan_cmd = "SCAN";
 
     CHECK_IDX(idx, CTRL_STA);
 
     CHECK_WPA_CTRL(CTRL_STA);
 
+    system(clean_last_re);
     g_sta_scan_finish_flag = 0;
     DO_REQUEST(lynq_scan_cmd);
     if (reply_len >=9 && memcmp(cmd_reply, "FAIL-BUSY", 9) == 0 )
