Everstra Live — Release notes
Every release since the first version, newest first.
v0.8.0
2026-10-14
- Security: Streams over RTMPS (TLS) were encrypted, but until now the app did not check the streaming server's certificate — so the connection was not protected against someone intercepting it and posing as the server, who could then have received the stream key. The certificate is now checked. For a server you trust with a self-signed certificate there is a per-stream switch “Allow unverified certificate (not recommended)”. The check needs the correct camera date and time — set an NTP server in the camera settings; if the check fails, the Stream tab says why instead of “Input/output error”.
- Update note: Streams that already ran over RTMPS keep working after the update — for them the certificate check stays off, and the stream's settings show a notice. For YouTube, Facebook, Twitch and other public servers you can switch it on safely (recommended).
- Security: Keep-Alive over SFTP did not check the server's host key — heartbeat and login could have gone to any machine posing as your server. SFTP now needs the server's SHA256 fingerprint(s) and checks the key before logging in; without a fingerprint nothing is sent.
- Update note: Keep-Alive set to SFTP needs the server's host key fingerprint after the update (“Fetch fingerprint” in the Keep-Alive settings, or paste the output of “ssh-keyscan <server> | ssh-keygen -lf -”). Until they are entered, nothing is sent and stream 1 does not start while the failover state cannot be read — the safe direction, as for any unreachable failover server. Keep-Alive over FTPS keeps working unchanged.
- Security: Keep-Alive over FTPS no longer falls back silently to an unchecked connection when the camera has no certificate store; it sends nothing and says so in the log.
- Security: Other apps installed on the camera could until now reach this app's internal endpoints directly, without the camera's login check — the app's FastCGI socket was reachable for other local processes, a side entrance past the web server. It is now closed: access goes only through the camera's web server and its login.
- Security: An audio file name could, if a file with an unusual name was put on the SD card from another computer, break out of the delete button on the Audio page and run code in the browser. The name is now handled as plain data.
- Security: A licence is now accepted only in the form this app's own page sends it. Until now a web page on another site, opened in the same browser while you were logged in to the camera, could send the camera a licence file in your name — it could not install a forged licence (every licence is checked against this camera), but the way in is now closed. If you install licences with your own scripts: send {"license": "<file content>"} with Content-Type: application/json.
- Security: The light/dark setting stored whatever was sent along with it on the camera, and it could be changed by a web page on another site opened in the same browser. Nothing of it was ever shown or run, but now only the mode itself is stored, and only from the app's own page.
- Fix: The Privacy page did not show the warning for Keep-Alive over unencrypted FTP, although the camera reported it; it now appears as a yellow notice on the Keep-Alive entry.
- New: The e-mail texts — subject and body for stream stopped, too many restarts, back after a failover, the reminders after a manual stop, and the test e-mail — can now be pre-filled from a language list (12 languages), per stream or all texts at once, and stay freely editable; the default stays English. The reminders and the test e-mail were fixed English text until now; they are templates now too. The reminder is one template with {minutes} and {count} (“1/3” … “3/3”), so its default English wording changed slightly.
- New: Keep-Alive: the protocol comes first, in order of ease (FTPS as the default, then SFTP, FTPS implicit, FTP without encryption last), with a short note on what the choice means; a port field; “Allow unverified certificate (not recommended)” for a server with its own certificate, shown after a certificate error or on request (the connection stays encrypted); FTP without encryption selectable for trusted local networks, with a warning; for SFTP “Fetch fingerprint” (no login) with one-click take-over. The last transfer problem is shown in the Keep-Alive settings, and “Recommended client values” now include protocol, port, verify and host key.
- Failover client 0.5.0 (download it from Everstra Live — updating the camera does not update the client): SFTP with host key check (needs python3-paramiko), settings for port and for a server with its own certificate (verify: false), and implicit FTPS now actually works. Same protocol names as the camera: ftps_explicit, ftps_implicit, sftp, ftp_plain.
- Privacy page: the exports now show the encryption that the page shows — the CSV has the columns “protocol” and “encrypted”, and the PNG marks every connection that travels without encryption as “unencrypted”.
- Change: The port field of an FTP connection now holds the protocol's standard port — 21 for FTP and FTPS, 990 for implicit FTPS, 22 for SFTP — instead of being left empty. It follows when you switch the protocol; a port you typed yourself stays.
- Change: The language choice for a single text is now a small globe at the end of the field instead of a full list under every field — the page is tidier, and the list that fills all fields of a panel at once stays where it was.
- Fix: Saving settings while a stream runs now asks in the page's own dialog instead of a browser pop-up; Cancel keeps everything as it was. Starting the failover test asks the same way.
- Notices on the settings pages behave the same in every Everstra app: a success or info message goes after a few seconds, a warning or an error stays until the next message, so it cannot vanish before it is read, and a new message no longer hides a fresh error early.
- Fix: The Privacy page now opens in the light/dark mode saved on the camera; it always opened dark.
- Fix: E-mail subjects with umlauts, accents or Cyrillic letters went into the mail header unencoded — some mail servers rejected such mails, others showed broken characters. Subjects are now encoded as the mail standard requires (RFC 2047); a plain-English subject looks exactly as before.
- Fix: {failover_duration} was replaced only where it first appeared in a template; it is now replaced everywhere.
- Fix: Text settings longer than their field were cut at a byte count, possibly in the middle of a character; they are now cut only between whole characters.
- Fix: After a restart, the camera judged the failover file with the default stale timeout (300 s) until the settings were saved once; it now uses the configured value from the start.
v0.7.0
2026-10-11
- New: Online activation. In the License tab, “Activate online” lets the camera fetch its licence key itself, in one click. The camera contacts activate.everstra.com once — only when you click — and sends its hardware ID, its model, its firmware version (e.g. 11.11) and the module name, plus an e-mail address if you enter one for a copy of your key. The hardware ID is used only to sign the key and is not stored. Offline activation with a key file works as before.
- Privacy: Activations are counted anonymously — only the module, the camera model, the firmware version (major.minor) and the day of activation, without time of day, to keep Everstra working on the cameras and firmware in use; no hardware ID, no IP address, no e-mail address. The License tab lists what is kept and what is used once and discarded. The privacy policy on everstra.com and the app's Interfaces page now list the activation connection. In operation the app does not contact Everstra.
- Licence: After an online activation the key is shown in the app and can be downloaded as a file; after a reinstall on the same camera it can be loaded again without any server contact. The licence agreement (EULA) is updated to version 1.1 accordingly.
- Licence: The app reads the new licence format issued by the online activation. Existing licence files remain valid — nothing to do.
- Licence: A licence key can also be pasted into the License tab instead of choosing a file. Licence files are now named with the camera's hardware ID and end in .lic (everstra_<module>_license_<hardware ID>.lic); existing .dat files still work.
- New: Update notifications (optional, off by default). Switched on in the License tab, the camera fetches a small file with the newest version number from updates.everstra.com once a day and shows a banner on every page when a newer version — or a security update — is available, with its release date and a Download button; a regular notice can be dismissed for that version, a security notice cannot. “Check now” in the License tab checks at once. Nothing about the camera is sent: no hardware ID, no model, not even its version. Switched off, no connection is made.
- Licence: Without a valid licence the start page now says so at the top — above every tab — with a button straight to the License tab.
- Licence: While the app is licensed, the License tab offers the licence key at any time — “Show license key” and “Download license file” (everstra_<module>_license_<hardware ID>.lic). The camera reads its own licence file; no server contact. So the key is never lost, even after an online activation without e-mail.
- Privacy: The Interfaces page lists the update check as a connection of its own — on or off, and what it sends.
- Fix: A licence file that is rejected on upload no longer touches the installed licence — before, a rejected file could delete a valid licence.
- Fix (failover): If the camera cannot read the failover status — server unreachable, login or TLS error, damaged file — it no longer takes that as “no failover active” and no longer starts streaming next to a running failover client on the same stream key. It waits, logs the reason and checks again at every heartbeat; after 15 minutes without a readable status it continues only if the last status it could read was “clear”.
v0.6.3
2026-10-03
- Security: An internal security review of Everstra identified weaknesses in how Everstra Live handles credentials in logs, exports and stored files. All of them are closed with this release. Automated tests now guard against these cases.
- Security: When a stream failed to start, the detailed troubleshooting output written to the camera's system log contained the camera password and the stream key in plain text. The system log can only be read with a camera administrator account. All log output is now masked, including the full error output. If you have shared system logs with anyone, or if your camera forwards its log to a log server, we recommend changing your camera password and generating a new stream key.
- Security: The failover client, which runs on your secondary computer (for example a Raspberry Pi or a rented server), wrote the stream key to its log file there. Version 0.4.2 of the client masks it. Updating the camera does not update the client: please download the client from Everstra Live and replace it on your secondary computer, delete its old log files, and generate a new stream key.
- Security: A malformed settings request could write parts of the request, including credentials, to the system log. This is fixed.
- Security: Settings exports and the keep-alive heartbeat included credentials embedded in a stream or audio URL. They are now removed. After importing settings on a different camera, enter them again.
- Security: Files containing credentials were readable by other processes on the camera. They are now readable only by Everstra Live.
- Security: E-mail notifications now require an encrypted connection and verify the mail server's certificate. If your mail server uses a self-signed certificate, you can allow it explicitly in the e-mail settings.
- Fixed: Audio files with 24-bit or 32-bit samples, as well as 8-bit, A-law and µ-law files, could not be played, so the stream did not start. They are now supported. Unsupported formats are rejected with a clear message when uploading.
- Fixed: On very slow connections, a network timeout could crash Everstra Live. Network requests no longer rely on signals for their timeouts.
- Fixed: A damaged settings file could cause a memory error when loading.
- Changed: After a failed stream start, the retry delay now follows 30, 60, 120 and 240 seconds as intended and resets after a stable run. The status shows the reason for the last failure.
- Changed: WMA is no longer offered for audio uploads. It could never be played.
v0.6.2
2026-09-11
- New: Everstra Live is now an officially Axis-signed ACAP application. The package is countersigned by Axis Communications, which verifies its origin and integrity — it installs even on cameras configured to reject unsigned apps (AXIS OS 11.11 and later).
- New: verified authenticity — the Axis signature establishes a trust chain from the camera's firmware to the application, so the device can confirm the package's origin and integrity. This is a key requirement for use in professional and corporate camera networks.
- Changed: migrated the build to ACAP Native SDK 1.15.3 and manifest schema v2 — the technical prerequisite for Axis signing on AXIS OS 11.11.
- Changed: declared OS compatibility as AXIS OS 11.11 up to 13; the app installs across this range.
- Improved: smaller, cleaner release binaries — debug symbols and internal build paths are now stripped from the shipped package.
- Fixed: the application now reports its version in the system log.
v0.6.1
2026-08-18
- Fixed: continuous recordings could lose their earlier footage after a stream drop or camera restart. Existing recordings on affected cameras are now automatically corrected on update.
- Fixed: a brief empty recording could be created after a reboot when no stream was active.
- Improved: the settings interface now loads faster thanks to smaller, optimised assets.
v0.6.0
2026-08-17
- New: the Privacy page — an always-available overview of every connection Everstra Live itself opens, built from your actual configuration. Each stream target, email notification, keep-alive and local interface is listed with its status and the data it exchanges.
- Connections are grouped by kind: your own destinations — the RTMP/RTMPS targets, SMTP and keep-alive servers you configure and control — purely local interfaces on the camera, and inbound access. Live contacts no third-party service of its own, and the page shows that at a glance.
- Each configured stream appears separately with its real destination derived from the actual URL (YouTube, Facebook, Twitch or a custom RTMP(S) target). The stream key is never shown — the path and query that can carry it are masked.
- Status distinguishes configured from active: a stream that is armed but not currently sending is marked as such, so the page reflects what the camera is really doing rather than only what is set up.
- Export the overview as PNG or CSV, with automatic refresh and a clear "last updated" time. The page is always available and never counts against your license.
- The report is backed by a build check that fails if any connection the code can open is missing from it, so a forgotten outbound path cannot silently slip past the overview.
- Under the hood: interface and styling assets now carry a content hash, so a normal reload always shows the current version after an update.
v0.5.0
2026-08-16
- New: recording to SD card — the camera can record the stream it is sending, straight to its own SD card, alongside the live broadcast. Browsing, exporting and deleting those recordings is done in Everstra Capture, which must be installed for the feature to be offered.
- The recording stores the profile the camera is already producing — same resolution, frame rate and audio setting — so nothing is encoded a second time. The extra load was measured on the reference camera rather than estimated, and is small enough to run alongside a 24/7 stream.
- Recording follows the stream: it starts when the stream starts and stops when it stops, so there is no second schedule to keep in sync and no way to end up recording a stream that is not running.
- Every stream can record its own feed, not just the first one. An additional feed costs noticeably more camera load — about 9 percentage points on the reference camera — so instead of being blocked it states the price and asks you to accept it before the switch can be turned on.
- New recording indicator in the stream list and the settings header, next to the existing status icons: grey when nothing is being recorded, and highlighted only when the camera is actually recording — the icon reports the camera, not the intention.
- Under the hood: the shared VAPIX connection now has connect and read timeouts so a stalled camera request can no longer hang the app, and stopping a recording removes only the rule and its configuration — never the recording group, so the recorded material always survives (deleting is Capture's job alone).
v0.4.5
2026-08-15
- Fixed: streams now start correctly on cameras whose active capture mode caps the frame rate below 30 fps — the frame rate is automatically clamped to the camera's supported maximum instead of refusing to start.
- Stream list redesigned into a clearer three-line layout: name, then platform icon with status and module icons, then bitrate, restarts and resolution.
- The current stream resolution is now shown in the stream list.
- Module and status icons no longer shift position with different stream-name lengths.
v0.4.4
2026-08-15
- Stream configuration is now dynamic — resolution, view area and overlay handling are built from a clean, validated stream profile instead of hardcoded values. Invalid settings are rejected with a clear message instead of failing later as an FFmpeg error.
- Overlay control per stream — choose which of the camera's existing overlays are burned into each stream (all / text / image / application / none / camera default).
- New live preview in the Stream tab — each running stream shows a small live thumbnail; the view-area selector in Settings shows a full-resolution preview so overlays appear correctly positioned.
- The preview honours the selected overlay option, so it shows what is really being sent.
- Automatic platform identification — each stream shows a derived icon for its target (YouTube / Facebook / other RTMP(S) target), in the stream list and in Settings, with a matching placeholder when a stream is stopped.
- Several validation and stability fixes under the hood (a view-area change now takes effect on a running stream).
- Groundwork for a future recording feature — internal stream handling was restructured to lay the foundation for an upcoming on-camera recording function that will work together with Everstra Capture. (Not yet available in this release.)
v0.4.3
2026-08-12
- Several UI improvements.
v0.4.2
2026-07-26
- Fix: a directory permission check could rename the entire shared storage root on the SD card, taking Overlay's and Capture's data with it — now scoped to Live's own subdirectory only
- Audio upload: storage guidance now reflects the actual configured reserve instead of a fixed figure
v0.4.1
2026-07-22
- Fix: RTMP disconnects on high-bitrate cameras — RTSP input buffer raised (thread_queue_size 8 to 512)
- Default stream URL is now RTMPS for new installations
- Separate consent gate for audio file uploads, enforced server-side
- Fix: rejected requests were reported as success in the UI
v0.4.0
2026-07-15
- Keep-alive failover: an external standby client takes over the main stream with a maintenance image when the camera drops out — the YouTube broadcast stays alive instead of ending and losing its URL, audience and engagement
- Camera heartbeat over FTP: stream state written at a configurable interval (timestamp + state only, never the stream key or any secret)
- Handshake / return lock: camera and client coordinate via two status files, so there are never two simultaneous connections on the same stream key
- Maintenance protection: standby does not take over when you stopped the stream yourself; immediate takeover when the camera is reconnecting/failing
- Flapping protection: minimum standby duration before the stream is handed back to the camera
- Takeover adopts the camera resolution from the heartbeat; maintenance still image auto-scaled to match
- Email notifications: client reports the camera's last-seen time and the failover start (on takeover and hand-back); camera reports the failover duration when it resumes
- Standby client bundled in the app: downloadable as a ZIP with all files, a full README and a systemd unit (Raspberry Pi / Linux)
- Configurable timings: heartbeat interval and failover-file stale-timeout on the camera (defaults 60 / 300 s), plus the standby client's minimum hold time (default 600 s / 10 min)
- Keep-Alive settings UI: FTP and heartbeat configuration, status badge, a 'Test failover' button that verifies whether the client took over, and a mandatory 'not plug-and-play' notice
v0.3.0
2026-07-14
- Multitarget streaming: up to 3 independent streams in parallel (own target, audio, view area, email per instance)
- View area support: stream any configured camera crop (JSON API + param.cgi, per instance)
- Per-instance start/stop with smart restart (only changed instances restart on save)
- Per-instance email triggers: SMTP global, stop/threshold/reminder per stream
- SD card storage redesign: shared path, 0775 permissions, orphan handling, differentiated errors
- SD migration assistant: adopt audio files from previous installation (background copy)
- Stream status icons: lock (RTMPS), audio, email, view area — in Stream and Settings tabs
- Prominent CPU badge with color thresholds (green/yellow/orange/red)
- API v3: instances array in /stream and /cfg, /viewarea endpoint, sd_migrate action
v0.2.0
2026-07-13
- RTMPS support: encrypted streaming to YouTube and any RTMPS endpoint
- TLS via GnuTLS (statically compiled into FFmpeg) — no extra dependencies on camera
- CA certificate validation against camera's system trust store (/etc/ssl/certs/ca-certificates.crt)
- Stream URL field accepts rtmp:// and rtmps:// — protocol indicator shown in header
- DNS resolution delegated to FFmpeg (glibc getaddrinfo) — hostname support for all protocols
v0.1.2
2026-06-25
- aarch64 / Ambarella CV25 support: tested on AXIS M3085-V (AXIS OS 12.10.73)
- Fix: crash on aarch64 cameras using the VAPIX device-info fallback (pointer truncation, 64-bit only)
- Fix: missing Content-Type header caused a 404 in the basicdeviceinfo.cgi fallback
v0.1.1
2026-06-13
- Email notifications: stop alert, restart-threshold, manual-stop reminders
- Audio upload and file manager (internal storage + SD card)
- Dark mode with persistent theme preference
- Settings export/import (secrets excluded)
- Dynamic resolution list from camera, reconnect mode options
- Bitrate, CPU load display; stream status color
- Settings tab as collapsible accordion
- Start stream automatically on camera boot
v0.1.0
2026-06-12
- Initial release
- RTMP streaming from Axis cameras (aarch64 + armv7hf)
- Destination: YouTube and any RTMP endpoint
- Hardware-bound license system (Ed25519, free activation via e-mail)
- 7-day trial period
- FFmpeg 6.1.2, LGPL, statically linked