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:
- Choose GPRS as the network mode.
- Select the board profile (
t-callort-sim7070g) to auto-fill the modem pins. - Enter the APN and SIM PIN if needed.
- Set the Management Protocol server to a public address.
- Provision and flash.