I tried your script today to import a wpa_supplicant.conf from Android 7 (Fairphone Open OS) into Android 10 (Lineage 17.1), but it needed some changes to work. In the hope that this might benefit others, I'm documenting what I did here.
Without changes, the produced file produces the following logcat warning:
05-17 19:59:18.227 749 2676 E WifiConfigManager: XML deserialization of store failed. All saved networks are lost!
05-17 19:59:18.227 749 2676 E WifiConfigManager: org.xmlpull.v1.XmlPullParserException: Configuration key does not match. Retrieved: "Jodocus"-WPA_PSK, Calculated: "Jodocus"WPA_PSK
Comparing the system-generated file with the script-generated file confirms that there should not be a dash between the SSID and the keymgmt. Other changes are the file version number (1 vs 3), but that does not seem to matter, Android autobumps it. And some of the Allowed fields have a few more bits in the script-generated version (probably because the script allows everything by default). However, the AllowedProtocols field does seem to cause a problem:
05-17 20:04:17.656 741 2710 E SupplicantStaIfaceHal: java.lang.IllegalArgumentException: Invalid protoMask bit in wificonfig: 3
Bit 3 is WAPI, I suspect Android 10 does not support it anymore (here is also some docs with the WAPI value grayed out). Unsetting that bit, fixes the error.
With the changes below, I managed to import 63 of my networks (one failed, but that one is a bit weird in wpa_supplication.conf).
--- a/convert_wifi.pl
+++ b/convert_wifi.pl
@@ -77,8 +77,8 @@ ()
# 9 OWE - Opportunististic Wireless Encryption
# 10 SUITE_B_192
- #my $AllowedProtocols = '03'; # WPA1+WPA2
- my $AllowedProtocols = '0b'; # WPA1+WPA2+WAPI
+ my $AllowedProtocols = '03'; # WPA1+WPA2
+ #my $AllowedProtocols = '0b'; # WPA1+WPA2+WAPI
# https://developer.android.com/reference/android/net/wifi/WifiConfiguration.Protocol
# 0 WPA1 (deprecated)
# 1 RSN WPA2/WPA3/IEEE 802.11i
@@ -147,7 +147,7 @@ ()
}
$SSID = quote_xml $SSID;
- my $ConfigKey = "${SSID}-$key_mgmt";
+ my $ConfigKey = "${SSID}$key_mgmt";
my $priority = $CUR{priority} || 0;
# output main config block with all variables filled-in
I tried your script today to import a wpa_supplicant.conf from Android 7 (Fairphone Open OS) into Android 10 (Lineage 17.1), but it needed some changes to work. In the hope that this might benefit others, I'm documenting what I did here.
Without changes, the produced file produces the following logcat warning:
Comparing the system-generated file with the script-generated file confirms that there should not be a dash between the SSID and the keymgmt. Other changes are the file version number (1 vs 3), but that does not seem to matter, Android autobumps it. And some of the Allowed fields have a few more bits in the script-generated version (probably because the script allows everything by default). However, the AllowedProtocols field does seem to cause a problem:
Bit 3 is WAPI, I suspect Android 10 does not support it anymore (here is also some docs with the WAPI value grayed out). Unsetting that bit, fixes the error.
With the changes below, I managed to import 63 of my networks (one failed, but that one is a bit weird in wpa_supplication.conf).