Open newHeiko opened 5 years ago
me too, thanks for the opening!
me too, I'm facing this problem :/
Found a temporary solution, DO NOT USE WiFi.mode (WIFI_AP_STA), works fine in WIFI_AP or WIFI_STA
When using both AP+STA, you need to start two different mDNS instances
MDNS.begin("name1", my-sta-IP-address)
and
MDNSResponder MDNS2;
MDNS2.begin("name2", my-ap-IP-addess)
...
// in loop()
MDNS.updtate();
MDNS2.update();
Still missing:
Found a temporary solution, DO NOT USE WiFi.mode (WIFI_AP_STA), works fine in WIFI_AP or WIFI_STA
I can confirm this workaround works, but... I also want to scan for available WiFi networks, which automatically switches back to WIFI_AP_STA. Mostly, I have the "configuration client" connected already when I initialize a scan, so I don't need the DHCP server anymore, but that's not a nice solution - so I'll stay with LWIP v1.4 for the time being.
Updated MCVE:
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.setTimeout(10);
Serial.setDebugOutput(true);
WiFi.begin("undef", "undef");
delay(5000);
// open an AP for configuration if connection failed
WiFi.disconnect();
WiFi.mode(WIFI_AP);
uint8_t mac[6];
WiFi.macAddress(mac);
String ssid = "wiClock-config" + String(mac[0], 16) + String(mac[5], 16);
WiFi.softAP(ssid.c_str());
MDNS.begin("config");
MDNS.addService("http", "tcp", 80);
}
void loop() {
MDNS.update();
static uint32_t timeout = 15000;
if(millis() > timeout)
{
Serial.println("Scanning for networks...");
int n = WiFi.scanNetworks();
for (int i = 0; i < n; i++)
{
Serial.println(WiFi.SSID(i));
}
timeout = millis() + 5000;
}
}
When using both AP+STA, you need to start two different mDNS instances
But... that only works if STA is connected, right? Also why should mDNS have any influence on the DHCP server at all?
Heiko
@newHeiko I tried your MCVE in OP and the one just above (using MDNS.begin("config", WiFi.softAPIP());
) with latest master and I got no dhcps message (and client connects).
Have you tried with latest up-to-date master ?
Have you tried with latest up-to-date master ?
No, sorry, I'm still on 2.5.2 (not 2.5.1 any more as per the OP)
Will check with master next week, I need a "stable" solution over the weekend. But it would be great if this is fixed :)
I'll also try explicitly specifying the WiFi.softAPIP() as you point out.
Thanks, Heiko
Just to clarify: Yesterday's updated MCVE only fails after the first scan reactivates STA mode. So if the client connects before and does not disconnect, the failure is dormant.
I am using 2.5.2 and I can conform that esp AP mode(only AP) has also same issue.i have tested more than a week without restart and I found the issue.
Basic Infos
Platform
Settings in IDE
Problem Description
I'm trying to connect to a WiFi on startup, wait for a timeout, then open an AP to allow the user to connect.
This works fine on lwip v1.4. This works fine on lwip v2 Higher Bandwith with MDNS disabled (lines starting with MDNS commented out of the MCVE below) This fails on lwip v2 Higher Bandwith with MDNS enabled - the client connects to the WiFi but does not receive an IP address and the Serial port debugging shows:
ERROR: dhcps send ack (error -13) ERROR: dhcps send ack (error -13) ERROR: send_offer (error -13) ERROR: send_offer (error -13)
Note: I have replaced all the "check for connection or timeout" handling with a simple delay(5000) in the MCVE below. Same problem.
[MCVE] Sketch
Debug Messages from serial port