t-echo-lite: GPS_TX_PIN / GPS_RX_PIN are swapped, GPS never detected
Board
LILYGO T-Echo Lite Core (nRF52840) + H770 L76K GPS module on the 1x7 header, firmware 2.7.26 (t-echo-lite, HW model 109).
Symptom
Boot log shows the GPS probe cycling every family and giving up with zero bytes received, on two separate (known-good) L76K modules:
[GPS] Trying $PCAS06,0*1B (L76K)...
[GPS] No GNSS Module (baudrate 9600)
[GPS] Give up on GPS probe and set to 9600(Note: only 9600 is tried because the variant defines GPS_BAUDRATE, which sets GPS_BAUDRATE_FIXED. That's fine — the L76K default is 9600 — just noting the probe can't exonerate other bauds here.)
Root cause
variants/nrf52840/t-echo-lite/variant.h has the UART pins backwards:
#define GPS_TX_PIN (32 + 10) // L76K module RX PIN
#define GPS_RX_PIN (0 + 29) // L76K module TX PINGPS::createGps() (nRF52 path) calls _serial_gps->setPins(rx_gpio, tx_gpio), and Adafruit's signature is setPins(pin_rx, pin_tx) (cores/nRF5/Uart.h). So Meshtastic listens on P0.29 and talks on P1.10.
But LILYGO's factory GPS.ino (verified working hardware) does Serial2.setPins(GPS_UART_RX, GPS_UART_TX) with GPS_UART_RX = P1.10, GPS_UART_TX = P0.29 (libraries/private_library/t_echo_lite_config.h) — i.e. MCU RX on P1.10, MCU TX on P0.29. Exactly opposite. The MCU was listening on the module's RX line and talking into its TX output, so total silence in both directions.
The variant author's comments even show the mix-up: the P1.10/P0.29 values were read off the header table's RX/TX labels from the module's perspective instead of the MCU's. (Compare the working t-echo variant, where GPS_TX_PIN/GPS_RX_PIN follow the MCU-TX/MCU-RX convention.)
Suggested fix
Swap the two defines (which also fixes PIN_SERIAL1_RX/PIN_SERIAL1_TX, derived from them):
#define GPS_TX_PIN (0 + 29) // MCU TX -> L76K RX
#define GPS_RX_PIN (32 + 10) // MCU RX <- L76K TXVerification (runtime workaround, no rebuild)
Setting the config overrides instead — position.rx_gpio = 42 (P1.10), position.tx_gpio = 29 (P0.29) — the module answers the very first probe after reboot:
Use GPIO42 for GPS RX
Use GPIO29 for GPS TX
[GPS] L76K detected
NMEA GPS time set ... Time source acquired (None -> GPS)Thanks for the t-echo-lite port — happy to test a fixed build if useful.
Source: meshtastic/firmware