Skip to content

Needs changes for Android 10 (Lineage 17) #6

@matthijskooijman

Description

@matthijskooijman

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

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions