Skip to content

Releases: MrPsyware/echoscope

EchoScope 0.16.0 — standalone original and radar visitors

Choose a tag to compare

@MrPsyware MrPsyware released this 05 Oct 22:08

EchoScope 0.16.0 — standalone original and radar visitors

The original EchoScope now offers aircraft photos, maps, airports, routes and
weather without running Docker. Each feature automatically prefers a capable
information server when one is configured. Both knobs also gain four optional
animated radar visitors.

Original EchoScope: more without a server

  • Aircraft photos: look up the selected aircraft by registration through
    Planespotters.net, decode baseline and progressive JPEG thumbnails locally,
    and fit the picture alongside the existing aircraft details. Photographer
    credit stays on screen; http://KNOB-IP/photo links to the original photo.
  • Bounded photo caching: keep eight recent thumbnails in PSRAM for reuse for
    one hour, with shorter negative/error caching and rate-limit backoff. Fetch
    only for a visible details/logbook photo page, separate metadata/image work
    between aircraft polls, and discard obsolete display results. Missing photos
    leave the full text layout. The cache resets on reboot and does not use flash.
  • Maps: fetch OpenStreetMap tiles on demand for the current radar or airport
    approach view. Project and colour them on the device, using the same subdued
    palette as the information server. Circular edges blend into the radar
    background, without the earlier square-edge patches.
  • Persistent map cache: retain PNG tiles in the existing LittleFS data
    partition across reboots and application updates. Fresh tiles are kept for at
    least seven days. “Preparing map” reports progress while radar remains usable;
    tiles are not prefetched for unused ranges. OSM attribution remains visible.
  • Airports: include 1,153 worldwide large scheduled-service airports, with
    runway geometry where available. Configure up to 32 custom locations using
    CODE: longitude/latitude; custom entries override matching built-in codes.
    The nearby menu includes up to nine airports within 300 km, and explicitly
    selected airports remain accessible. Markers and the 20 km approach radar
    work without the server.
  • Routes: query adsbdb directly for the selected callsign and cache recent
    lookups. Unresolved callsigns or registrations show unavailable. These are
    route records, not flight plans, scheduled arrivals or live ETAs.
  • Weather/clouds: query Open-Meteo for next-hour, today, three-day and
    next-night cloud information. Standalone forecast times are labelled UTC.
  • Automatic provider choice: no “internal mode” switch is needed. An absent
    server capability uses its local provider; failed photo, airport, weather and
    route requests can fall back locally. Maps choose their provider through
    server capability/health discovery.

Hold the original's knob for five seconds to open Setup. Leave Info server URL
blank for standalone operation, or retain it to prefer the server. Map and
built-in/custom airport settings are grouped under Maps and airports.

Space stations/pass predictions, the logbook, family-flight tracking/pickup and
the separate stargazing page still require the optional information server.
Cloud forecasts remain available in standalone Weather. Mini retains its smaller
standalone feature set; it does not gain the original's photos/maps/weather.

Both knobs: optional radar visitors

Add any of dr evil, nyan cat, santa or ufo to the callsign watchlist for
random appearances roughly one to three hours apart:

  • Dr Evil's green-outline rocket with a faint trail.
  • Nyan Cat with an animated rainbow trail.
  • Santa's sleigh and moving reindeer, available year-round when enabled.
  • A UFO that crosses, hovers with a faint beam, then accelerates away.

Each visit lasts 20 seconds. One visitor appears at a time, stays inside the radar
circle, and stops when leaving radar or sleeping. Visitors never enter aircraft
counts, alerts, MQTT data or the logbook, and never wake the screen.

Manual triggers work independently of the watchlist and do not require Setup:

curl -X POST -H 'X-EchoScope-Fun: nyan-cat' http://KNOB-IP/easter-egg

Use dr-evil, santa or ufo for the other visitors. The radar must be awake and
visible; manual triggers share a 30-second cooldown. This is a LAN novelty
endpoint, separate from authenticated device control and firmware uploads.
See the visitor guide.

Information server

