问题现象:
如果WIFI模组不支持WPA3/SAE模式:
- 在android 11 (R)之前,可以正常WPA2+WPA3 混合的路由器,
- 系统升级到android R时,相同WIFI模组和app软体,虽然app配置的是以WPA2来连接此路由器,但始终连接不上WPA2+WPA3 混合的路由器。如果把路由器安全模式改为WPA2 (不含WPA3),还是可以连接。
分析过程:
修改wpa_supplicant ,关闭WPA3、SAE的支持能力,还是不行。
打开WIFI verbose logging,看到如下log,表明在android R的frameworks代码中,如果路由器支持WPA3/SAE,则会强制从WPA/WPA2切换为WPA3的连接方式,因此导致连接失败。
05-10 07:44:39.808 2841 3146 D WifiClientModeImpl: Upgrade legacy WPA/WPA2 connection to WPA3
05-10 07:44:42.505 2841 3146 D WifiClientModeImpl: Upgrade legacy WPA/WPA2 connection to WPA3
05-10 07:45:03.244 3235 3235 D wpa_supplicant: wlan0: 4: 34:46:ec:6c:41:78 ssid='HUAWEI-WIFI6_5G' wpa_ie_len=0 rsn_ie_len=24 caps=0x1531 level=-58 freq=5745 wps
05-10 07:45:03.244 3235 3235 D wpa_supplicant: wlan0: ie.key_mgmt=0x2, ssid->key_mgmt=0x400
05-10 07:45:03.244 3235 3235 D wpa_supplicant: wlan0: skip RSN IE - key mgmt mismatch
05-10 07:45:03.244 3235 3235 D wpa_supplicant: wpas_get_ssid_pmf ieee80211w=2, key_mgmt=1024, ssid=HUAWEI-WIFI6_5G
05-10 07:45:03.244 3235 3235 D wpa_supplicant: wpas_get_ssid_pmf pmf=0
分析frameworks代码流程,并在frameworks/opt/net/wifi/service/res/values/config.xml,看到config_wifiSaeUpgradeEnabled设置为true,这是问题本质原因。
解决方法:
config.xml中config_wifiSaeUpgradeEnabled改为false后(或用overlay的方式),重新编译系统,WIFI成功连接上WPA2+WPA3 混合的路由器