Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

MeshTracker_X1 shutdown current ~10.8mA — powerOff() skips shutdownPeripherals()

Aperta Adatta ai principianti
#3,567 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c
Ambito
embedded-iot

Direzione di ricerca

Inizia da variants/meshtracker_x1/MeshTrackerX1Board.h e traccia MeshTrackerX1Board::powerOff() insieme a NRF52Board::powerOff() e shutdownPeripherals(). Conferma la sequenza di spegnimento esistente per LR2021 e GPS, quindi compila l’ambiente MeshTracker_X1_companion_radio_ble e verifica che lo spegnimento raggiunga lo stato system off con lo shutdown dei dispositivi periferici eseguito.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary:
On MeshTracker_X1_companion_radio_ble(companion-v1.17.1), entering powerOff() (long-press user button or CLI poweroff) leaves the board drawing ~10.81 mA

Root cause:
MeshTrackerX1Board::powerOff() overrides the base implementation but never calls NRF52Board::powerOff() / shutdownPeripherals()

Reproduction
Build env:MeshTracker_X1_companion_radio_ble, flash to X1.
Boot, wait >8 s (past the CLI-rescue window).
Long-press USER (P0.6) ≥3 s, release.
Measure system current on the supply rail: observe ~10.8 mA persisting after the LED/sd_power_system_off() sequence.

Suggested fix:
In variants/meshtracker_x1/MeshTrackerX1Board.h, replace the trailing sd_power_system_off(); with: delegate to NRF52Board::powerOff() so shutdownPeripherals() runs (LR2021 reset + sleep(), GPS stop) before SYSTEMOFF.

void powerOff() override {
    #ifdef HAS_GPS
        digitalWrite(GPS_VRTC_EN, LOW);
        digitalWrite(GPS_RESET, LOW);
        digitalWrite(GPS_SLEEP_INT, LOW);
        digitalWrite(GPS_RTC_INT, LOW);
        digitalWrite(GPS_EN, LOW);
    #endif

    #ifdef PIN_DRV_EN
        digitalWrite(PIN_DRV_EN, LOW);
    #endif

    #ifdef PIN_BAT_ADC_EN
        digitalWrite(PIN_BAT_ADC_EN, LOW);
    #endif

    #ifdef PIN_3V3_EN
        digitalWrite(PIN_3V3_EN, LOW);
    #endif

    // set led on and wait for button release before poweroff
    #ifdef LED_PIN
    digitalWrite(LED_PIN, HIGH);
    #endif
    #ifdef BUTTON_PIN
    while(digitalRead(BUTTON_PIN));
    #endif
    #ifdef LED_PIN
    digitalWrite(LED_PIN, LOW);
    #endif

    #ifdef BUTTON_PIN
    nrf_gpio_cfg_sense_input(BUTTON_PIN, NRF_GPIO_PIN_PULLDOWN, NRF_GPIO_PIN_SENSE_HIGH);
    #endif

    NRF52Board::powerOff();
  }
Lingua principale
C
Stelle
3.9k
Fork
1.5k
Merge medio
19h 9m
PR unite (30g)
27

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di meshcore-dev/MeshCore

Tutte le issue di meshcore-dev/MeshCore

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.