The existing server remains compatible; no database migration or mandatory Docker
update is needed for these features. Logbook encounter tests now use fixed UTC
fixtures so CI results do not depend on the time of day. The existing seven-day
server photo cache and logbook storage are unchanged.

Downloads and upgrading

Choose the image for your hardware. Original ESP32-S3 and Mini ESP32-C3 images
are not interchangeable.

Device Settings-preserving update First installation Checksums
Original ESP32-S3, 466×466 echoscope-app-0.16.0.bin echoscope-merged.bin SHA256SUMS
Mini ESP32-C3, 240×240 echoscope-mini-app-0.16.0.bin echoscope-mini-merged.bin MINI-SHA256SUMS

Unversioned *-app.bin assets contain the same applications. Use application
images for updates that retain settings and map storage. Merged images are for
first installation and overwrite the configuration area. There is no partition
layout change in this release.

From an up-to-date checkout of main:

git switch main
git pull --ff-only
# Original: hold the knob for five seconds to unlock Setup first.
make upload IP=192.168.2.151
# Mini: use its actual USB data port; keep the knob released during reset.
make mini-upload PORT=/dev/ttyACM0

Build only with make firmware or make mini-firmware. If updating the optional
server, run git pull --ff-only then make docker on its host and retain its
existing volumes. Publishing this release does not reflash either device.

Validation and limits

Both release firmware targets build. Original model, JSON/protocol, standalone
provider/photo, visitor and network-tool tests pass, as do Mini input/feed/feature
tests and the 55 information-server tests. Decoder tests cover progressive and
baseline JPEGs, colour/byte order, resizing, damaged/oversize inputs, attribution
and cache eviction/expiry. A real provider thumbnail decoded successfully on the
host, including under AddressSanitizer/UndefinedBehaviorSanitizer; photo hosts
verified with the device's trust roots and TLS settings.

Development firmware ran on both devices. The original's standalone maps were
exercised and its latest photo build was uploaded, booted and resumed live data.
Direct photo rendering/performance on the physical knob and the complete matrix
of provider failures, all map ranges and sleep during downloads have not yet been
recorded. See validation details.

Standalone maps use a conservative 2.64 MiB tile-cache budget. Only expired tiles
are pruned; if fresh tiles fill the cache, a new map may be unavailable until space
can be reclaimed. Nonempty unmountable storage is not automatically formatted.
Polar maps outside the supported Mercator area are unavailable. Public data and
thumbnail coverage depend on their providers. Provider terms and attribution
continue to apply; Open-Meteo's free hosted service is intended for non-commercial
use. No API keys are required by the standalone providers in this release.

Standalone guide ·
Mini guide ·
All changes since 0.15.0

EchoScope 0.15.0 — Mini, shared controls and airports

Choose a tag to compare

@MrPsyware MrPsyware released this 04 Oct 02:17

EchoScope 0.15.0 — Mini, shared controls and airport selection

EchoScope now supports both the original 466×466 touch knob and the standalone
240×240 EchoScope Mini. This release also brings a searchable logbook website
and fixes for Mini setup/sleep and information-server storage.

Original EchoScope

  • Rotate through aircraft and visible airports on the radar, then click to
    open the selected item. Airports have an orange selection ring and heading.
  • Tap airport icons or labels to open their details directly. The information
    server includes the chosen airport even outside the usual nearest-nine list.
  • Use the knob without touch: click opens a selection, double-click returns
    to radar (or opens Information from radar), hold and turn changes radar mode
    or detail page, and hold still for five seconds opens setup.
  • Touch remains a shortcut for selecting objects, changing pages and opening
    Information. Aircraft overlapping airports retain tap priority.

EchoScope Mini

For the VIEWE UEDX24240013-MD50E: ESP32-C3, 4 MB flash, 240×240 display, rotation
and button. No Docker server is needed.

  • Live airborne aircraft from adsb.fi over verified HTTPS, two detail pages,
    bounded altitude-coloured trails and type/registration/callsign watchlists.
  • Subtle pulsing watch alerts with adjustable brightness. Use A388 for A380s.
  • Built-in markers for 17 major UK airports, or up to 32 custom entries using
    CODE: longitude/latitude. Markers and trails sit behind aircraft.
  • Web configuration for Wi-Fi, location, starting range, brightness, sleep,
    trails, watches and airports.
  • Saving now restarts the device cleanly before reconnecting. The active-low
    backlight is corrected: Sleep is fully dark and brightness works as labelled.
  • Mini build/test/package targets and downloadable application/initial-flash
    images. The Actions artifact is now named echoscope-mini.

