Closed
Description
Board
ESP32S3
Device Description
ESP32S2 Dev Module
Hardware Configuration
ESP32S2 Dev Module
Version
latest master (checkout manually)
IDE Name
Arduino IDE 2.3.2
Operating System
Windows 10
Flash frequency
240MHz
PSRAM enabled
no
Upload speed
115200
Description
When using the WPS example from the WiFi library with esp32 version 3.0.2, it compiles perfectly, but when it starts the WPS function returns with the message "WPS Enable Failed" in the serial. This does not occur in version 2.0.17 or earlier. It works perfectly. What to do? Any suggestion? I await your response, thank you very much for your attention.
Sketch
/*
Example Code To Get ESP32 To Connect To A Router Using WPS
===========================================================
This example code provides both Push Button method and Pin
based WPS entry to get your ESP connected to your WiFi router.
Hardware Requirements
========================
ESP32 and a Router having WPS functionality
This code is under Public Domain License.
Author:
Pranav Cherukupalli <[email protected]>
*/
#include "WiFi.h"
#include "esp_wps.h"
/*
Change the definition of the WPS mode
from WPS_TYPE_PBC to WPS_TYPE_PIN in
the case that you are using pin type
WPS
*/
#define ESP_WPS_MODE WPS_TYPE_PBC
#define ESP_MANUFACTURER "ESPRESSIF"
#define ESP_MODEL_NUMBER "ESP32-S3"
#define ESP_MODEL_NAME "ESP32S3 Dev Module"
#define ESP_DEVICE_NAME "ESP STATION"
static esp_wps_config_t config;
void wpsInitConfig() {
config.wps_type = ESP_WPS_MODE;
strcpy(config.factory_info.manufacturer, ESP_MANUFACTURER);
strcpy(config.factory_info.model_number, ESP_MODEL_NUMBER);
strcpy(config.factory_info.model_name, ESP_MODEL_NAME);
strcpy(config.factory_info.device_name, ESP_DEVICE_NAME);
}
void wpsStart() {
if (esp_wifi_wps_enable(&config)) {
Serial.println("WPS Enable Failed");
} else if (esp_wifi_wps_start(0)) {
Serial.println("WPS Start Failed");
}
}
void wpsStop() {
if (esp_wifi_wps_disable()) {
Serial.println("WPS Disable Failed");
}
}
String wpspin2string(uint8_t a[]) {
char wps_pin[9];
for (int i = 0; i < 8; i++) {
wps_pin[i] = a[i];
}
wps_pin[8] = '\0';
return (String)wps_pin;
}
// WARNING: WiFiEvent is called from a separate FreeRTOS task (thread)!
void WiFiEvent(WiFiEvent_t event, arduino_event_info_t info) {
switch (event) {
case ARDUINO_EVENT_WIFI_STA_START: Serial.println("Station Mode Started"); break;
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
Serial.println("Connected to: " + String(WiFi.SSID()));
Serial.println("Password: " + String(WiFi.psk()));
Serial.print("Got IP: ");
Serial.println(WiFi.localIP());
break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
Serial.println("Disconnected from station, attempting reconnection");
WiFi.reconnect();
break;
case ARDUINO_EVENT_WPS_ER_SUCCESS:
Serial.println("WPS Successful, stopping WPS and connecting to: " + String(WiFi.SSID()));
wpsStop();
delay(10);
WiFi.begin();
break;
case ARDUINO_EVENT_WPS_ER_FAILED:
Serial.println("WPS Failed, retrying");
wpsStop();
wpsStart();
break;
case ARDUINO_EVENT_WPS_ER_TIMEOUT:
Serial.println("WPS Timedout, retrying");
wpsStop();
wpsStart();
break;
case ARDUINO_EVENT_WPS_ER_PIN: Serial.println("WPS_PIN = " + wpspin2string(info.wps_er_pin.pin_code)); break;
default: break;
}
}
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
WiFi.onEvent(WiFiEvent); // Will call WiFiEvent() from another thread.
WiFi.mode(WIFI_MODE_STA);
Serial.println("Starting WPS");
wpsInitConfig();
delay(1000);
wpsStart();
}
void loop() {
//nothing to do here
}
Debug Message
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3818,len:0x508
load:0x403c9700,len:0x4
load:0x403c9704,len:0xad0
load:0x403cc700,len:0x29e4
entry 0x403c9880
Starting WPS
WPS Enable Failed
Station Mode Started
Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide
- I confirm I have checked existing issues, online documentation and Troubleshooting guide.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Done