Test DHCP-renewal wedge hypothesis: fully static IP on 2.12 pair
Test, Build and Push / test-gateway (push) Successful in 10s
Test, Build and Push / release (push) Skipped
Test, Build and Push / build-gateway (push) Skipped

The wedge metronome (~300s: 297/297/322/437s across bus widths,
clocks, and power modes) matches FRITZ DHCP T1 renewal at half of a
10-min lease. Every wedging build ran an active dhcp client. Static
addressing removes the renewal TX path entirely; if the metronome
dies, root cause #2 is the DHCP renew packet through hosted's write
path. (2.9.7 experiment abandoned: slave image bootloops/rolls back
on this C6; version matrix documented for upstream.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 01:57:16 +02:00
co-authored by Claude Fable 5
parent e5c8a38f94
commit fe82a7a22d
2 changed files with 4 additions and 4 deletions
Binary file not shown.
+4 -4
View File
@@ -21,14 +21,14 @@ static volatile bool s_got_ip;
static void start_ping_diag(void);
static void ping_diag_task(void *arg);
/* Router DHCP has been observed to go silent for this MAC (flap throttling).
* After 15 s without a lease, claim the previously granted address statically. */
/* Fully static addressing: every observed SDIO wedge (~300 s uptime) coincides
* with the DHCP T1 renewal window, so the DHCP client stays out of the picture. */
static void static_ip_fallback(void *arg)
{
(void)arg;
vTaskDelay(pdMS_TO_TICKS(15000));
vTaskDelay(pdMS_TO_TICKS(1000));
if (!s_got_ip) {
ESP_LOGW(TAG, "no DHCP lease after 15s — falling back to static 192.168.86.53");
ESP_LOGI(TAG, "static addressing: 192.168.86.53 (DHCP client disabled)");
esp_netif_dhcpc_stop(s_netif);
esp_netif_ip_info_t ip = { 0 };
ip.ip.addr = esp_ip4addr_aton("192.168.86.53");