esp-protocols-skill

Implements ESP-IDF networking components for cellular modems, mDNS, WebSocket, PPP links, and secure DNS.

28|3|Updated Jun 24, 2026
One-click install
npx skills add https://github.com/JasonYANG170/esp-dev-skill --skill esp-protocols-skill-jasonyang170
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: esp-protocols-skill
Source: https://github.com/JasonYANG170/esp-dev-skill/tree/main/repos/esp-protocols
Command: npx skills add https://github.com/JasonYANG170/esp-dev-skill --skill esp-protocols-skill-jasonyang170

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Developing with Espressif's esp-protocols components requires knowing exact APIs, Kconfig options, and initialization sequences; this Skill provides verified recipes, API references, and pitfall lists so generated firmware code compiles and works on real hardware. ## Core Features & Use Cases - Scenario Recipes: Step-by-step guides for PPPoS cellular dial-up, CMUX multiplexing, custom modem modules, mDNS advertise/query, WebSocket clients, eppp_link dual-MCU networking, DoT/DoH DNS, C++ MQTT clients, on-board Mosquitto brokers, and WiFi-AP-to-PPPoS NAPT gateways. - Verified API & Config Reference: Function signatures, structs, enums, and Kconfig options taken directly from esp_modem, mdns, esp_websocket_client, eppp_link, esp_dns, esp_mqtt_cxx, and mosquitto headers. - Pitfall Prevention: 13+ critical pitfalls with WRONG/CORRECT code pairs, such as creating the PPP netif before the DCE and never calling WebSocket stop/destroy inside event callbacks. - Use Case: Ask the agent to connect an ESP32-S3 to a SIM7600 modem over UART and share the connection to WiFi clients; it follows the ap_to_pppos recipe, enables NAPT Kconfig options, and generates the correct initialization sequence. ## Quick Start Ask the agent to use the esp-protocols skill to set up PPPoS dial-up with a SIM7600 modem on ESP-IDF v5 and generate the project code.

Frequently Asked Questions about esp-protocols-skill

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I connect an ESP32 to the internet using a SIM7600 modem?

Use the esp_modem component: create a PPP netif with ESP_NETIF_DEFAULT_PPP, then create the DCE with esp_modem_new_dev(ESP_MODEM_DCE_SIM7600, ...), and switch to ESP_MODEM_MODE_DATA. The IP address arrives via the IP_EVENT_PPP_GOT_IP event, so register IP_EVENT and NETIF_PPP_STATUS handlers first.

How to send AT commands while a PPP data session is active on esp_modem?

Use CMUX mode (ESP_MODEM_MODE_CMUX), which creates separate virtual channels for data and commands, or call esp_modem_pause_net to temporarily suspend the network. Note that SIM7000 does not support CMUX, and A76xx modules require disabling CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD.

Does esp_websocket_client support TLS and certificate bundles?

Yes, esp_websocket_client supports wss connections using cert_pem, use_global_ca_store, or crt_bundle_attach with esp_crt_bundle_attach for server verification. Never call stop, destroy, or close inside the event handler because those APIs self-deadlock; signal an external task instead.

Why does my mDNS service not appear on the network?

mDNS requires calling mdns_init() and mdns_hostname_set() before mdns_service_add(), otherwise publishing fails. Also confirm both devices are on the same multicast domain with UDP port 5353 allowed, and free query results with mdns_query_results_free to avoid memory leaks.

Can ESP32 act as a cellular router sharing modem internet over WiFi?

Yes, the ap_to_pppos example creates a WiFi soft-AP and forwards client traffic to the modem's PPP interface using lwIP NAPT. You must enable CONFIG_LWIP_IP_FORWARD and CONFIG_LWIP_IPV4_NAPT, then call ip_napt_enable on the AP interface IP and push the PPP DNS to DHCP clients.

What are the limitations of the mosquitto on-board MQTT broker?

mosq_broker_run blocks the calling thread rather than spawning its own task, so the calling task needs at least 5 kB of stack. Each connected client consumes about 4 kB of heap, and you must call mosq_broker_stop to unblock the run loop.