Repository navigation
supported_module_functions_supported module functions
Sara Damiano edited this page Oct 27, 2026
·
1 revision
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TinyGsm(Stream& stream) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TinyGsm(Stream& stream, int8_t resetPin) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| begin(const char* pin=nullptr) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| init(const char* pin=nullptr) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| sendAT(Args... cmd) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| setBaud(uint32_t baud) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| setDefaultBaud(uint32_t baud) | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| forceModemBaud(StreamObject& at_serial, uint32_t targetBaud) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| testAT(uint32_t timeout_ms=10000L) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| waitResponse(uint32_t timeout_ms, String& data, GsmConstStr r1=GFP(ModemConfig::GSM_OK), GsmConstStr r2=GFP(ModemConfig::GSM_ERROR), GsmConstStr r3=nullptr, GsmConstStr r4=nullptr, GsmConstStr r5=nullptr, GsmConstStr r6=nullptr, GsmConstStr r7=nullptr, GsmConstStr r8=nullptr) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| waitResponse(uint32_t timeout_ms, GsmConstStr r1=GFP(ModemConfig::GSM_OK), GsmConstStr r2=GFP(ModemConfig::GSM_ERROR), GsmConstStr r3=nullptr, GsmConstStr r4=nullptr, GsmConstStr r5=nullptr, GsmConstStr r6=nullptr, GsmConstStr r7=nullptr, GsmConstStr r8=nullptr) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| waitResponse(GsmConstStr r1=GFP(ModemConfig::GSM_OK), GsmConstStr r2=GFP(ModemConfig::GSM_ERROR), GsmConstStr r3=nullptr, GsmConstStr r4=nullptr, GsmConstStr r5=nullptr, GsmConstStr r6=nullptr, GsmConstStr r7=nullptr, GsmConstStr r8=nullptr) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getConfiguredModem() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getModemInfo() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getModemName() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getModemManufacturer() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getModemModel() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getModemRevision() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getModemSerialNumber() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| factoryDefault() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restart(const char* pin=nullptr) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| powerOff() | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| radioOff() | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| sleepEnable(bool enable=true) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| setPhoneFunctionality(uint8_t fun, bool reset=false) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getLocalIPSecure() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getRegistrationStatus() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| isNetworkConnected() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| waitForNetwork(uint32_t timeout_ms=60000L, bool check_signal=false) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getSignalQuality() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getLocalIP() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| localIP() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getNetworkModes() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setRadioAccessTechnology(uint8_t, uint8_t) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| getCurrentRadioAccessTechnology() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ |
| getNetworkMode() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setNetworkMode(uint8_t mode) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getPreferredModes() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getPreferredMode() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setPreferredMode(uint8_t mode) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getNetworkSystemMode(bool& n, int16_t& stat) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setNetworkSystemMode(bool n) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| simUnlock(const char* pin) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getSimCCID() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getIMEI() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getIMSI() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getSimStatus(uint32_t timeout_ms=10000L) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dataConnect(const charapn, const char user=nullptr, const char* pwd=nullptr) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| dataDisconnect() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| isDataConnected() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| gprsConnect(const charapn, const char user=nullptr, const char* pwd=nullptr) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| gprsDisconnect() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| isGprsConnected() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getOperator() | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getProvider() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| networkConnect(const charssid, const char pwd) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| networkDisconnect() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| maintain() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| loadCACert(uint8_t certNumber, const char* cert, const uint16_t len) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadCertificate(const charcertificateName, const char cert, const uint16_t len) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadCertificate(const char* certificateName, GsmConstStr cert, const uint16_t len) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadClientCert(uint8_t certNumber, const char* cert, const uint16_t len) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadCertificate(const String& certificateName, const String& cert, const uint16_t len) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadPrivateKey(uint8_t keyNumber, const char* key, const uint16_t len) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadCertificateByNumber(CertificateType cert_type, uint8_t certNumber, const char* cert, const uint16_t len) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| loadCertificateByNumber(CertificateType cert_type, uint8_t certNumber, GsmConstStr cert, const uint16_t len) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| printCertificate(const char* filename, Stream& print_stream) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| deleteCertificateByNumber(CertificateType cert_type, uint8_t certNumber) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| printCertificate(const String& filename, Stream& print_stream) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertCertificate(CertificateType cert_type, const char* filename) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| printCertificateByNumber(CertificateType cert_type, uint8_t certNumber, Stream& print_stream) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertCertificate(CertificateType cert_type, const String& filename) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertCACertificate(const char* ca_cert_name) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertCACertificate(const String& ca_cert_name) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertClientCertificates(const charclient_cert_name, const char client_cert_key) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertClientCertificates(const String& client_cert_name, const String& client_cert_key) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertPSKTable(const char* psk_table_name) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| convertPSKTable(const String& psk_table_name) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| configureSSLContext(uint8_t context_id, SSLAuthMode sslAuthMode, SSLVersion sslVersion) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| configureSSLContext(uint8_t context_id, SSLAuthMode sslAuthMode, SSLVersion sslVersion, const charCAcertName, const char clientCertName, const char* clientKeyName) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| configureSSLContext(uint8_t context_id) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| configureSSLSNI(uint8_t context_id, const char* sni) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| applySSLCertificates(uint8_t mux, uint8_t context_id, SSLAuthMode sslAuthMode, const charCAcertName, const char clientCertName, const char* clientKeyName) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| applySSLCertificates(uint8_t mux, uint8_t context_id) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| applySSLPSK(uint8_t mux, uint8_t context_id, const char* pskTableName) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| applySSLPSK(uint8_t mux, uint8_t context_id) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| linkSSLContext(uint8_t mux, uint8_t context_id) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| callAnswer() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ |
| setGsmBusy(bool busy=true) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| callNumber(const String& number) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| callHangup() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| dtmfSend(char cmd, int duration_ms=100) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| audioSetHeadphones() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setVolume(uint8_t volume=50) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| audioSetSpeaker() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getVolume() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| audioMuteMic(bool mute) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setMicVolume(uint8_t channel, uint8_t level) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| setAudioChannel(uint8_t channel) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| playToolkitTone(uint8_t tone, uint32_t duration) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sendUSSD(const String& code) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| deleteAllSMS() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| sendSMS(const String& number, const String& text) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| sendSMS_UTF16(const charconst number, const void text, size_t len) | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getGsmLocationRaw() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| getGsmLocation() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| getGsmLocation(floatlat, float lon, floataccuracy=0, int year=0, intmonth=0, int day=0, inthour=0, int minute=0, int* second=0) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| getGsmLocationTime(intyear, int month, intday, int hour, intminute, int second) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| enableGPS() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| disableGPS() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| getGPSraw() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| getGPS(floatlat, float lon, floatspeed=0, float alt=0, intvsat=0, int usat=0, floataccuracy=0, int year=0, intmonth=0, int day=0, inthour=0, int minute=0, int* second=0) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| getGPSTime(intyear, int month, intday, int hour, intminute, int second) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| setGNSSMode(uint8_t mode, bool dpo) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getGNSSMode() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| NTPServerSync(const char* server="pool.ntp.org", int TimeZone=0) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| NTPServerSync(const String& server, int TimeZone=0) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| waitForTimeSync(uint16_t timeout_s=120) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getGSMDateTime(TinyGSMDateTimeFormat format) | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| setTimeZone(int8_t timezone, bool enable_sync=true) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getNetworkTime(intyear, int month, intday, int hour, intminute, int second, float* timezone) | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| setTimeSyncInterval(uint16_t seconds) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getNetworkUTCTime(intyear, int month, intday, int hour, intminute, int second, float* timezone) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getNetworkEpoch(TinyGSM_EpochStart epoch=TinyGSM_EpochStart::UNIX) | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getBattVoltage() | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| getBattPercent() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| getBattChargeState() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| getBattStats(int8_t& chargeState, int8_t& percent, int16_t& milliVolts) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getTemperature() | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| streamPrint(T last) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| streamPrint(T head, Args... tail) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| streamWrite(const char* data, uint16_t len) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| streamWrite(GsmConstStr data, uint16_t len) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| streamClear() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| streamDump(int16_t expected_len) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| getBeeType() | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getBeeName() | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getSeries(void) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| commandMode(uint8_t retries=5) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| writeChanges(void) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| exitCommand(void) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| exitAndFail(void) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| readResponseString(uint32_t timeout_ms=1000L) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| readResponseInt(uint32_t timeout_ms=1000L) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| sendATGetString(GsmConstStr cmd) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| changeSettingIfNeeded(commandType cmd, uint16_t newValue, uint32_t timeout_ms=1000L) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| changeSettingIfNeeded(commandType cmd, String newValue, uint32_t timeout_ms=1000L) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TinyGsmClient() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TinyGsmClient(TinyGsm& modem) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| TinyGsmClient(TinyGsm& modem, uint8_t mux=0) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| init(TinyGsm* modem) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| init(TinyGsm* modem, uint8_t mux) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| init(TinyGsm* modem, uint8_t mux=0) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| connect(const char* host, uint16_t port, int timeout_s) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connect(IPAddress ip, uint16_t port, int timeout_s) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connect(const char* host, uint16_t port) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connect(IPAddress ip, uint16_t port) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| stop(uint32_t maxWaitMs) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| stop() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| write(const uint8_t* buf, size_t size) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| write(uint8_t c) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| available() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| read(uint8_t* buf, size_t size) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| read() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| peek() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| flush() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connected() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| remoteIP() | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getMux() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getConnectionID() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| beginWrite(uint16_t size) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| endWrite(uint16_t expected_size=0) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TinyGsmClientSecure() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TinyGsmClientSecure(TinyGsm& modem) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| TinyGsmClientSecure(TinyGsm& modem, uint8_t mux=0) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TinyGsmClientSecure(TinyGsm& modem, uint8_t mux, uint8_t sslCtxIndex) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| init(TinyGsm* modem) | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| init(TinyGsm* modem, uint8_t mux) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| init(TinyGsm* modem, uint8_t mux=0) | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| connect(const char* host, uint16_t port, int timeout_s) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connect(IPAddress ip, uint16_t port, int timeout_s) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connect(const char* host, uint16_t port) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connect(IPAddress ip, uint16_t port) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| stop(uint32_t maxWaitMs) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| stop() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| write(const uint8_t* buf, size_t size) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| write(uint8_t c) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| available() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| read(uint8_t* buf, size_t size) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| read() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| peek() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| flush() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| connected() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| setSSLContextIndex(uint8_t sslCtxIndex) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setStrictSSL(bool strict) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| remoteIP() | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getMux() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| getConnectionID() | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| beginWrite(uint16_t size) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| endWrite(uint16_t expected_size=0) | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TinyGsmSecureContext() | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, uint8_t contextIndex=TINY_GSM_DEFAULT_SSL_CTX) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, int contextIndex) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, SSLAuthMode sslAuthMode, SSLVersion sslVersion=SSLVersion::TLS1_2, const charCAcertName=nullptr, const char clientCertName=nullptr, const char* clientKeyName=nullptr) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, uint8_t contextIndex, SSLAuthMode sslAuthMode, SSLVersion sslVersion=SSLVersion::TLS1_2, const charCAcertName=nullptr, const char clientCertName=nullptr, const char* clientKeyName=nullptr) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, const charpskIdent, const char psKey, SSLVersion sslVersion=SSLVersion::TLS1_2) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, uint8_t contextIndex, const charpskIdent, const char psKey, SSLVersion sslVersion=SSLVersion::TLS1_2) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, const char* pskTableName, SSLVersion sslVersion=SSLVersion::TLS1_2) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, uint8_t contextIndex, const char* pskTableName, SSLVersion sslVersion=SSLVersion::TLS1_2) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TinyGsmSecureContext(TinyGsm& modem, int contextIndex, const char* pskTableName, SSLVersion sslVersion=SSLVersion::TLS1_2) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| init(TinyGsm* modem, uint8_t contextIndex=TINY_GSM_DEFAULT_SSL_CTX) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| isAttached() | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| getSSLContextIndex() | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| setSSLAuthMode(SSLAuthMode mode) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setSSLVersion(SSLVersion version) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| setCACertName(const char* CAcertName) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setCACertName(const String& CAcertName) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setClientCredentials(const charclientCertName, const char clientKeyName) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setClientCredentials(const String& clientCertName, const String& clientKeyName) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setCACertificateNumber(uint8_t certNumber) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setClientCredentialNumber(uint8_t certNumber) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ai-Thinker A6 | Digi XBee | Espressif ESP32 | Espressif ESP8266 | Espressif ESP8266 (NonOS) | Neoway M590 | Quectel BG96 | Quectel M95 | Quectel MC60 | SIMCom A7672x | SIMCom SIM5360 | SIMCom SIM7000 | SIMCom SIM7000 (SSL) | SIMCom SIM7080 | SIMCom SIM7600 | SIMCom SIM800 | Sequans Monarch | u-blox 2G and 3G modules | u-blox SARA-R4 | u-blox SARA-R5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| setPSKTableName(const char* pskTableName) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setPSKTableName(const String& pskTableName) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setPreSharedKey(const charpskIdent, const char psKey) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| setPreSharedKey(const String& pskIdent, const String& psKey) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Generated by Doxygen and m.css with templates from doxybook2
If you like TinyGSM library - give it a star, or fork it and contribute!