Consider the following situation:
I do have two Raspberry Pi Model 3, one of them running the latest Raspbian, the other one running LEDE. Now I've configured hostapd on both, using the default WPS enabled config for openWRT / LEDE, like suggested e.g. here:
While the LEDE Pi is running nicely, the Raspbian Pi won't let me use WPS - any connection attempt times out.
Also the Raspbian Pi does not advertise WPS, while the LEDE Pi does so (e.g. the wifi entry for the device shows "WPS available" on my smartphone).
As I already checked the Raspian hostapd for having set the correct build options (read: compiled it myself having the necessary options enabled), I reckon the problem being somewhere in the configuration of the devices.
Can anybody point me out, if there's more configuration needed than having the hostapd.conf set up accordingly ?
What is the exact meaning of the wps_pushbutton=1 option for the LEDE wireless config ?
Is it only needed to generate the hostapd.conf, or is there any other step I'm missing ?
How can the very same software setup and config produce different outcomes on LEDE vs Raspbian ?
hostapd.conf for the radio is likely the only config file that you need at the end. Not quite sure if the wpa_supplicant needs anything. In Openwrt/LEDE the wps things are translated from uci settings to hostapd.conf, so you might check the hpstapd init script (in netifd?)
You might need additional packages that provide hostapd_cli etc. utils, at least for testing the wps functionality (and for activating/triggering the wps polling, when needed). Not sure what gets installed by default in Raspbian.
Some hostapd versions do not like if you have different wps settings for different interfaces on the same radio: https://dev.openwrt.org/ticket/19485
hynman, thank you for your reply.
I've read trough the links you provided but couldn't find anything that could take me further.
On the other hand, I noticed that there is a minor difference in between the config outputs of both devices:
hostapd_cli get_config shows wpa=2 on the LEDE device, on the Raspian this output is missing.
Also, hoping that may help, here's the startup log of the Raspbian device's hostapd:
# Config Methods
# List of the supported configuration methods
# Available methods: usba ethernet label display ext_nfc_token int_nfc_token
# nfc_interface push_button keypad virtual_display physical_display
# virtual_push_button physical_push_button
#config_methods=label virtual_display virtual_push_button keypad
# WPS capability discovery workaround for PBC with Windows 7
# Windows 7 uses incorrect way of figuring out AP's WPS capabilities by acting
# as a Registrar and using M1 from the AP. The config methods attribute in that
# message is supposed to indicate only the configuration method supported by
# the AP in Enrollee role, i.e., to add an external Registrar. For that case,
# PBC shall not be used and as such, the PushButton config method is removed
# from M1 by default. If pbc_in_m1=1 is included in the configuration file,
# the PushButton config method is left in M1 (if included in config_methods
# parameter) to allow Windows 7 to use PBC instead of PIN (e.g., from a label
# in the AP).
#pbc_in_m1=1
# Static access point PIN for initial configuration and adding Registrars
# If not set, hostapd will not allow external WPS Registrars to control the
# access point. The AP PIN can also be set at runtime with hostapd_cli
# wps_ap_pin command. Use of temporary (enabled by user action) and random
# AP PIN is much more secure than configuring a static AP PIN here. As such,
# use of the ap_pin parameter is not recommended if the AP device has means for
# displaying a random PIN.
#ap_pin=12345670