Two ESP32 features merged earlier this month for ESPHome 2026.11 came with limits. The WISP mode turns a board into a small Wi-Fi repeater with NAT, but it rejected captive_portal. The modem component connects an ESP32 to the internet through a cellular modem, but its first version left out signal-strength sensors. Three pull requests merged into the development branch on 24 and 25 October 2026 deal with both, and add an access point mode that simply stays on.
An access point that stays up
Until now the ap: block has been a fallback: the hotspot comes up when the board cannot join Wi-Fi. Pull request #20077 by nliaudat, merged on 25 October, adds ap_mode: ALWAYS_ON. The access point then runs next to the station connection, with no routing between the two networks. It cannot be combined with post_connect_roaming, so the example in the pull request sets post_connect_roaming: false.
The same pull request lets WISP use captive_portal. The portal follows the station connection. It is served while the upstream is down, after a 10-second grace period or at once when no station is configured, and while provisioning is open. When the station connects, the portal ends but the access point stays up. Until the upstream DNS works, DHCP gives clients the access point's own address as the resolver, so lookups reach the portal. Then the DHCP offer is rewritten and clients are dropped to pick up the new one.
Both options work on the ESP32 with either framework (Arduino or ESP-IDF), and the upstream can be the station, Ethernet or a modem. The default fallback access point and WISP without a portal behave as before.
Sharing a cellular connection
Pull request #21584 by oarcher, merged on 24 October, lets a WISP access point route traffic through the modem's network interface. An ESP32 with a cellular modem then works as a small hotspot. The example in the pull request is just an empty modem: block plus an ap: block with ap_mode: WISP.
Signal readings from the modem
Pull request #14683, also by oarcher and merged on 24 October, adds the sensors the first version skipped:
modem:
model: SIM7600
update_interval: 60s
sensor:
- platform: modem
rssi:
name: Signal
text_sensor:
- platform: modem
network_type:
name: Network type
rssi (in dBm, converted from AT+CSQ, and unknown when the modem reports 99) and ber, the bit error rate, work on every model. network_type decodes the SIM7600 family's AT+CNSMOD table, so it is limited to the SIM7600 and SIM7670. The new update_interval option sets how often the values are read. The modem's own task reads them, so the main loop never waits on the modem. A configuration without these platforms builds exactly as before.
The documentation for both modem changes is already merged (esphome.io #7895 and #7897). The page for the always-on access point and the WISP portal is still an open pull request (esphome.io #7687).