Build Targets

Builds for both general ESP8266 and ESP32 boards are built automatically by GitHub on Release.

The latest release can always be found here.

Builds for a number of target counters are available.

Pulse

The pulse target is the most widely compatible build and works with all Pulse-type Geiger counters. You’ll find a list of compatible and tested pulse counters in the hardware section.

Target Name Target Counter Notes
pulse Pulse ESP32 builds default to using built in hardware PCNT counter
pulse_no_pcnt Pulse ESP32-only build disabling PCNT

ESP32 / ESP32-S3 / ESP32-C3 builds bundle SSD1306 OLED support; the panel is auto-detected at boot. No separate oled_* envs needed on the ESP32 family. ESP8266 still ships dedicated oled_* envs to avoid the runtime cost on the slower core.

Serial

A single unified serial build supports all serial Geiger counter types. Select the serial protocol on the Config page under Input > Serial Type.

Target Name Notes
serial Unified serial build. Supports every serial type listed below. Select your counter type from the Config page after flashing.

Supported serial types:

Type ID Counter Baud Rate Serial Format
1 GC10 9600 60\n (plain integer)
2 GC10Next 115200 60\n (plain integer)
3 MightyOhm 9600 CPS, 1, CPM, 60, uSv/hr, 1.23, INST\n
4 ESPGeiger 115200 CPM: 60\n
5 Template 115200 Any line: the number after CPM, else the first number

Hardware Specific Builds

A number of hardware specific builds are also made to support ESPGeiger-HW and ESPGeiger Log devices.

Target Name Target Counter Counter Type Notes
espgeigerhw ESPGeiger-HW Pulse Build for the ESPGeiger-HW Geiger Counter. Controls PWM for HV along with other specifics for hardware.
espgeigerlog ESPGeiger Log Pulse A pulse based build for the ESPGeiger Log hardware with NeoPixel and SDCard output.
espgeigerlog_serial ESPGeiger Log Serial A serial based build for the ESPGeiger Log hardware. Select your counter type from the Config page.
espgeigerlog_udp ESPGeiger Log UDP receiver A UDP-receiver build for the ESPGeiger Log hardware. Logs clicks from any ESPGeiger device broadcasting UdpBlip on the LAN; useful as a headless aggregator that records to SD card.

HV Builds

Generic HV builds enable the same closed-loop high-voltage management used on ESPGeiger-HW, but on stock ESP8266 / ESP32 boards. You wire up your own boost converter (transistor + inductor + voltage divider) and configure the PWM pin at runtime via the Config page. See High Voltage Configuration for wiring and tuning.

Target Name Platform Notes
esp8266_hv ESP8266 Pulse build with HV generator + ADC feedback. PWM frequency up to 40 kHz; PWM pin defaults to -1 (disabled) until set in the Config page.
esp8266oled_hv ESP8266 + OLED As esp8266_hv with SSD1306 OLED.
esp32_hv ESP32 Pulse build with HV generator + ADC feedback. PWM frequency up to 80 kHz (hardware LEDC). VFB pin defaults to GPIO 36 (ADC1, no WiFi conflict). SSD1306 OLED auto-detected at boot.

For safety the PWM pin defaults to -1, so a freshly flashed board drives no pin until you choose one. Set HV PWM Pin on the Config page (System tab, HV Hardware), then reboot.

Audio Tick (ESP32-S3 only)

Builds with the Audio Tick output enabled. A per-pulse click is played through an I2S amplifier (e.g. MAX98357A). The XH-S3E set targets the MINI ESP32-S3-N16R8 (sold as “XH-S3E-AI”, a small purple ESP32-S3 board with onboard speaker, mic, button, NeoPixel and OLED); the esp32s3_audio_* set targets a generic ESP32-S3 dev kit with an externally wired amplifier (BCLK / WS / DOUT set on the Config page, Output > Audio Tick). Audio is S3-only: the extra SRAM and headroom keep speech synthesis and the click engine clear of the counting path.

Target Name Hardware Counter Type Notes
xh_s3e_pulse MINI ESP32-S3-N16R8 (XH-S3E-AI) Pulse Pulse input on GPIO 13. Pin map fixed.
xh_s3e_serial MINI ESP32-S3-N16R8 (XH-S3E-AI) Serial Serial input on GPIO 13/14.
xh_s3e_udp MINI ESP32-S3-N16R8 (XH-S3E-AI) UDP receiver Tubeless receiver, see UDP Receiver below.
xh_s3e_test MINI ESP32-S3-N16R8 (XH-S3E-AI) n/a Poisson simulator for tuning the click sound.
esp32s3_audio_pulse ESP32-S3 dev kit + amp Pulse Generic S3 board, externally wired I2S amplifier.
esp32s3_audio_serial ESP32-S3 dev kit + amp Serial  

Audio Tick is on by default. On the esp32s3_audio_* envs, set the three I2S pins on the Config page to match your wiring, then reboot.

UDP Receiver

UDP receiver builds turn an ESP into a tubeless “mirror” device that listens for Local Broadcast traffic from another ESPGeiger and behaves as if a real Geiger tube were attached. CPM/µSv/history/blip-LED/MQTT/WebAPI/OLED all derive from the received clicks. See UDP / OSC Output for the full protocol and configuration.

Target Name Platform Display Notes
esp8266_udp ESP8266 none Headless receiver.
esp8266oled_udp ESP8266 OLED Receiver with display; shows producer chipid + loss% on page 2 and a feed-alive indicator on page 1.
esp32_udp ESP32 auto ESP32 receiver. SSD1306 OLED auto-detected at boot; more heap headroom than ESP8266, cleaner choice for fleet aggregator (sum mode).
esp32c3_udp ESP32-C3 auto ESP32-C3 receiver with bundled OLED.
esp32s3_udp ESP32-S3 auto ESP32-S3 receiver with bundled OLED.

After flashing, configure the source mode (pin / sum / auto) and group/port from the Config → Input page.

Test and Custom Builds

Test builds simulate a Geiger counter and never upload to public services. They are described in Testing & Development. To build your own firmware, see Platform.io Build.


This site uses Just the Docs, a documentation theme for Jekyll.