Skip to content

[Bug]: GPS SerialPath from config.yaml silently ignored in 2.7.22 on linux #10206

Description

@maciejs20

Category

Other

Hardware

Linux Native

Is this bug report about any UI component firmware like InkHUD or Meshtatic UI (MUI)?

  • Meshtastic UI aka MUI colorTFT
  • InkHUD ePaper
  • OLED slide UI on any display

Firmware Version

2.7.22.56obs01bd4cfalpha

Description

GPS configuration from config.yaml is silently ignored in version 2.7.22. The daemon starts with Run without GPS even though the GPS: SerialPath is correctly defined in the config file. The same configuration works correctly on version 2.7.15.48 (beta).
The GPS module (L76K) is confirmed working — cat /dev/ttyAMA0 outputs valid NMEA sentences at 9600 baud. No other process is holding the serial port.

GPS configuration from config.yaml is silently ignored in version 2.7.22. The daemon starts with Run without GPS even though the GPS: SerialPath is correctly defined in the config file. The same configuration works correctly on version 2.7.15.48 (beta).

The GPS module (L76K) is confirmed working — cat /dev/ttyAMA0 outputs valid NMEA sentences at 9600 baud. No other process is holding the serial port.

Steps to Reproduce

  1. Install meshtasticd 2.7.22 on Raspberry Pi
  2. Configure /etc/meshtasticd/config.yaml with:
GPS:
  SerialPath: /dev/ttyAMA0
  1. Set GPS mode to enabled: meshtastic --host localhost --set position.gps_mode ENABLED
  2. Restart meshtasticd
  3. Observe logs: Run without GPS — no attempt to probe or open the serial port

Additional observations

  • meshtasticd -y (emit parsed YAML) never outputs the GPS section, regardless of where GPS config is placed (main config.yaml, config.d/ directory, or even a minimal standalone config file with only GPS defined)
  • Placing GPS config in config.d/gps.yaml — file is loaded (Also using ... gps.yaml) but GPS is still not initialized
  • position.gps_mode returns 1 (ENABLED) via CLI
  • The serial port is functional: /dev/ttyAMA0 at 9600 baud returns valid NMEA data from the L76K module
  • fuser /dev/ttyAMA0 does not show connected process
  • meshtasticd has rights to access /dev/ttyAMA0

Working version

Downgrading to 2.7.15.48~beta with the exact same config.yaml on the same platform immediately resolves the issue:

DEBUG | [GPS] Trying $PCAS06,0*1B (L76K)...
INFO  | [GPS] L76K detected
DEBUG | [GPS] NMEA GPS time set 2026-04-19 17:43:30 age 202

Expected Behavior

meshtasticd should parse the GPS: SerialPath key from config.yaml and probe the serial port for GPS modules, as it does in 2.7.15.

Actual Behavior

The GPS section is silently dropped during config parsing. No error is logged. The daemon proceeds without GPS.

Config files

/etc/meshtasticd/config.yaml:

Lora:
  Module: auto
GPS:
  SerialPath: /dev/ttyAMA0
I2C:
  I2CDevice: /dev/i2c-1
Logging:
  LogLevel: debug
Webserver:
  Port: 9443
  RootPath: /usr/share/meshtasticd/web
General:
  MaxNodes: 200
  MaxMessageQueue: 100
  ConfigDirectory: /etc/meshtasticd/config.d/
  AvailableDirectory: /etc/meshtasticd/available.d/
  MACAddressSource: eth0

LoRa hardware config loaded from config.d/lora-MeshAdv-900M30S.yaml (MeshAdv 900M30S hat with SX1262).

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinglinux-nativerelated to running meshtastic as daemon on native linuxneeds-logsDevice logs requested for triage

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions