How to fix ESP32 lwIP: assert failed: tcpip_inpkt (Invalid mbox)
Problem
Your microcontroller crashes with an assertion failure like
lwip_assert_failed.txt
assert failed: tcpip_inpkt /IDF/components/lwip/lwip/src/api/tcpip.c:252 (Invalid mbox)Solution
This error occurs because the TCP/IP stack has not been initialized before using it.
Note that esp_netif_init() calls tcpip_init() internally, so you don’t need to call tcpip_init() if you’re using esp_netif_init():
esp32_tcpip_init.cpp
#include <lwip/tcpip.h>
#include <esp_netif.h>
void setup() {
// Call this early in your setup function!
esp_netif_init();
}In case you don’t use the ESP high-level stack, make sure to call tcpip_init(nullptr, nullptr) before using any lwIP functions.
esp32_tcpip_init_only.cpp
#include <lwip/tcpip.h>
void setup() {
// Call this early in your setup function!
tcpip_init(nullptr, nullptr);
}If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow