Jakub b3c6416874 feat: melody assignment per channel/DM, dual ringtone slots, volume cleanup
Add second ringtone slot (ringtone2_*) to NodePrefs and DataStore.
Add per-channel and per-DM melody assignment (built-in / melody 1 / 2)
stored in NodePrefs bitmasks and DmMelodyEntry table.
Settings screen exposes DM/CH sound items; RingtoneEditorScreen supports
switching between slots. notify() uses buildMelodyFromPrefs() to select
the correct RTTTL string per contact.

Remove broken nRF52 volume control from buzzer.cpp: tone() uses
NRF_PWM2 with DECODER.MODE=Auto so TASKS_NEXTSTEP has no effect and
duty cannot be changed before the first DMA read without patching the
Arduino core. applyVolume() is now a no-op on nRF52.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 11:43:38 +02:00
2025-01-13 14:07:48 +11:00
2026-03-20 15:56:09 +08:00
2025-01-13 14:07:48 +11:00
2025-06-05 20:35:40 +12:00
2026-02-03 13:47:43 +13:00
2026-03-20 10:23:51 +11:00
2026-03-23 14:26:56 +01:00
2025-01-20 10:20:42 +11:00
2025-01-25 23:09:09 +11:00
2026-03-31 00:51:15 +13:00
2025-03-03 18:08:00 +13:00

Wio Tracker L1 — Extended Companion Radio Firmware

This branch extends the official MeshCore companion radio firmware for the Seeed Wio Tracker L1.

New Features

Messages Screen

View and send messages using the on-screen keyboard or predefined quick replies. The keyboard supports placeholders that insert live sensor data — {time} and {loc} are always available; additional placeholders ({temp}, {hum}, {pres}, {batt}, {alt}, {lux}, {co2}) appear automatically for sensors that are connected and returning data.

Press Enter on a message to open it in fullscreen. Navigate between messages with left (newer) and right (older).

Hold Enter on a message or channel to open a context menu: change per-channel notification settings (overrides the global sound setting) or mark messages as read.

Settings Screen

All settings are saved to flash and restored on next boot.

  • Display
    • Brightness
    • Auto-off timeout
    • Battery display mode (icon, %, V)
    • Clock seconds (show/hide — hiding reduces display refresh from 1 s to 60 s)
  • Sound
    • Buzzer: On / Off / Auto — Auto mode silences the device while connected via Bluetooth, and re-enables sound when the connection drops
    • Volume
  • Home Pages — toggle visibility of individual home screen pages
  • Radio
    • TX power
  • System
    • Timezone (UTC offset in hours)
    • Low battery shutdown threshold
  • GPS
    • Position broadcast interval
  • Contacts
    • Show all DMs or favourites only
    • Show all room servers or favourites only
  • Messages
    • Edit up to 10 quick reply templates

Clock Screen

A dedicated clock page on the home screen shows the current time and date, synchronized from GPS or via Bluetooth. Timezone offset is applied from Settings.

Up to three configurable data fields are displayed below the clock. Available fields: battery voltage, temperature, humidity, pressure, GPS coordinates, altitude, luminosity, CO₂, contact count, and total unread message count.

Nearby Nodes

Browse nodes that have recently advertised on the mesh. Filter by category (Favourites, All, Companion, Repeater, Room, Sensor). Select a node to see its coordinates, distance, bearing with cardinal direction, type, and last-heard time.

Use Send my advert (hold Enter → context menu) to broadcast your position and prompt nearby nodes to respond with theirs.

Tools Screen

Auto-Advert

Periodically broadcasts a 0-hop advert with your GPS position so nearby nodes can track your location automatically. Configurable interval: off / 1 min / 2 min / 5 min / 10 min / 30 min / 1 h.

A blinking A indicator appears in the status bar while Auto-Advert is active.

Ringtone Editor

A step sequencer for composing custom ringtones stored on the device. Supports up to 32 notes with adjustable pitch, octave, duration, and BPM. Playback preview is available directly from the editor menu.

Custom ringtones as per-channel or per-contact notification sounds are planned for a future update.

Auto-Reply Bot

Automatically replies to incoming messages that contain a configured trigger word (case-insensitive).

  • DM mode — when enabled, the bot listens to all incoming private messages and replies with the DM reply text.
  • Channel mode — optionally, select a channel for the bot to monitor. When a trigger is matched, it replies with a separate channel reply text.
  • Both modes can be active simultaneously and share the same trigger word but use independent reply texts.
  • Replies support placeholders ({time}, {loc}).
  • A 10-second cooldown prevents repeated replies in quick succession.

Feel free to explore, share feedback and feature requests!

Development

This fork tracks the upstream MeshCore repository. To prevent upstream changes from overwriting this README during merges, README.md is protected via .gitattributes. After cloning, run once:

git config merge.ours.driver true
Description
Companion firmware fork — offline GPS navigation (waypoints, compass, GPX export) on top of LoRa mesh messaging.
Readme 14 MiB
Languages
C 60.1%
C++ 37.9%
Python 1.4%
Shell 0.3%
HTML 0.3%