TTGO - TCall GPS UART Comunication

  1. My goal is: Establish Commuication from TTGO-TCALL V1.3 to GPS module (NEO 6M) via TX and RX pin on TTGO-Tcall
  2. My actions are: use deafult UART0,1,2 from mongoose OS
  3. The result I see is: Cannot get GPS data from the GPS Module, I cannot use UART0 because it is used for communication with Mongoose OS serial, Cannot Use UART1 because it is used by SIM800L, Cannot Use UART2 becuae pin 16 and 17 is not present on TTGO Tcall
  4. My expectation & question is: How to solve set TX and RX Pin at TTGO Tcall to communicate with GPS Module (i.e. how to use other GPIO pins as UART channels)

EDIT: I use this library for GPS


You can use UART2 with any 2 free GPIOs.

Have a look here and here.


I Understand that for ESP32, UART2 is pin 16 and 17. However, TTGO-Tcall does not have these pins. Can you show me how you can change the pins from 16 and 17 to other pins? I saw that the link you gave shows the default config of ESP32 and I have no clue how to change and flash it to my ESP32 board. Maybe you have tutorial for how to change these default configs, which will be very helpful for me, thank you


Example here.


HI, I’ve tried doing the same by modifying this library: , by forking it to my own repository

I’ve changed the settings by adding these lines to line 195 of gps.c:
ucfg.num_data_bits = 8; = 12; = 14;

still no luck :(. Any suggestions on what to do next?
Thank you


Make sure to use UART2.

Describe “no luck”, please.


Write an as simple as possible program that just sends “AT” over UART2, connect an oscilloscope, and watch the I/O pins. Post your code and ask again, consider suggestions and correct, repeat until you succeed


Hi, thank you all very much for your help. I finally did able to change the UART pins. The code can be seen in my Github here. I made changes to mos.yml file, as well as line 197-198 of gps.c

I am, however, encountering another problem. Currently, my TTGO T-Call would randomly restart (and I do mean randomly, sometimes It doesn’t restart for long time, but suddenly it restarts every 10 minutes) and reset itself while operating, even though it is connected to constant USB power. Also, there seems to be a problem regarding the update rate of data to IoT Core did not stay the same (always changing), and is different from what is specified (for example update rate is set to 15 seconds, but in reality sometimes 1 minute per update, 2 minutes per udate, sometimes 30 seconds per update)
Code of the program can be found here. Any suggestions, maybe regarding missing declaration of pins/functions? Thank you


“constant USB power”… You have a USB cable, and you have current spikes. You have to design your hardware properly for that to be true. If you have frequent resets you’d better get a decent power source first, just in case, to avoid headaches and unexplained issues.
Your IoT woes are mainly your application and your network connection responsibility.
I’m way too lazy to check other people’s code, even more when it is in a repo; I don’t think a missing declaration or a wrong pin can do what you describe,
Define “per update”, what are you doing ? Do you mean an update happens every x min instead of y seconds ? Do you know what it takes to perform an update ? Do you know if you are piling up attempts to update and starving your heap and causing a reset ? Did you check your log for causes of reset ? for heap size ? for “update” messages ?