Muzi Base SuperIO: GPS mode switch ignored at boot
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 70/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- cpp
- Domaine
- embedded-iot
Piste de recherche
Commence dans MuziBaseSensorManager::begin() et loop() dans variants/muzi_base/target.cpp, puis examine l'ordre de démarrage du companion autour de applyGpsPrefs() dans examples/companion_radio/main.cpp. Le changement proposé laisse _last_gps_sw à -1, de sorte que le premier loop() applique la position de l'interrupteur après la définition des préférences. C'est terminé lorsque la page GPS affiche gps on après une remise sous tension avec l'interrupteur en position médiane, et que tu as vérifié si variants/thinknode_m1/target.cpp présente le même problème d'ordonnancement. Du matériel est nécessaire pour confirmer la correction.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
On the Muzi Base (Uno/Duo) with the SuperIO, the companion firmware ignores the 3-position mode switch when the device boots. If the switch is already in the GPS position (Mode 2, middle) at power-on, GPS stays off. It only turns on after the switch is moved away and back.
Meshtastic uses the same switch for GPS on/off: SWITCH_MODE2 (P0.12, middle position) is defined as PIN_GPS_SWITCH[^1]. The SuperIO docs list the GPS module as part of the board[^2].
Cause
MuziBaseSensorManager::begin() reads the switch and calls start_gps()/stop_gps()[^3]. But in the companion, sensors.begin() is followed right away by the_mesh.applyGpsPrefs()[^4], which sets GPS from the saved gps_enabled pref (off by default). That overrides the switch state.
After that, loop() only reacts when the switch changes[^5], so the initial position is never applied again.
Steps to reproduce
- Flash
muzi_base_uno_superIO_companion_radio_ble(or the Duo equivalent). - Set the mode switch to the middle position (GPS on).
- Power cycle the device.
- Open the GPS page on the display: it shows
gps off(sw)instead ofgps on. - Move the switch away and back: GPS turns on.
Proposed fix
Let the first loop() apply the switch position, so it runs after applyGpsPrefs():
--- a/variants/muzi_base/target.cpp
+++ b/variants/muzi_base/target.cpp
@@ bool MuziBaseSensorManager::begin() {
pinMode(PIN_GPS_SWITCH, INPUT);
- _last_gps_sw = digitalRead(PIN_GPS_SWITCH); // initial gps state from the switch
- if (_last_gps_sw == HIGH) start_gps(); else stop_gps();
+ // leave _last_gps_sw at -1 so the first loop() applies the switch position.
+ // applying it here would be overridden by applyGpsPrefs(), which the
+ // companion runs right after sensors.begin().
+ _last_gps_sw = -1;
The ThinkNode M1 uses the same pattern (variants/thinknode_m1/target.cpp) and may have the same problem.
Environment
- Board: Muzi Base Uno + SuperIO
- Firmware:
main@ 81dbae5 (v1.18.0), envmuzi_base_uno_superIO_companion_radio_ble
[^1]: Meshtastic muzi_base variant, mode switch pins: https://github.com/meshtastic/firmwa6fdd4cd659498d28d8bd153/variants/nrf52840/muzi_base/variant.h#L64-L66
[^2]: Meshtastic docs, muzi ᴡᴏʀᴋꜱ Super IO: https://meshtastic.org/docs/hardware/devices/muziworks/muzi-base/super-io/
[^3]: https://github.com/meshcore-dev/MeshCore/blob/81dbae592ffad40b4212bc0b37e82b38da08f4bct.cpp#L44-L45
[^4]: https://github.com/meshcore-dev/MeshCore/blob/81dbae592ffad40b4212bc0b37e82b38da08f4bc/examples/companion_radio/main.cpp#L278-L281
[^5]: https://github.com/meshcore-dev/MeshCore/blob/81dbae592ffad40b4212bc0b37e82b38da08f4bc/variants/muzi_base/target.cpp#L63-L65
- Langage dominant
- C
- Étoiles
- 3.9k
- Forks
- 1.5k
- Merge moyen
- 2 j 20 h
- PR mergées (30 j)
- 36
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de meshcore-dev/MeshCore
-
Discover Filters Half WorkingOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
meshcore-dev/MeshCore#3698 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
meshcore-dev/MeshCore#3622 ·
Les mainteneurs répondent en général sous 1 jour
-
[Feature Request] Set Australia (Mid) Preset to automatically enable 2 byte default path hash sizeOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
meshcore-dev/MeshCore#3571 · 5 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
meshcore-dev/MeshCore#3567 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
RTC_RX8130CE writes and reads the one-hot WEEK register as a numberPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
meshcore-dev/MeshCore#3549 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de meshcore-dev/MeshCore
Issues similaires
-
[compiler-rt] Rtsan-aarch64-NoInstTest: error: no such file or directory: 'NOTFOUND' (libatomic)Ouvertebuild-problem compiler-rt:rtsan platform:linux
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
llvm/llvm-project#239039 ·
Les mainteneurs répondent en général sous 1 jour
-
component:obi contribfest go test
Difficulté 2/5 Moins d'une heure Accessibilité débutants 83/100
open-telemetry/opentelemetry-ebpf-instrumentation#4143 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
checkpoint-restore/criu#3304 ·
Les mainteneurs répondent en général sous 1 jour
-
Separate Installation Commands into Individual Code BlocksPeut-être pris @andrySD l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
colbymchenry/codegraph#3241 ·
Les mainteneurs répondent en général sous 1 jour
-
opcache: smm_shared_globals left pointing to a dead stack frame when there is no SHM backendOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour