Skip to content

GPRS and Cellular Boards

For deployments without WiFi, Espilon supports ESP32 boards with an onboard cellular modem. The agent connects over PPP/cellular instead of WiFi, so a device can phone home from anywhere with coverage.

Supported boards

Board ESP32 Modem Cellular
LilyGO T-Call v1.4 ESP32 classic SIM800L 2G GPRS
LilyGO T-SIM7070G ESP32 classic SIM7070G LTE-M / NB-IoT / GPRS

Pin maps

These are the firmware board overlays (configs/boards/). The pins are written into NVS at provisioning, not compiled into a generic binary.

Signal T-Call T-SIM7070G
UART TX 17 27
UART RX 16 26
PWRKEY 4 4
RESET 5 -1
PWR_EN 23 25

Use these values for the T-Call

The C3PO provisioning board profile for t-call currently lists TX=27/RX=26 (the T-SIM7070G pins). The hardware-correct T-Call values are TX=17 / RX=16, matching the firmware overlay. Verify against your board if a T-Call modem does not respond.

How a GPRS device connects

flowchart TD
    A["gprs_init()"] --> B["load modem pins from NVS"]
    B --> C["power on modem (PWRKEY sequence)"]
    C --> D["esp_modem DTE (UART1) + DCE (APN)"]
    D --> E["unlock SIM (if PIN set)"]
    E --> F["set DATA mode -> PPP negotiation"]
    F --> G["IP_EVENT_PPP_GOT_IP -> start C2 client"]

APN

The APN is stored in NVS (gprs_apn), default sl2sfr (SFR). Common alternatives: orange.fr, free. Set it in the Provision view.

Public server required

A GPRS device is on the carrier's internet, not your LAN. The Management Protocol server address you provision must be a public IP reachable from the cellular network.

Provisioning a GPRS device

In the C3PO Provision view:

  1. Choose GPRS as the network mode.
  2. Select the board profile (t-call or t-sim7070g) to auto-fill the modem pins.
  3. Enter the APN and SIM PIN if needed.
  4. Set the Management Protocol server to a public address.
  5. Provision and flash.

See also