@ -33,52 +33,24 @@ Arduino GSM library uses 15868 bytes (49%) of Flash and 1113 bytes (54%) of RAM
TinyGSM also pulls data gently from the modem (whenever possible), so it can operate on very little RAM.
TinyGSM also pulls data gently from the modem (whenever possible), so it can operate on very little RAM.
**Now, you have more space for your experiments.**
**Now, you have more space for your experiments.**
## Features
Feature \ Modem | SIM8xx | u-Blox | A6/A7/A20 | Neoway M590| ESP8266 |Digi XBee|Quectel BG96|Quectel M95|Quectel MC60(E)| SIM7000 | Monarch |
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
**Data connections**
TCP (HTTP, MQTT, Blynk, ...) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
UDP | ◌ | ◌ | | | | ◌ | ◌ | | | ◌ | ◌ |
SSL/TLS (HTTPS) | ✔¹ | ✔ | x | x | ✔ | ✔ | ◌ | | | ◌ | ✔ |
**USSD**
Sending USSD requests | ✔ | | ✔ | ✔ | x | | | | | ✔ | |
Decoding 7,8,16-bit response | ✔ | | ✔ | ✔ | x | | | | | ✔ | |
**SMS**
Sending | ✔ | ✔ | ✔ | ✔ | x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Sending Unicode | ✔ | | ◌ | x | x | | ✔ | ✔ | ✔ | ✔ | |
Reading | | | | | x | | | | | | |
Incoming message event | | | | ? | x | | | | | | |
**Calls**
Dial, hangup | ✔ | | ✔ | x | x | x | | | | | |
Receiving calls | ✔ | | ✔ | x | x | x | | | | | |
Incoming event (RING) | ◌ | | ◌ | x | x | x | | | | | |
DTMF sending | ✔ | | ✔ | x | x | x | | | | | |
DTMF decoding | ◌ | | x | x | x | x | | | | | |
**Location**
GSM location service | ✔ | ✔ | x | x | x | x | | x | ✔ | ✔ | x |
GPS/GNSS | ✔¹ | x | ◌¹ | x | x | x | | x | | ✔ | x |
**Credits**
Primary Author/Contributor |[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[SRGDamia1](https://github.com/SRGDamia1/)|[vshymanskyy](https://github.com/vshymanskyy) |[replicadeltd](https://github.com/replicadeltd)|[V1pr](https://github.com/V1pr)|[captFuture](https://github.com/captFuture/)|[nootropicdesign](https://github.com/nootropicdesign/)|
✔ - implemented ◌ - planned x - not available on this modem
¹ - only some device models or firmware revisions have this feature (SIM8xx R14.18, A7, etc.)
## Supported modems
## Supported modems
- SIMCom SIM800 series (SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868)
- SIMCom SIM800 series (SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868)
- SIMCom SIM900 series (SIM900A, SIM900D, SIM908, SIM968)
- SIMCom SIM900 series (SIM900A, SIM900D, SIM908, SIM968)
- SIMCom WCDMA/HSPA/HSPA+ Modules (SIM5360, SIM5320, SIM5300E, SIM5300EA)
- SIMCom LTE Modules (SIM7100E, SIM7500E, SIM7500A, SIM7600C, SIM7600E)
- SIMCom SIM7000E CAT-M1/NB-IoT Module
- AI-Thinker A6, A6C, A7, A20
- AI-Thinker A6, A6C, A7, A20
- ESP8266 (AT commands interface, similar to GSM modems)
- ESP8266 (AT commands interface, similar to GSM modems)
- Digi XBee WiFi and Cellular (using XBee command mode)
- Digi XBee WiFi and Cellular (using XBee command mode)
- Neoway M590
- Neoway M590
- u-blox Cellular Modems (many modules including LEON-G100, LISA-U2xx, SARA-G3xx, SARA-U2xx, TOBY-L2xx, LARA-R2xx, MPCI-L2xx, SARA-R4xx, SARA-N4xx, _but NOT SARA-N2xx_ )
- u-blox 2G, 3G, 4G, and LTE Cat1 Cellular Modems (many modules including LEON-G100, LISA-U2xx, SARA-G3xx, SARA-U2xx, TOBY-L2xx, LARA-R2xx, MPCI-L2xx)
- u-blox LTE-M Modems (SARA-R4xx, SARA-N4xx, _but NOT SARA-N2xx_ )
- Sequans Monarch LTE Cat M1/NB1
- Sequans Monarch LTE Cat M1/NB1
- Quectel BG96
- Quectel BG96
- Quectel M95
- Quectel M95
- Quectel MC60 ***(alpha)** *
- Quectel MC60 ***(alpha)** *
- SIMCom SIM7000 ***(alpha)** *
- SIMCom SIM5360 ***(alpha)** *
### Supported boards/modules
### Supported boards/modules
- Arduino MKR GSM 1400
- Arduino MKR GSM 1400
@ -92,14 +64,62 @@ Primary Author/Contributor |[vshymanskyy](https://github.com/vshymanskyy)|[vsh
More modems may be supported later:
More modems may be supported later:
- [ ] Quectel M10, UG95
- [ ] Quectel M10, UG95
- [ ] SIMCom SIM5320, SIM5360, SIM5216
- [ ] SIMCom SIM7020, SIM7100
- [ ] SIMCom SIM7020
- [ ] Telit GL865
- [ ] Telit GL865
- [ ] ZTE MG2639
- [ ] ZTE MG2639
- [ ] Hi-Link HLK-RM04
- [ ] Hi-Link HLK-RM04
Watch this repo for new updates! And of course, contributions are welcome ;)
Watch this repo for new updates! And of course, contributions are welcome ;)
## Features
**Data connections**
- TCP (HTTP, MQTT, Blynk, ...)
- ALL modules support TCP connections
- UDP
- Not yet supported on any module, though it may be some day
- SSL/TLS (HTTPS)
- Supported on¹:
- SIM800, u-Blox, XBee _cellular_ , ESP8266, and Sequans Monarch
¹ - only some device models or firmware revisions have this feature (SIM8xx R14.18, A7, etc.)
- Not yet supported on:
- Quectel modems, SIM7000, SIM5360/5320/7100/7500/7600
- Not possible on:
- SIM900, A6/A7, M560, XBee _WiFi_
**USSD**
Sending USSD requests and decoding 7,8,16-bit responses
- Supported on:
- SIM800/SIM900, SIM7000
- Not yet supported on:
- Quectel modems, SIM5360/5320/7100/7500/7600, XBee
**SMS**
Only _sending_ SMS is supported, not receiving
- Supported on:
- SIM800/SIM900, SIM7000, XBee
- Not yet supported on:
- Quectel modems, SIM5360/5320/7100/7500/7600
**Calls**
- Only Supported on SIM800 and A6/A7/A20
- Dial, hangup
- Receiving calls
- Incoming event (RING)
- DTMF sending
- DTMF decoding
**Location**
- GPS/GNSS
- SIM808 and SIM7000 only
- GSM location service
- SIM800, SIM and SIM7000 only
**Credits**
Primary Author/Contributor |[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[SRGDamia1](https://github.com/SRGDamia1/)|[vshymanskyy](https://github.com/vshymanskyy) |[replicadeltd](https://github.com/replicadeltd)|[V1pr](https://github.com/V1pr)|[captFuture](https://github.com/captFuture/)|[nootropicdesign](https://github.com/nootropicdesign/)|
✔ - implemented ◌ - planned x - not available on this modem
## Donation
## Donation
[](https://salt.bountysource.com/checkout/amount?team=tinygsm-dev)
[](https://salt.bountysource.com/checkout/amount?team=tinygsm-dev)
@ -166,11 +186,16 @@ In some cases **9600** is unstable, but using **38400** helps, etc.
Be sure to set correct TX/RX pins in the sketch. Please note that not every Arduino pin can serve as TX or RX pin.
Be sure to set correct TX/RX pins in the sketch. Please note that not every Arduino pin can serve as TX or RX pin.
**Read more about SoftSerial options and configuration [here ](https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html ) and [here ](https://www.arduino.cc/en/Reference/SoftwareSerial ).**
**Read more about SoftSerial options and configuration [here ](https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html ) and [here ](https://www.arduino.cc/en/Reference/SoftwareSerial ).**
### ESP32 HardwareSerial
### ESP32 Notes
#### HardwareSerial
When using ESP32 `HardwareSerial` , you may need to specify additional parameters to the `.begin()` call.
When using ESP32 `HardwareSerial` , you may need to specify additional parameters to the `.begin()` call.
Please [refer to this comment ](https://github.com/vshymanskyy/TinyGSM/issues/91#issuecomment-356024747 ).
Please [refer to this comment ](https://github.com/vshymanskyy/TinyGSM/issues/91#issuecomment-356024747 ).
#### HttpClient
If you are using an ESP32, you must will not be able to compile the HttpClient or HttpsClient examples if you are using ESP32 core >1.0.1. Downgrade to version 1.0.1 or use the WebClient example. Please comment on the issue on the ESP32 core, not in this library: https://github.com/espressif/arduino-esp32/issues/2755
### SAMD21
### SAMD21
When using SAMD21-based boards, you may need to use a sercom uart port instead of `Serial1` .
When using SAMD21-based boards, you may need to use a sercom uart port instead of `Serial1` .