Mini retains the nearest 32 aircraft. Watch alerts cover those retained aircraft;
feed polling pauses while asleep or showing Setup. Mini currently supports USB
updates, without the original's info-server extras or wireless update endpoint.

Information server

  • A dark root-page dashboard with searchable logbook, category/date filters,
    pagination, project information and photo-cache management. Existing sighting
    links continue to work.
  • Writable, bounded temporary storage fixes SQLite SQLITE_IOERR_GETTEMPPATH
    errors in the read-only container. Database failures return an explicit error
    and log extended SQLite diagnostics.
  • make docker-db-check checks integrity and storage without deleting history.

Downloads and updating

Choose the firmware for your hardware; the ESP32-S3 and ESP32-C3 images are not
interchangeable.

Device Update image First-install image Checksums
Original ESP32-S3 echoscope-app-0.15.0.bin echoscope-merged.bin SHA256SUMS
Mini ESP32-C3 echoscope-mini-app-0.15.0.bin echoscope-mini-merged.bin MINI-SHA256SUMS

The unversioned *-app.bin downloads contain the same application as their
versioned counterparts. Use application images for updates that retain settings.
Merged images are for first installation and overwrite the configuration area.

From a checkout updated to this release:

git pull
# Original: hold the knob for five seconds to open Setup, then:
make upload IP=192.168.2.151
# Mini: select its actual USB port (make ports lists devices):
make mini-upload PORT=/dev/ttyACM0

On the Docker server, run git pull then make docker. Keep the existing volumes
to retain the cache and logbook. Update the information server alongside the
original firmware for airport shortcuts. Mini users do not need this step.

Build images locally with make firmware or make mini-firmware; outputs are in
dist/ and dist/mini/. See the README
and Mini guide.

Validation

Host model/input, JSON/protocol, Mini gesture/feed/feature tests, and 54 server
tests pass. GitHub Actions builds both firmware targets and exercises the
server's Docker storage restrictions. Both devices ran the feature updates on
hardware; Mini Save was verified to retain configuration and resume live feeds,
and the user confirmed fully dark sleep and normal wake. The release version
builds are supplied here; publishing this release does not reflash devices.

EchoScope 0.14.0 — larger airport radar and idle controls

Choose a tag to compare

@MrPsyware MrPsyware released this 03 Oct 00:21

Airport approach radar now fills the main radar circle with a 20 km radius, matching aircraft symbols, altitude trails, sweep and optional airport-centred map. Runways, page arrows and coverage information remain overlaid.

  • Airport code labels stay underneath aircraft instead of disappearing near traffic.
  • Radar controls hide after 30 seconds. A mode click or bottom touch reveals them and performs its normal action immediately.
  • Map attribution remains visible in muted green.

Update both the firmware and Docker information server (git pull then make docker) for 20 km maps. Airport traffic still comes from the home feed, with partial/outside coverage labelled.

Firmware: hold the knob for five seconds to enter setup, then make upload IP=192.168.2.151. Use the application image for updates; the merged image is for initial flashing.

Validation: host tests, 46 server tests, native UI interaction/render checks and ESP32-S3 build passed. Application 1,779,080 bytes; static RAM 99,140 bytes. Existing map framebuffer reused. No device was automatically flashed.

EchoScope 0.13.1 — altitude history trails

Choose a tag to compare

@MrPsyware MrPsyware released this 30 Sep 20:40

The highlighted live aircraft's trail now shows its recorded altitude along the flight path.

  • Green below 5,000 ft, cyan 5,000–14,999 ft, blue 15,000–29,999 ft, purple at 30,000 ft and above. Unknown heights use muted grey-green.
  • The selected aircraft and label remain orange. Its altitude-coloured trail stays thicker and brighter than other paths.
  • Trail simplification preserves altitude-band changes, and bounded history thinning keeps positions and heights aligned.
  • Uses 48 KiB additional PSRAM; no extra network requests. Saved logbook tracks are unchanged.

