You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/workflows/ci.yml
+1Lines changed: 1 addition & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -103,6 +103,7 @@ jobs:
103
103
- run: PLATFORMIO_BUILD_FLAGS="-DESPCONNECT_NO_STD_STRING" PLATFORMIO_SRC_DIR=examples/AdvancedCaptivePortal PIO_BOARD=${{ matrix.board }} PIO_PLATFORM=${{ matrix.platform }} pio run -e ci
104
104
- run: PLATFORMIO_BUILD_FLAGS="-DESPCONNECT_NO_CAPTIVE_PORTAL" PLATFORMIO_SRC_DIR=examples/NoCaptivePortal PIO_BOARD=${{ matrix.board }} PIO_PLATFORM=${{ matrix.platform }} pio run -e ci
105
105
- run: PLATFORMIO_BUILD_FLAGS="-DESPCONNECT_NO_LOGGING" PLATFORMIO_SRC_DIR=examples/AdvancedCaptivePortal PIO_BOARD=${{ matrix.board }} PIO_PLATFORM=${{ matrix.platform }} pio run -e ci
106
+
- run: PLATFORMIO_BUILD_FLAGS="-DESPCONNECT_NO_COMPAT_CP" PLATFORMIO_SRC_DIR=examples/AdvancedCaptivePortal PIO_BOARD=${{ matrix.board }} PIO_PLATFORM=${{ matrix.platform }} pio run -e ci
@@ -235,6 +238,25 @@ You can customize the logo by providing a web handler for `/logo`:
235
238
```
236
239
237
240
If not provided, the logo won't appear in the Captive Portal.
241
+
### Captive Portal Detection Endpoints
242
+
243
+
MycilaESPConnect implements multi-platform captive portal detection by providing specific endpoints that different operating systems use to test internet connectivity. When a device connects to the ESP32's WiFi network, it automatically performs these tests. If the responses don't match expectations (redirections instead of expected content), the system automatically triggers the captive portal interface.
| `/connecttest.txt` | Microsoft Windows | Windows connectivity test | Redirects to `http://logout.net` | Triggers Windows captive portal detection |
248
+
| `/wpad.dat` | All systems | Web Proxy Auto-Discovery Protocol | Returns 404 error | Indicates no proxy configuration is provided |
249
+
| `/generate_204` | Android | Android connectivity test | Redirects to WiFi Access Point IP | Triggers captive portal when Android detects no internet |
| `/hotspot-detect.html` | Apple iOS/macOS | Apple hotspot detection | Redirects to WiFi Access Point IP | Triggers captive portal when Apple devices detect connectivity issues |
252
+
| `/canonical.html` | Ubuntu/Linux | Ubuntu/Linux connectivity test | Redirects to captive portal configuration page | Activates captive portal on Linux systems |
253
+
| `/success.txt` | Microsoft | Microsoft connectivity success page | Returns 200 OK status | Indicates successful connection for Microsoft tests |
254
+
| `/ncsi.txt` | Microsoft | Network Connectivity Status Indicator | Redirects to portal for configuration | Handles Microsoft network connectivity status indicator |
255
+
| `/startpage` | Generic | Generic start page | Redirects to main captive portal interface | Provides generic entry point to portal |
256
+
257
+
**Note**: This functionality can be disabled by setting the compile flag `-D ESPCONNECT_NO_COMPAT_CP`, which will save approximately 2KB of flash memory but may reduce captive portal detection reliability on some devices.
258
+
259
+
This approach ensures a smooth user experience across all devices without manual intervention, automatically guiding users to the network configuration interface when they connect to the ESP32's access point.
238
260
239
261
### mDNS
240
262
@@ -248,3 +270,5 @@ You can disable it by setting `-D ESPCONNECT_NO_MDNS`.
248
270
- `-D ESPCONNECT_NO_CAPTIVE_PORTAL`: disable Captive Portal and ESPAsyncWebServer dependency
249
271
- `-D ESPCONNECT_NO_STD_STRING`: use Arduino `String` instead of `std::string`
0 commit comments