The AP name is obtained from the WPS scan results (see new versions of
iw for how to parse this).
Then once the button on the AP is pushed, wpa_supplicant sends an event
WPS-AP-AVAILABLE-PBC. At that point, the scan results are checked (akin
wpa_cli scan_results
) whether the selected BSS contains WPS-PBC,
like this:
If it does, the button “Connect with WPS” becomes available. When
pressed, we do the equivalent of wpa_cli wps_pbc 00:1d:7e:4a:a1:ab
and wpa_supplicant does the rest, finally connecting to the network. We
then obtain the network key from wpa_supplicant’s network config stanza
and save it. Alternatively, we could do wps_cred_processing=1 and then
connect to the network once we have the credentials.
Note
This is how I got it working, I think it’s supposed to work the other
way around, you do wpa_cli wps_pbc <BSSID>
first, then it probes
the AP until the AP enables PBC. The other way around works for me as
well, but how do you discover that the AP is ready?