Firmware-only update: git pull, hold the knob for five seconds, then make upload IP=192.168.2.151. No Docker update needed for this feature.

Local host tests, native LVGL preview and release build passed. Application: 1,777,868 bytes; static RAM: 98,828 bytes. Knob not flashed.

EchoScope 0.13.0 — airport approach radar

Choose a tag to compare

@MrPsyware MrPsyware released this 29 Sep 20:35

Airport selection now follows your overlay filters, with a close-up radar page for each airport.

  • Nearby airports applies Airline/All and size filters before selecting the nearest nine matches. Overlay Off hides icons only; the airport list uses Airline mode with the saved size filter.
  • Rotate to select an airport. The outer ring shows airports; < / > switches details and approach pages. Rotation preserves the page; centre tap/click returns to radar.
  • North-up approach radar covers a 10 km radius around the airport, with actual runway endpoints where available and nearby aircraft/available trails from the current home feed.
  • Runways are cached daily from OurAirports. Up to three longest open runways with valid endpoints are retained. Missing data uses a centre marker, without inventing runway alignment.
  • Coverage/stale data is labelled. This is a proximity display using the existing approximately 100 km home feed, current type/altitude filters and 64-aircraft limit—not confirmed arrivals/departures. No extra aircraft polling is added.

Verified against current OurAirports data around 51.5, 0: Gatwick appears in the filtered list and supplies 08R/26L and 08L/26R runway coordinates. 45 service tests, Docker endpoint checks, native LVGL navigation/render checks and release firmware build passed. Device not flashed.

Update both Docker (git pull, make docker) and firmware (git pull, hold the knob for five seconds, make upload IP=192.168.2.151). Open Information → Nearby airports, then tap either side arrow for the approach view.

EchoScope 0.12.0 — airport overlay

Choose a tag to compare

@MrPsyware MrPsyware released this 29 Sep 19:55

Airport markers on the radar, supplied automatically by the info server.

  • Default: airports with scheduled airline service, labelled with IATA codes such as LGW/LHR (ICAO/local code fallback).
  • Web setup → Info server features → Airport overlay: Off/Airline/All; Any/Medium + large/Large only; labels; colour and brightness.
  • Muted blue-grey square/runway symbols at 35% brightness, behind aircraft and trails. Overlapping labels and crowded markers are suppressed.
  • Works with plain radar or the street-map background. Up to 32 airports within radar range, prioritising airline service and larger airports. Range changes refresh the overlay automatically.
  • Separate capability discovery hides the feature on older/unavailable servers. Existing airport caches upgrade automatically to include size categories.

Update both the Docker service (git pull, make docker) and firmware (git pull, hold the knob for five seconds, make upload IP=192.168.2.151). Defaults enable the overlay when the updated server is available; no API key or MQTT setup is needed.

41 service tests, firmware host tests, Docker endpoint smoke checks and native LVGL rendering checks passed. Firmware application: 1,773,192 bytes; static RAM: 97,716 bytes. Physical hardware has not been flashed.

EchoScope 0.11.0 — controls and watchlist wake

Choose a tag to compare

@MrPsyware MrPsyware released this 27 Sep 20:59

Four consistent radar controls, cleaner navigation and sleeping watchlist monitoring.

  • Click cycles Range, Aircraft, Alt and Type. Tap selects a control; another tap advances its value. Alt and Type values appear together below.
  • Changing aircraft or logbook entry preserves the route/trace page. Missing routes say “Unavailable”.
  • Information menu groups Logbook, Family flight, Airports, Weather, Stargazing and Space stations. Server-dependent settings are grouped together in web setup.
  • With the screen off, aircraft polling continues every 30 seconds, returning to 5 seconds for fresh visible watch matches. Optional “Wake screen for watched aircraft” returns to sleep when the match leaves unless you interact. Range and filters apply; error backoff remains active. Explicit remote screen-off suppresses watch wake until the match leaves.
  • Fresh interesting aircraft continue recording in the server logbook while the screen is off.

