From a6d4b255de4a0505ff7f26e6e52f487ab27a5e20 Mon Sep 17 00:00:00 2001 From: Martin Dobrev Date: Wed, 2 Sep 2026 12:08:03 +0100 Subject: [PATCH] docs: the V4's sounder is an expansion module, and the slot was empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bench unit's silence at every drive had three candidate explanations and the case settled it: the buzzer pin runs to an expansion slot, the sounder is one of the modules that plug into it, and no module was fitted. The pin keeps being driven — that costs nothing empty and is what makes a module work the moment it arrives. The registry now says what kind of absent the sounder is. --- boards.json | 4 ++-- docs/hardware.md | 7 ++++--- src/boards/heltec_v4.h | 9 +++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/boards.json b/boards.json index 2831a11..c562d80 100644 --- a/boards.json +++ b/boards.json @@ -306,8 +306,8 @@ "mcu": "ESP32-S3: 16 MB flash, 2 MB PSRAM in package", "radio": "SX1262 (TCXO, DIO2 drives the RF switch) behind a GC1109 or KCT8103L front end", "display": "2.4\" 240x320 ST7789 with a CHSC6X touch layer", - "extras": "two buttons, piezo sounder, battery ADC, GNSS on the expansion header (no SD)", - "status": "verified on hardware: radio through the KCT8103L front end (TX and RX on air), GNSS fix + clock, panel, touch, both buttons; sounder silent — possibly not fitted", + "extras": "two buttons, battery ADC, GNSS on the expansion header; expansion slots for sounder/sensors (no SD)", + "status": "verified on hardware: radio through the KCT8103L front end (TX and RX on air), GNSS fix + clock, panel, touch, both buttons; sounder is on an expansion module, none fitted on the bench unit", "notes": "The first colour panel and the first amplified front end in this firmware, and the first 16 MB board. The pin map has one published source — the board definition in the open-source firmware it ships with (variants/esp32s3/heltec_v4, the TFT build) — rather than the two this project prefers, so the panel, touch, button and sounder pins are unverified; the LoRa pins are the V3's and carry more weight. The front end is the part with no equivalent elsewhere here: the radio is deaf and mute until the amplifier rail is powered and its mode pins are driven, and which of two parts is fitted is read off GPIO 2 at boot. Native USB, so it enumerates as an Espressif JTAG/serial device with its MAC in the by-id name and none of the CP2102 ambiguity the rest of this bench has. OTG runs the composite device: CDC-ACM console plus CDC-NCM networking, the same stack the T3-S3s carry — note the by-id name changes to the RetiMesh identity once this firmware boots.", "local_link": { "usb": { diff --git a/docs/hardware.md b/docs/hardware.md index bae0e22..4046cd9 100644 --- a/docs/hardware.md +++ b/docs/hardware.md @@ -14,7 +14,7 @@ | `heltec-wb` | Heltec Wireless Bridge | ESP32-D0WDQ6: 8 MB flash, 8 MB PSRAM | SX1276 | — (headless) | front LEDs for Wi-Fi and LoRa (the BLE one stays dark), aluminium shell, two SMA sockets, internal 2-pin battery connector, PPP over the CP2102 bridge; no SD, no GNSS | verified on hardware; PPP built, not yet run on this board | | `heltec-v3` | Heltec WiFi LoRa 32 V3 | ESP32-S3: 8 MB flash, no PSRAM | SX1262 (TCXO, DIO2 drives the RF switch) | 0.96" SSD1306 on the switched Vext rail | PPP over the CP2102 bridge (no SD, no GNSS) | verified on hardware; PPP built, not yet run on this board | | `heltec-wp` | Heltec Wireless Paper | ESP32-S3: 8 MB flash, no PSRAM | SX1262 (TCXO, DIO2 drives the RF switch) | 2.13" e-ink (250x122, E0213A367), driven | PPP over the CP2102 bridge (no SD, no GNSS) | verified on hardware (console, Wi-Fi, transport, SX1262 self-test, e-paper panel); PPP built, not yet run on this board | -| `heltec-v4` | Heltec V4 (TFT) | ESP32-S3: 16 MB flash, 2 MB PSRAM in package | SX1262 (TCXO, DIO2 drives the RF switch) behind a GC1109 or KCT8103L front end | 2.4" 240x320 ST7789 with a CHSC6X touch layer | two buttons, piezo sounder, battery ADC, GNSS on the expansion header (no SD) | verified on hardware: radio through the KCT8103L front end (TX and RX on air), GNSS fix + clock, panel, touch, both buttons; sounder silent — possibly not fitted | +| `heltec-v4` | Heltec V4 (TFT) | ESP32-S3: 16 MB flash, 2 MB PSRAM in package | SX1262 (TCXO, DIO2 drives the RF switch) behind a GC1109 or KCT8103L front end | 2.4" 240x320 ST7789 with a CHSC6X touch layer | two buttons, battery ADC, GNSS on the expansion header; expansion slots for sounder/sensors (no SD) | verified on hardware: radio through the KCT8103L front end (TX and RX on air), GNSS fix + clock, panel, touch, both buttons; sounder is on an expansion module, none fitted on the bench unit | ### The Wireless Stick's memory @@ -155,8 +155,9 @@ display shows `bat 42%+` while charging and the status page says so in words. The `heltec-v4` environment was written from the board's published pin map and then proven on the bench (2026-09-02): radio both directions on air through the front end, GNSS fix and clock, panel, touch and both buttons — the table row above carries the -status. The sounder alone stayed silent and may not be fitted on every build of the -board. What follows is what that first session had to know; a new unit re-checks the +status. The sounder alone stayed silent, and for a reason that took opening the case +to learn: it is an expansion module — the pin runs to a slot, and the bench +unit's slots are empty. A fitted module should sound without a firmware change. What follows is what that first session had to know; a new unit re-checks the same list. What is different about this board, in the order it can bite: diff --git a/src/boards/heltec_v4.h b/src/boards/heltec_v4.h index 70b66fd..2476456 100644 --- a/src/boards/heltec_v4.h +++ b/src/boards/heltec_v4.h @@ -155,10 +155,11 @@ #define PIN_BUTTON2 35 #define HAS_BUTTON2 1 -// A piezo sounder on a PWM channel — not an audio path. The pin is the -// published map's; the bench unit produced no sound from it at any drive -// while everything else worked, so the part may not be fitted on all builds -// of the board. Driving it costs nothing either way. +// A piezo sounder on a PWM channel — not an audio path, and not on the board +// itself: the pin runs to an expansion slot, and the sounder is one of the +// modules that plug into it. The bench unit's silence at every drive was a +// slot with nothing in it. Driving the pin costs nothing without a module +// and is what makes one work the moment it is plugged in. #define HAS_BUZZER 1 #define PIN_BUZZER 6