Documentation
Onboarding
Getting Started
Power & Battery
Hardware & Components
Build & Assembly
Radio & RF Design
Frequencies & Regulations
Firmware & Software
USB & Connectivity
GPS & Navigation
Morse & Communication
Modes & Operation
Field Operations & Rescue
Building Effectively
Build Variants
Project & Reference
Docs Hardware & Components ESP32 Input-Only Pins

ESP32 Input-Only Pins

Edit on GitHub

GPIO 34, 35, 36 and 39 have no output drivers and no pull-ups. What that means for the buttons and the ADC.

ESP32 Input-Only Pins

Four GPIOs on the ESP32 are input-only: GPIO 34, 35, 36, 39. They cannot drive outputs and have no internal pull-ups. The beacon uses three of them, so this matters.

The pins

GPIOUse in beaconDirection
34SW_DN buttonInput only
35SW_UP buttonInput only
36Battery divider ADCInput only
39SX1262 DIO1 interruptInput only

What “input-only” means

  • You cannot light an LED or drive a signal from these pins.
  • There is no internal pull-up or pull-down; a floating input reads random values.
  • They tolerate 0-3.3 V only (no 5 V).

The button consequence

SW_UP (GPIO 35) and SW_DN (GPIO 34) need external 10 kΩ pull-ups to 3.3 V, or they float. The buttons then pull the pin low when pressed. This is documented in the wiring tables and is a top-ten build mistake.

The ADC consequence

GPIO 36 (SVP) is the battery divider input. It reads half of BAT+ through the 100 kΩ/100 kΩ divider. No pull-up is needed or wanted: the divider itself sets the voltage.

The STDBY consequence

GPIO 39 (SVN) receives the SX1262 DIO1 interrupt. It needs no pull-up: the radio drives the line actively. It must never be wired to a TP4056 STDBY output or any other driven signal except the radio module.

Checking your wiring

  • Measure GPIO 35 with no button pressed: should read 3.3 V (pulled up).
  • Press the button: reads 0 V.
  • A floating reading (somewhere in between, jumping around) means the pull-up is missing.