Update both firmware and Docker service. The new watch-wake option is off by default, under Watchlist in web setup. It works without Docker.

Firmware: hold the knob for five seconds, then make upload IP=192.168.2.151 from the updated checkout. Docker server: git pull then make docker.

Host tests, 37 service tests, native LVGL navigation/render checks and Docker build passed. Physical hardware has not been flashed by this release.

EchoScope 0.10.0

Choose a tag to compare

@MrPsyware MrPsyware released this 27 Sep 15:31

EchoScope now uses one navigation pattern across its detail and information views.

  • Rotate to change items; outer-ring segments indicate the selected item.
  • Tap < / > for pages within that item. Aircraft swipes/slides remain available.
  • Centre tap or short press returns to radar; hold the screen still for 2 seconds for Information. Hold the mechanical button 5 seconds for setup.
  • Radar filter moves beside ALT: ALL / WCH / HEL / MIL / LGT / LRG.
  • Logbook adds attributed aircraft photos, captured database routes and static recorded-track maps with OpenStreetMap/grid fallback. It continues recording interesting aircraft only.
  • One-week disk thumbnail cache, capped at 256 photos; manual clear button at the Info Server's /cache page.

Update both Docker (git pull, make docker) and firmware (git pull, hold setup 5 seconds, make upload IP=192.168.2.151). Existing log records migrate automatically. Their past paths cannot be reconstructed; new encounters record paths from this update onwards.

Interface conventions · Logbook/server guide

Validated: firmware host checks and ESP32-S3 build, 36 service tests, Docker endpoint/cache smoke checks and native LVGL layouts/navigation. Firmware: 1,764,188 bytes; static RAM: 96,900 bytes. Hardware not flashed by the release process.

EchoScope 0.9.0

Choose a tag to compare

@MrPsyware MrPsyware released this 27 Sep 03:24

EchoScope gains Home Assistant controls and a connected observing workflow.

  • MQTT discovery: page/aircraft selectors, aircraft list and status, brightness, screen sleep/wake and family pickup controls.
  • Family pickup: pin the flight, keep the display awake, and alert when a fresh position is within your chosen distance of the arrival airport.
  • Spotting log: persistent interesting-aircraft history, Today's highlights on the knob, and full paged web history.
  • Stargazing: darkness windows, Moon illumination, cloud outlook and visible space-station passes, with optional wake alerts and live countdown.

Update both firmware and Docker. Hold the knob five seconds, enable authenticated LAN integration and copy the device API token. Configure the server's info-service/.env, then make docker. MQTT is optional for history/alerts. The service still listens on 0.0.0.0:8086.

Setup and topic/API guide

Validated: firmware host checks and ESP32-S3 build, 28 Python tests, isolated Mosquitto command/discovery test, live Docker astronomy/weather requests and native LVGL layout/navigation. App: 1,739,348 bytes; static RAM: 93,348 bytes. Physical device and user's Home Assistant have not been updated/tested by this release process.

Use echoscope-app.bin for wireless or app-only updates. The merged image is for full installation; keep your existing settings with the app image.

EchoScope 0.8.1

Choose a tag to compare

@MrPsyware MrPsyware released this 27 Sep 01:27

Small control refinements:

  • Start in aircraft-selection mode rather than range mode.
  • Centre taps return directly to radar from either aircraft-details page.
  • Arc touch areas cover a wider band and the ends of the curve; swipes remain available.
  • Reverse INFO menu rotation while retaining the first available item on entry.
  • Add weather side taps and arrows: left goes back, right advances, wrapping at the ends. Centre returns to INFO.

Firmware-only update: git pull, hold the knob for five seconds, then make upload IP=192.168.2.151 (or your device's IP). The Docker service is unchanged.

Host tests, firmware build and native LVGL navigation assertions passed. Weather arrows were visually checked. Application: 1,724,440 bytes; static RAM: 93,164 bytes. Physical touch/rotation feel awaits device confirmation; the knob has not been flashed.