Heltec Wireless Tracker V2

ESP32-S3 LoRa and GNSS tracker board with SX1262 (28 dBm), dual-band UC6580 GNSS, 0.96" TFT and battery plus solar charging.

USB-C Native USB
Heltec Wireless Tracker V2 board
53 × 25.4 mm
ESP32-S3
MCU
240MHz
clock
8MB
flash
512KB
SRAM
31· 13 ADC
GPIO
BLE 5.0+ WiFi
radio
On this page

Heltec Wireless Tracker V2 Pinout

40 pins · 2.54 mm pitch
Heltec Wireless Tracker V2 pinout diagram, high resolution: all 40 pins, with GPIO numbers, ADC channels and strapping pins
Heltec Wireless Tracker V2 pinout, drawn by ESPboards from the ESP32-S3 Series Datasheet v2.2.
PinGPIOLabelsStatusCapabilitiesNotes
1-GNDground-Ground
2-5Vpower-5V in (4.7-6V); 500 mA out only when USB powered
3-GNDground-Ground
4-Vextpower-Switched 3.3V rail for TFT and GNSS, enabled by GPIO3; 350 mA max
5-GNDground-Ground
6-Vextpower-Switched 3.3V rail for TFT and GNSS, enabled by GPIO3
715GPIO15U0RTSADC2_CH4uartadc · pwm · uartADC2, unusable while Wi-Fi is active
816GPIO16U0CTSADC2_CH5uartadc · pwm · uartADC2, unusable while Wi-Fi is active
919GPIO19USB_NU1CTSADC2_CH8uartadc · uartNative USB D-; wired to the USB-C port
1020GPIO20USB_PU1RTSADC2_CH9uartadc · uartNative USB D+; wired to the USB-C port
1118GPIO18U1RXDADC2_CH7LED_Write_Ctrluartadc · pwm · uartConnected on board as LED_Write_Ctrl per Heltec pin map
1217GPIO17U1TXDADC2_CH6uartadc · pwm · uartADC2, unusable while Wi-Fi is active
1335GPIO35GNSS_RSTFSPIDsafepwm · spiGNSS reset; used by the onboard UC6580
1436GPIO36PPSFSPICLKsafepwm · spiGNSS PPS output; used by the onboard UC6580
1537GPIO37FSPIQsafepwm · spiFree GPIO per Heltec pin map
1621GPIO21TFT_LED_KsafepwmTFT backlight control
1748GPIO48strappingpwmNo onboard connection shown in Heltec pin map
1847GPIO47strappingpwmNo onboard connection shown in Heltec pin map
1933GPIO33GNSS_TXFSPIHDuartpwm · spi · uartGNSS UART TX line; used by the onboard UC6580
2034GPIO34GNSS_RXFSPICS0uartpwm · spi · uartGNSS UART RX line; used by the onboard UC6580
21-GNDground-Ground
22-3V3power-3.3V output (500 mA); can also power the board at 2.7-3.5V
237GPIO7ADC1_CH6TOUCH7VFEM_Ctrlsafeadc · touch · pwmLoRa front-end power control (VFEM_Ctrl), pulled up
246GPIO6ADC1_CH5TOUCH6safeadc · touch · pwmFree ADC1 pin, works with Wi-Fi
255GPIO5ADC1_CH4TOUCH5PA_CTXsafeadc · touch · pwmLoRa PA control (PA_CTX), pulled down
264GPIO4ADC1_CH3TOUCH4PA_CSDsafeadc · touch · pwmLoRa PA control (PA_CSD), pulled down
273GPIO3ADC1_CH2TOUCH3Vext_Ctrlstrappingadc · touch · pwmSwitches the Vext rail that powers the TFT and GNSS
282GPIO2ADC1_CH1TOUCH2ADC_Ctrlsafeadc · touch · pwmTurns on the battery-sense divider
291GPIO1ADC1_CH0TOUCH1Vbat_Readsafeadc · touch · pwmBattery voltage sense: VBAT = Vbat_Read * 4.9
300GPIO0USER_SWstrappingpwmUser/boot button, pulled up
31-RSTRST_SWcontrol-Reset (chip enable), wired to the RST button
3238GPIO38TFT_CSFSPIWPsafepwm · spiTFT chip select; used by the onboard display
3341GPIO41TFT_SCLKMTDIstrappingpwm · spiTFT SPI clock; also JTAG MTDI
3442GPIO42TFT_SDINMTMSstrappingpwm · spiTFT SPI data; also JTAG MTMS
3540GPIO40TFT_RSMTDOstrappingpwmTFT data/command (RS); also JTAG MTDO
3639GPIO39TFT_RESMTCKstrappingpwmTFT reset; also JTAG MTCK
3746GPIO46strapping-Heltec's datasheet table names it PA_CPS, but the V2.3 pin map leaves it unused and Meshtastic's V2 pin map drives the front end's CPS input from the SX1262 DIO2. Strapping pin
3845GPIO45strappingpwmStrapping pin (VDD_SPI voltage)
3944GPIO44U0RXDuartpwm · uartUART0 RX
4043GPIO43U0TXDuartpwm · uartUART0 TX
Download the Heltec Wireless Tracker V2 pinout Free to use and share for non-commercial work, as long as you credit espboards.dev. License.
31 GPIOs broken out 17 free · 12 need care · 2 to avoid

Start with these

17 pins with no boot or system involvement
GPIO15GPIO16GPIO18GPIO17GPIO35GPIO36GPIO37GPIO21GPIO33GPIO34GPIO7GPIO6GPIO5GPIO4GPIO2GPIO1GPIO38

Freely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.

Fine - with a little care

12 pins · 11 things to know
GPIO48GPIO47 Octal SPI differential clock legs (SPICLK_P/N_DIFF), used only by the 1.8 V octal flash/PSRAM variants Other

Only the 1.8 V octal parts (ESP32-S3R8V, ESP32-S3R16V) run the differential memory clock here, and on those the pin works at 1.8 V instead of 3.3 V. On the common 3.3 V modules it is a normal GPIO - several devkits drive their RGB LED from GPIO48.

  • GPIO48Octal SPI differential clock negative leg (SPICLK_N_DIFF), used only by the 1.8 V octal flash/PSRAM variants
  • GPIO47Octal SPI differential clock positive leg (SPICLK_P_DIFF), used only by the 1.8 V octal flash/PSRAM variants
GPIO3 Bootstrapping pin (controls JTAG signal source) Strapping

Sampled at reset to select JTAG interface (USB Serial/JTAG controller vs. external pins). Improper use can disable external JTAG or alter debug interface.

GPIO0 Bootstrapping pin (Chip boot mode selection) Strapping

Must be pulled high (default) or low (to enter UART download mode) at reset. Using it for other functions can interfere with boot mode configuration.

GPIO41 JTAG test data in pin (MTDI) JTAG

Default JTAG TDI input for debugging. Should be reserved for JTAG or left unused if JTAG is to remain available.

GPIO42 JTAG test mode select pin (MTMS) JTAG

Default JTAG TMS signal for debugging. Using this pin for other purposes will disable the JTAG interface (unless JTAG is rerouted to USB).

GPIO40 JTAG test data out pin (MTDO) JTAG

Default JTAG TDO output for debugging. Using it as GPIO will interfere with JTAG debugging functionality.

GPIO39 JTAG test clock (MTCK); IO MUX alternates CLK_OUT3 and SUBSPICS1 (chip select on the alternative SUBSPI memory bus, unused on standard modules) JTAG

Default JTAG TCK - keep it free if you debug over JTAG. It is not a flash or PSRAM line on standard modules: those sit on GPIO26-37.

GPIO46 Bootstrapping pin (used with GPIO0 for boot mode; controls ROM log output) Strapping

Must be at a defined level during reset (with GPIO0) to select normal or download boot and UART/USB print mode. This pin is input-only (no output drive), so it should be left for its intended strapping function.

GPIO45 Bootstrapping pin (selects VDD_SPI flash voltage) Strapping

Determines flash/PSRAM power voltage (3.3 V vs 1.8 V) at boot. Must match hardware configuration; using as GPIO can upset flash supply setting.

GPIO44 UART0 receive pin (U0RXD), default serial console RX UART

Used for bootloader input (download mode via serial). If repurposed, you cannot use the default UART0 download mode for programming the chip.

GPIO43 UART0 transmit pin (U0TXD), default serial console TX UART

Used for bootloader output and UART console logs. If repurposed, you will lose the default serial output (and programming via UART0).

Only if you know the tricks

2 pins · 1 thing to know
GPIO19GPIO20 USB OTG differential data pair (D- and D+) USB

By default connected to the on-chip USB Serial/JTAG controller. Using it as general GPIO without reconfiguring IO MUX will interfere with USB functionality.

  • GPIO19USB OTG negative differential data line (USB_D-)
  • GPIO20USB OTG positive differential data line (USB_D+)
These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.

The Heltec Wireless Tracker V2 breaks out 40 pins in total: 31 GPIO for your project, with GND, 5V, Vext and 3V3 handling power.

On the analog side there are 13 ADC-capable pins for sensors and battery monitoring, PWM on 28 pins and 7 capacitive-touch inputs.

If you want zero surprises, GPIO15, GPIO16, GPIO18, GPIO17 and 13 more are free of any such role - the safest first picks. 12 of the exposed pins carry boot-time or system duties on the ESP32-S3 (GPIO48, GPIO47, GPIO3 and 9 more).

Getting started

flash your first firmware in ~2 minutes
Tool:
1
Connect over USB
Native USB - shows up as a port right away, no driver needed. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
GPIO35 toggles - wire an LED and resistor to it, or change the pin to your board's own LED.
Set these in Tools · leave everything else at default
Arduino IDE 2.x - Tools Copy
Board: "ESP32S3 Dev Module"▸
USB CDC On Boot: "Enabled"▸
Flash Size: "8MB (64Mb)"▸
Partition Scheme: "8M with spiffs (3MB APP/1.5MB SPIFFS)" (default)▸
Upload Speed: "921600"▸
▸ every other Tools option - leave at default
Board: ESP32S3 Dev Module
USB CDC On Boot: Enabled
Flash Size: 8MB (64Mb)
Partition Scheme: 8M with spiffs (3MB APP/1.5MB SPIFFS)
Upload Speed: 921600
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ ESP32S3 Dev Module
blink.ino Copy
// toggle GPIO35 - wire an LED and resistor to it
void setup() {
  pinMode(35, OUTPUT);
}
void loop() {
  digitalWrite(35, HIGH); delay(500);
  digitalWrite(35, LOW);  delay(500);
}
board to selectesp32-s3-devkitc-1⧉ copy
platformio.ini Copy
[env:heltec-wireless-tracker-v2]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600
Find it: PlatformIO Home ▸ Boards, search esp32-s3-devkitc-1 - or type it after board =.
board to selectesp32-s3-devkitc-1⧉ copy
device.yaml Copy
esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: esp-idf

# blink - GPIO35
output:
  - platform: gpio
    pin: 35
    id: led_out
light:
  - platform: binary
    name: "LED"
    output: led_out
Find it: search ESPHome's board list for esp32-s3-devkitc-1 (same ids as PlatformIO).
esptool doesn't pick board settings - a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32s3 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x0 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).

Good to know

board-specific quirks worth 60 seconds
The TFT and the GNSS module run from the switched Vext rail, which GPIO3 (Vext_Ctrl) turns on. The display and GPS stay dark until your code enables it, so a blank screen or a silent GNSS UART usually means Vext is still off rather than a faulty board. Vext can supply 350 mA. Many header pins are already used on the board: the GNSS on GPIO33-36, the TFT on GPIO38-42 and GPIO21, and the LoRa RF front end on…

The TFT and the GNSS module run from the switched Vext rail, which GPIO3 (Vext_Ctrl) turns on. The display and GPS stay dark until your code enables it, so a blank screen or a silent GNSS UART usually means Vext is still off rather than a faulty board. Vext can supply 350 mA.

Many header pins are already used on the board: the GNSS on GPIO33-36, the TFT on GPIO38-42 and GPIO21, and the LoRa RF front end on GPIO4, GPIO5 and GPIO7. Check the pin map before you wire anything to these.

V2 (hardware V2.3) is not a straight copy of the original Wireless Tracker. It adds a new RF front-end module that raises LoRa TX power from 21 to 28 dBm, an RF filter, a GNSS LNA, a solar input and front-end control lines on GPIO4 (PA_CSD, chip enable), GPIO5 (PA_CTX) and GPIO7 (VFEM_Ctrl, front-end power). Use firmware and pin definitions meant for V2, not ones written for the first Tracker. The 5V header…

V2 (hardware V2.3) is not a straight copy of the original Wireless Tracker. It adds a new RF front-end module that raises LoRa TX power from 21 to 28 dBm, an RF filter, a GNSS LNA, a solar input and front-end control lines on GPIO4 (PA_CSD, chip enable), GPIO5 (PA_CTX) and GPIO7 (VFEM_Ctrl, front-end power). Use firmware and pin definitions meant for V2, not ones written for the first Tracker.

The 5V header pin supplies power (500 mA) only when the board runs from USB, and Heltec says to use only one power source at a time.

Downloads

Free for non-commercial use, credit espboards.dev · License
Heltec Wireless Tracker V2 board illustration, front

Board illustration

The bare Heltec Wireless Tracker V2 board drawn to scale at 53 × 25.4 mm, with no pin labels on it. Made for slide decks, wiring diagrams and project write-ups where a photo is too busy. Take the scalable SVG for print or editing, the high-resolution PNG to drop straight in, or the transparent PNG when you need it with no background behind it.

Heltec Wireless Tracker V2 pinout diagram

Pinout diagram

Every pin on both sides of the board with its functions, drawn by ESPboards from the ESP32-S3 Series Datasheet v2.2 - the same sheet shown at the top of this page. The PNG is a high-resolution image for screens, the SVG is vector so it stays sharp at any size, and the PDF is laid out to print on A4 or Letter.

Free for non-commercial use, with the credit line kept.

Embed the Heltec Wireless Tracker V2 pinout

Paste this where you want the diagram. Keep the credit line - it is what the licence asks for, and it is the only thing we want in return.

<figure>
  <img src="https://cdn.espboards.net/boards/heltec-wireless-tracker-v2/diagram-1600.png"
       alt="Heltec Wireless Tracker V2 pinout diagram" width="1600" loading="lazy">
  <figcaption>
    Heltec Wireless Tracker V2 pinout by
    <a href="https://www.espboards.dev/esp32/heltec-wireless-tracker-v2/">ESPboards</a>,
    <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC BY-NC 4.0</a>
  </figcaption>
</figure>

Using it commercially? Ask us first - it takes one email.

Yours to use, share and adapt for non-commercial work, as long as you credit espboards.dev - the full terms and ready-made credit lines are here.

Specifications

ESP32-S3 · 53 × 25.4 mm · vs other ESP32 chips →
Compute
MCU
ESP32-S3
Clock
240 MHz
SRAM · Flash
512 KB · 8MB
Radio
Wi-Fi
802.11 b/g/n
Bluetooth
5.0 LE
Antenna
PCB
I/O
GPIO · ADC
31 · 13
UART · I²C · SPI
3 · 2 · 2
PWM
8 channels
Power
USB
USB-C
Serial
Native (CDC)
Boot address
0x0
Electrical
Input
5V USB-C / 5V pin (4.7-6V), 3.7V Li-ion battery (3.3-4.2V), 3V3 pin (2.7-3.5V), solar panel input
Consumption
79mA Wi-Fi scan / 140mA Wi-Fi AP (USB powered) active · 21uA (battery powered) sleep
Regulator
-
Display
Screen
TFT · 0.96" · 160x80
Driver
-
Touch
No
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
- · -
Sketch · Data
- · -

Dimensions

Heltec Wireless Tracker V2 board, drawn to scale
25.4 mm53 mm
53 × 25.4 mm · pin pitch 2.54 mm
The Heltec Wireless Tracker V2 uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates.

About this board

At its core is the ESP32-S3 - a dual-core Xtensa with vector extensions suited to AI workloads.

Expect to pay about $30.90 - in line with other ESP32-S3 boards.

31 GPIO are broken out - more than most ESP32-S3 boards, so the pin budget is rarely the constraint.

Onboard you'll find a TFT 0.96" 160x80 display, LoRa (SX1262), GPS (UC6580), battery charging (CN3165) via SH1.25-2 and User (GPIO0)/Reset buttons.

It flashes over native USB - no serial-converter driver needed, which isn't a given among ESP32-S3 boards.

  • LoRa TX power up to 28 +/-1 dBm (863-928 MHz)
  • Dual-frequency GNSS: GPS, GLONASS, BDS, Galileo, QZSS, SBAS, up to 10 Hz
  • SH1.25 solar panel input alongside the battery connector
  • 2.4 GHz spring antenna for Wi-Fi/BLE; u.FL (IPEX) connectors for LoRa and GNSS
  • Battery voltage readable on GPIO1 through a divider switched by GPIO2 (VBAT = Vbat_Read * 4.9)

Where to buy

prices are typical street prices
Heltec Wireless Tracker V2
Heltec Wireless Tracker V2
$30.90per unit, typical
As an Amazon Associate, ESPboards earns from qualifying purchases.

Resources

Similar boards