Support WPS (Wifi Protected Setup)
Wifi Protected Setup simplifies connecting to Wireless LAN networks (in home environments) by allowing the user to either press a button on the router or enter a PIN on the client instead of entering the full PSK (pre-shared key, i.e. WPA2 password).
NetworkManager already has support for the push button method and this method simply works currently. The PIN method needs a bit more investigation (support seems there, but I am not sure how to pass the Pin to network manager).
So:
- We support the push button method, and we can easily support the PIN method
- We know whether WPS is supported before connecting (the AP announces this information).
- There is an official "WPS" logo from the Wi-Fi Alliance. Routers generally either use this logo or the string "WPS" for the button. Buttons may also be virtual and use more elaborate strings. Examples:
- There are further methods, which we are both rare and unsupported on our side.
Currently the following two variants work (push button method):
- User pushes button on router
- User connects to WiFi on Laptop (within 2 minutes of pushing the button)
- Authentication dialog appears
- User is automatically connected and dialog disappears
or:
- User tries to connect to WiFi on Laptop
- User is presented with credentials dialog
- User pushes button on router
- Wifi automatically connects and dialog disappears
https://bugzilla.gnome.org/show_bug.cgi?id=785493 contains a possible patch and screenshot from other operating systems.
Ideally, we can also support the pin method (requires NetworkManager changes). However, it seems there are some caveats to support this. The main issue is, that it appears we need to choose between the method before trying to connect and we would also need to prompt for the pin at that time. So the flow could for example be:
- User tries to connect to WiFi
- We ask the user for the pin for the pin method, but tell them that it is possible to continue otherwise
- When a pin is given, we connect using that
- When no pin is given, we enable the push button method when available, resulting in the same user interaction as above.