-
OpenMeshOS v0.1.0-beta.6 Pre-release
released this
2026-05-28 21:33:07 +02:00 | 0 commits to main since this release
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
bootloader.bin
0 downloads ·
2026-05-28 21:33:08 +02:00 · 14 KiB -
manifest.json
0 downloads ·
2026-05-28 21:33:08 +02:00 · 436 B -
openmeshos-0.1.0-beta.6-merged.bin
0 downloads ·
2026-05-28 21:33:08 +02:00 · 2.2 MiB -
openmeshos-0.1.0-beta.6.bin
0 downloads ·
2026-05-28 21:33:09 +02:00 · 2.1 MiB -
partitions.bin
0 downloads ·
2026-05-28 21:33:09 +02:00 · 3 KiB
-
Source code (ZIP)
-
OpenMeshOS v0.1.0-beta.5 Pre-release
released this
2026-05-28 21:14:14 +02:00 | 2 commits to main since this releaseAdded
- Settings-Übersicht als Button-Raster: 7 Kategorien als 2-Spalten-Kacheln statt flacher Liste (
ScreenSettings.cpp—_buildOverviewGrid()) ScreenLauncher::showDeferred(): LVGL-sichere Navigation zurück zum Launcher aus Event-Callbacks (nutztlv_async_call()— verhindert LoadProhibited-Absturz wennlv_scr_load()während Event-Dispatch aufgerufen würde)- BLE-Companion: MeshCore-App kann sich per Bluetooth andocken (Nordic NUS UUID
6E400001-…);BTCompanionServicekann ohne Neustart aktiviert/deaktiviert werden ops::text::sanitize()(src/utils/TextUtils.h/cpp): kopiert UTF-8-Text und ersetzt 3-Byte-Sonderzeichen (typografische Anführungszeichen U+2018/201C, Gedankenstriche U+2013/2014, Ellipse U+2026) durch ASCII-Äquivalente; Umlaute (U+00A0-00FF) werden unverändert durchgereichtscripts/gen_latin_fonts.sh: Skript zur Generierung erweiterter LVGL-Montserrat-Schriftdateien mit Latin-1-Supplement vialv_font_conv(für zukünftige volle Unicode-Unterstützung)scripts/download_tiles.pykomplett überarbeitet: konfigurierbarer Tile-Server (--server osm-de/maptiler/stadia), optionaler--api-key, Retry mit Backoff, 429-Header-Auswertung, klare 403-Fehlermeldung mit Lösungshinweis- WiFi-Integration: optionale WLAN-Konnektivität für NTP-Zeitsync
Config: neue FelderwifiEnabled,wifiSsid[33],wifiPsk[64](persistiert via NVS + SD JSON)WifiMgr: State-Machine (OFF → CONNECTING → WAIT_NTP → CONNECTED); Retry alle 60 s; NTP-Resync alle 6 h viaconfigTime()+time(nullptr)MeshService::setCurrentTime(): übergibt NTP-Epoch an ESP32RTCClockScreenSettings: WiFi-Einstellungsdialog (SSID-Textarea, PSK-Textarea mit Passwort-Modus, Enable-Toggle, Save/Cancel)main.cpp:WifiMgr::init()insetup(),WifiMgr::tick()inloop()
- Hashtag-Kanalpräfix: Channel-Namen im Home-Screen werden jetzt mit
#dargestellt (#channel-namestattchannel-name)
Fixed
- Absturz:
lv_scr_load()aus LVGL-Event-Callbacks — alle Screens (ScreenHome,ScreenSettings,ScreenHeard,ScreenMap,ScreenPower,ScreenSignal,ScreenFinder,ScreenTrace,ScreenContacts,ScreenRepeaters,ScreenMP3Player,ScreenTerminal,ScreenPlaceholder): direkteScreenLauncher::show()-Aufrufe in Event-Callbacks durchScreenLauncher::showDeferred()ersetzt - BLE-Gerätename
OPSOPS-0001:BTCompanionService::init()übergab"OPS"als Prefix →SerialBLEInterface::begin()hängte ihn vor den Callsign → doppelter Prefix. Fix: leerer Prefix"", Gerätename ist direkt der Callsign - BLE-PIN: Standardwert 123456 → 0 (Just-Works-Pairing); MITM-Modus bleibt in
SerialBLEInterfacehardkodiert (MeshCore-Submodul, read-only) - Notification-Popup zeigt
?— Emoji und Sonderzeichen:_showNotifyPopup()inUIScreen.cpp:emojiFont()statt plain Montserrat;ops::text::sanitize()ersetzt 3-Byte-SonderzeichenScreenHome::_addBubble():emojiFont()fürmsgLbl
emojiFont()Memory-Leak (src/ui/Emoji.cpp):lv_imgfont_create()wurde bei jedem Bubble-Aufbau neu aufgerufen (500–1000 Bytes pro Nachricht verloren). Fix: statischer Cache nachline_height(max 8 Slots), Font-Objekte werden einmal angelegt und wiederverwendet- Tile-Download 403-Fehler (
scripts/download_tiles.py):tile.openstreetmap.orgblockiert Bulk-Downloads per Policy. Fix: deutscher OSM-Spiegel als Standard, konfigurierbarer Server mit API-Key-Unterstützung; User-Agent von "Saitama" auf "OpenMeshOS" korrigiert strcpy(buf, "--")Compiler-Warnungen inScreenPlaceholder.cpp— durchsnprintf()ersetzt- Config SD-Priorität:
config::init()lud bisher NVS zuerst (blob) — nach Firmware-Update ohne Struct-Größenänderung wurde dadurch veraltete NVS-Version geladen statt aktueller SD-JSON. SD ist jetzt primär (wie Contacts/Repeaters) MapEngine:mapTileDirConfig-Feld hatte keinen Effekt —init()nimmt jetzt den Pfad als Parameter,tileExists()/readTile()verwenden ihn statt hartkodiertem/ops/maps/Config: DefaultmapTileDirvon/mapauf/ops/mapskorrigiertScreenMap._build(): PSRAM-Leak bei fehlgeschlagener Puffer-Allokierung behoben;_screenwird korrekt gelöscht und aufnullptrgesetzt damitshow()erneut versuchen kannScreenMap.navigate(): Breiten-Panning verwendete linearedegPerPx-Näherung statt inverser Mercator-Formel — korrigiert durch Umrechnung in Kachel-Y-Raum und zurückScreenTrace._lookupNodeName(): Toter Code (fehlerhafte Pointer-Arithmetik, immer offset 0) entfernt; nur die korrekte Hex-Formatierungsschleife verbleibtCLAUDE.md: Trackball-Pin-Tabelle korrigiert — DOWN=GPIO15, LEFT=GPIO1, RIGHT=GPIO2 (vorher vertauscht)MapEngine.h: Kommentar inhasTileDir()korrigiert (/maps/→/ops/maps/)MeshService.cpp— MeshCore vollständig verdrahtet:OPSBoard::getMCUTemperature():temperatureRead()(ESP32-S3 interne Temperatur)OPSBoard::reboot():ESP.restart()explizit überschriebenOPSMesh::tickGpsSync(): GPS→RTC-Zeitsync alle 30 s, nur vorwärts (gleiche Guard wie BLE-Companion); UTC-Datum viaBoard::gpsDateTime(), Epoch via eigenem_utcToEpoch()(keintimegm()auf ESP32)MeshService::tick()rufttickGpsSync()auf
Config.cpp:screenOffMinundnotifySoundChoiceJSON-Fallback verwendet jetzts_cfg-Wert statt hartkodierter 0 — konsistent mit allen anderen FeldernMeshService.h:MAX_TRACE_HOPS = 64Konstante eingeführt;snrs[]/hashes[]Arrays und der Receiver-Guard inonTraceRecv()verwenden sie statt magischer Zahl 64- Projektname: alle Copyright-Header, Runtime-Strings und Kommentare von "Saitama" auf "OpenMeshOS" umgestellt —
ScreenBootzeigt jetzt "OpenMeshOS", Terminal-Begrüßung und Log-Ausgaben ebenfalls;Board.cpp/Board.h(read-only) ausgenommen
Changed
- SRAM-Optimierung — ~56 KB nach PSRAM verschoben (
EXT_RAM_BSS_ATTR):Contact s_contacts[50]7.800 B,Repeater s_reps[50]7.600 BMsgEntry s_history[30]8.370 B,TraceTarget s_targets[100]3.700 B, Dropdown-Buffer 4.000 BDiscoverEntry s_results[20]1.460 B- MP3-Dateilisten
_filePaths/Names[64]12.288 B - Sound-Synthesepuffer (Ping/Pluck/Clear/Whoosh) 9.600 B
- ScreenTerminal
lsbuf[1024]+[512]1.536 B
- Config SD-Primär: Ladereihenfolge in
config::init()geändert: SD JSON → NVS-Blob → Legacy-NVS-Keys → Defaults (entspricht Contacts/Repeaters-Muster) - Contacts, Repeaters, Routes: bereits SD-primär (seit beta.4); Config schließt jetzt auf
- Settings-Übersicht: flache Liste → 2-Spalten-Kacheln (7 Kategorien)
OPS_HAS_BUILTIN_GPS-Flag inplatformio.inidokumentiert: auf=0setzen spart ~800 Bytes SRAM + ~4 KB Flash- README: Original-Verweis auf Saitama by 868-Meshbot oben eingefügt
- README: Projektname durchgängig auf "OpenMeshOS" umgestellt
- README: Clone-URL auf dieses Repository korrigiert
- README: Version auf 0.1.0-beta.4 aktualisiert
- README: Nicht-existierende
Keyboard.h/cppaus Projektstruktur entfernt - ROADMAP: Version und LVGL-Version korrigiert, Config-Speicher-Beschreibung angepasst
- ARCHITECTURE: LVGL-Version (9→8.3), Memory-Map-Label, Config-Storage-Tabelle korrigiert
- CLAUDE.md: Projektname, Version und Lizenz-Header-Konvention auf OpenMeshOS aktualisiert
- VERSIONING.md: Projektname und Versionsreferenzen aktualisiert
- docs/TODO.md: Fehleranalyse hinzugefügt, behobene Punkte als erledigt markiert
Fixed
- Dokumentations-Inkonsistenzen: LVGL 9 → 8.3 (ARCHITECTURE, ROADMAP)
- Dokumentations-Inkonsistenzen: Config-Storage SPIFFS → NVS+SD (ARCHITECTURE, ROADMAP)
- Memory-Map-Eintrag 0xC90000 falsch als "SD card FS" beschriftet
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
bootloader.bin
0 downloads ·
2026-05-28 21:14:15 +02:00 · 14 KiB -
manifest.json
0 downloads ·
2026-05-28 21:14:15 +02:00 · 436 B -
openmeshos-0.1.0-beta.5-merged.bin
0 downloads ·
2026-05-28 21:14:15 +02:00 · 2.2 MiB -
openmeshos-0.1.0-beta.5.bin
0 downloads ·
2026-05-28 21:14:16 +02:00 · 2.1 MiB -
partitions.bin
0 downloads ·
2026-05-28 21:14:16 +02:00 · 3 KiB
- Settings-Übersicht als Button-Raster: 7 Kategorien als 2-Spalten-Kacheln statt flacher Liste (