diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 70f7ac2..6c45654 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -834,31 +834,31 @@
 static lynq_wifi_auth_s convert_max_auth_from_flag(char * flag) {
     if (flag != NULL)
     {
-        if (strstr( flag, "WPA2-PSK") != NULL)
-	{
+        if ( strstr(flag, "SHA256") != NULL || strstr(flag,"WPA2-SAE") != NULL || strstr(flag,"SAE-H2E") != NULL)
+        {
+            return LYNQ_WIFI_AUTH_WPA3_PSK;
+        }else if ( strstr( flag,"SAE-CCMP") != NULL )
+        {
+            return LYNQ_WIFI_AUTH_WPA2_WPA3_PSK;
+        }else if (strstr( flag, "WPA2-PSK") != NULL)
+        {
             return LYNQ_WIFI_AUTH_WPA2_PSK;
         }
         else if (strstr( flag, "WPA-PSK") != NULL)
-	{
+        {
             return LYNQ_WIFI_AUTH_WPA_PSK;
         }
         else if (strstr( flag, "WEP") != NULL)
-	{
+        {
             return LYNQ_WIFI_AUTH_WEP;
         }
         else if (strstr( flag, "NONE") != NULL)
-	{
+        {
             return LYNQ_WIFI_AUTH_OPEN;
         }
         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;
         }
     }
 
@@ -1387,7 +1387,7 @@
 	{
             sprintf(lynq_auth_cmd,"SET_NETWORK %d proto WPA2", AP_NETWORK_0);
             sprintf(lynq_ieee80211_cmd,"SET_NETWORK %d ieee80211w 2", AP_NETWORK_0);
-            sprintf(lynq_psk_cmd,"SET_NETWORK %d key_mgmt WPA-PSK SAE", AP_NETWORK_0);
+            sprintf(lynq_psk_cmd,"SET_NETWORK %d key_mgmt SAE", AP_NETWORK_0);
             sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise CCMP", AP_NETWORK_0);
 
             DO_OK_FAIL_REQUEST(lynq_auth_cmd);
@@ -2082,7 +2082,7 @@
     }
 
     lynq_wifi_sta_start_scan(idx);
-
+    sleep(2);
     if (0 != lynq_get_scan_list(0, &scan_list, &scan_len))
     {
         if (NULL != scan_list)
@@ -2199,14 +2199,12 @@
         }	
 	case LYNQ_WIFI_AUTH_WPA2_WPA3_PSK:
 	{
-            //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_auth_cmd,"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);
-	    system(lynq_auth_cmd);
+	    DO_OK_FAIL_REQUEST(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);
@@ -2215,14 +2213,12 @@
 	}
 	case LYNQ_WIFI_AUTH_WPA3_PSK:
 	{
-           // 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_auth_cmd,"SET_NETWORK %d ieee80211w 2",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);
-            system(lynq_auth_cmd);
+	    DO_OK_FAIL_REQUEST(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);
