From 6cacbc0bb4e103c1aa8f56bc601c503c7ae5afe2 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Fri, 4 Sep 2026 09:19:50 -0700 Subject: [PATCH] fix(t096): hold GPS and TFT off on slim Co-authored-by: Cursor --- CHANGELOG.md | 4 ++++ variants/heltec_t096/T096Board.cpp | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47f8097b8..e5df8254a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ Add user-visible overlay work under **`## [Unreleased]`** in the same change set ## [Unreleased] +### Fixed + +- **T096 slim:** hold GPS off and TFT backlight off in `T096Board::begin()`. Slim never compiled the GPS driver, so `GPS_EN` (active-low) stayed high-Z after reset. + ## [1.17.1-ev1] - unpublished bench pin First `upstream-evN` pin. Rebase onto MeshCore `companion-v1.17.1`. Overlay from `0.1.3` carried forward. diff --git a/variants/heltec_t096/T096Board.cpp b/variants/heltec_t096/T096Board.cpp index 78af529d6..71e8fb7d2 100644 --- a/variants/heltec_t096/T096Board.cpp +++ b/variants/heltec_t096/T096Board.cpp @@ -13,10 +13,8 @@ const PowerMgtConfig power_config = { }; void T096Board::initiateShutdown(uint8_t reason) { -#if ENV_INCLUDE_GPS == 1 pinMode(PIN_GPS_EN, OUTPUT); digitalWrite(PIN_GPS_EN, !PIN_GPS_EN_ACTIVE); -#endif variant_shutdown(); bool enable_lpcomp = (reason == SHUTDOWN_REASON_LOW_VOLTAGE || @@ -49,7 +47,19 @@ void T096Board::begin() { pinMode(P_LORA_TX_LED, OUTPUT); digitalWrite(P_LORA_TX_LED, LOW); - periph_power.begin(); + periph_power.begin(); // VEXT off until display/GPS claim() +#ifndef DISPLAY_CLASS + pinMode(PIN_TFT_LEDA_CTL, OUTPUT); + digitalWrite(PIN_TFT_LEDA_CTL, !PIN_TFT_LEDA_CTL_ACTIVE); +#endif +#ifndef ENV_INCLUDE_GPS + // GPS_EN is active-low. Slim never compiled the GPS driver, so the pin + // stayed high-Z after reset and the module could sit powered. + pinMode(PIN_GPS_EN, OUTPUT); + digitalWrite(PIN_GPS_EN, !PIN_GPS_EN_ACTIVE); + pinMode(PIN_GPS_RESET, OUTPUT); + digitalWrite(PIN_GPS_RESET, PIN_GPS_RESET_ACTIVE); +#endif loRaFEMControl.init(); delay(1); }