HS20 support
Closed this issue · 5 comments
The eap-config files generated by CAT and geteduroam contain the following:
<CredentialApplicability>
<IEEE80211>
<SSID>eduroam</SSID>
<MinRSNProto>CCMP</MinRSNProto>
</IEEE80211>
</CredentialApplicability>
<CredentialApplicability>
<IEEE80211>
<ConsortiumOID>001bc50460</ConsortiumOID>
</IEEE80211>
</CredentialApplicability>
This indicates that the network should be configured on SSID eduroam
, but also HS20 ConsortiumOID 001bc50460
.
On platforms where this is supported, the app should configure both SSID and HS20. HS20 is sometimes also called Passpoint.
Clarifications after a question from @agomezmoron on Slack:
The domain is optional in HS20, but iOS and Android require it to be set. Set it to the value of the ID
attribute in EAPIdentityProvider. So <EAPIdentityProvider ID="edu.nl" namespace="urn:RFC4282:realm" lang="nb" version="1">
gives domain edu.nl
.
The display name is a harder problem, and I don't have a good solution. Use DisplayName
in ProviderInfo
for now, I'll ask around if we should add a tag for this.
Hi @jornane, to ensure we are in the same page:
- FQDN: we will get the ID from EAPIdentityProvider
- providerFriendlyName: we will use the DisplayName from EAPIdentityProvider
- roamingconsortiumIDs: We are not able to fill them now (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/WifiConfiguration.java#636) Android wants a List of long and what we have is not a list of longs.
- FQDN: correct, use EAPIdentityProvider
- providerFriendlyName: correct, use DisplayName - I noticed that profiles may lack a profile name, so please add some default value, maybe
geteduroam configured HS20
- roamingconsortiumIDs: This is actually the most important thing to configure. The value is always a HEX string, so maybe you can convert it to a long? The standard value of
001bc50460
should become465896544
for big endian, try with this Java code:return Long.decode("0x001bc50460")
Adding also the message from Slack: The existence of a IEEE80211 with ConsortiumOID indicates that HS20 support is available
Thanks @jornane for the info :)
The support for AndroidQ is not yet available:
The documentation says for Passpoint: https://developer.android.com/reference/android/net/wifi/WifiNetworkSuggestion.Builder#setPasspointConfig(android.net.wifi.hotspot2.PasspointConfiguration) (that it's in the API Level 30, Android Q is 29 or higher).
On the other side, if we go to the source code that Google has published in the master branch...https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/WifiNetworkSuggestion.java that class doesn't have yet that method (but the class to configure Passpoint exists https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java)
So, by now, it's not feasible (Android has released the api level 29, not the 30 yet) https://developer.android.com/studio/releases/platforms
We will leave "//TODO" block to cover that in the future (as soon as the API 30 is released and we will be able to see the source code and how it's handled to create a proper object for Passpoint).