Skip to content

Releases: knoop7/Ava

Voiceprint

20 Jun 12:16

Choose a tag to compare

On-Device Smart Voiceprint Recognition

Ava Pro now ships with an experimental on-device smart voiceprint recognition feature.

Once enabled, Ava learns frequent wakeword callers from short local samples. On subsequent wakeword triggers, it identifies who likely woke the device and publishes the result to a Home Assistant "Voiceprint Status" sensor.

All audio stays local. Nothing is uploaded to the cloud.

This is not a heavyweight cloud voiceprint model. It is a lightweight local matcher purpose-built for Ava's fixed-wakeword scenario. It uses short local samples, audio feature extraction, quality gating, and conservative learning — no large model packages required.

Access: Settings → Voice Configuration → Smart Voiceprint Recognition

How to use:

  1. Enable "Smart Voiceprint Recognition."
  2. Optionally set names for "User 1" and "User 2."
  3. Wake the device a few times using Wakeword 1 or Wakeword 2.
  4. Ava automatically learns the frequent callers.
  5. The Home Assistant "Voiceprint Status" sensor shows who triggered the wake.

Automation ideas:

  • If status is "Dad," auto-turn on the study lights and switch to the study dashboard.
  • If status is "Mom," auto-open the kitchen view and announce today's schedule.
  • If status is "Unknown," skip sensitive panels.
  • Different family members waking the same Ava unit can trigger different lighting, music volume, room mode, or notification style.

Starting with this release, Ava no longer just hears "someone called it" — it knows "who most likely called it."


Quick Entity Panel Now Supports Camera Entities

Mac_2026-06-20 12 48 02

The Quick Entity Panel now supports Home Assistant camera entities.

You can add doorbell, nursery, garage, or pet cameras to the Quick Entity Panel alongside lights, switches, and timers.

Access: Settings → Extensions → Quick Entity Panel → Configure Slots → Select Camera Entity

This is especially useful for wall-mounted devices: no need to switch into the full Home Assistant page to get a quick camera glance.


New Browser Edge Swipe Menu

Ava 0.5.3 introduces a browser sidebar.

Previously, Browser Display would cover all other overlays, making it inconvenient to open Quick Entity, weather, clock, or switch pages. Now you can swipe from the browser overlay edge to open a menu with direct access to common features.

Quick actions include:

  • Voice Memo
  • Browser
  • Weather
  • Minimal Clock
  • Dream Clock
  • Quick Entity Panel
  • Camera / Recorder
  • Mic Mute
  • Dark Mode

Access: Settings → Sidebar / Menu Settings; Settings → Browser → Browser Sidebar

This addresses the issue raised by @janstadt in Discussion #77: Browser Display blocking everything made Quick Entity and the left-side menu hard to reach. Now you can keep operating Ava's other components even in browser mode.


Thanks again to RoadRunner-1024, author of portal-ha-bridge:
https://github.com/RoadRunner-1024/portal-ha-bridge

AvaMod has recreated support based on that project, bringing Meta Portal ambient sensors, presence detection, sound level, screen timeout, and alert tone controls into Home Assistant through Ava, without requiring MQTT.

Source:
https://github.com/knoop7/ava-mods/tree/main/mods/devices/portal-support

After installing the mod, download provision.sh first:
https://github.com/knoop7/ava-mods/blob/a742759e8ae69d1e605d5bf6fee41c259ff889d5/sources/devices/portal-support/provision.sh

Beginner steps:

  1. Save provision.sh to your computer, for example to the Downloads folder.

  2. Open Terminal.

  3. Go to the folder where you saved it:

cd ~/Downloads

  1. Make the script executable:

chmod +x provision.sh

  1. Connect your Meta Portal to the computer with USB and make sure ADB can see it:

adb devices

  1. Run the provisioning command for Ava:

./provision.sh com.example.ava


Browser Display & External Gecko Engine Fixes

0.5.3 continues fixing Browser Display issues, especially around show/hide, dark mode, external Gecko engine packages, and service recovery.

  • Fixed Browser Display becoming unresponsive after toggling.
  • Improved browser show/hide/recovery lifecycle.
  • Improved Ava dark mode sync with the Home Assistant page.
  • Improved display, recovery, and state sync under external Gecko engine packages.
  • Improved edge cases: WebView unavailable, render service restart, floating window focus, page refresh.
  • Added a browser page zoom entity, adjustable from Home Assistant.

Thanks to @meiser79 for reporting the dark mode issue (Issue #81) and @jancernik for the unresponsiveness issue (Issue #79).


More Home Assistant–Style XML Icons

0.5.3 adds a batch of Home Assistant / MDI–style XML icons for the Quick Entity Panel, device types, and settings entries.

New icons include awning, Bluetooth, media/music, shape/scene/module, timer, store, device/warning/delete, and more.

Thanks to @meiser79 for the awning icon request (Issue #84).

These icons bring the Quick Entity Panel closer to a native Home Assistant look and make entity types easier to distinguish.


Wakeup Animation & Voice Feedback Fixes

0.5.3 fixes multiple wakeup animation and voice-state feedback issues.

  • Fixed the ~500 ms delay when Wakeword 1 and Wakeword 2 animations triggered in sequence, causing unnatural display.
  • Fixed residual wakeup animation or light effects after pausing voice service.
  • Fixed animation not stopping correctly when service is stopped.
  • Improved edge lighting and ripple effects in Listening / Processing / Responding states.
  • Added per-wakeword voice feedback color customization for Wakeword 1 and Wakeword 2.
  • Improved transparency, blur, and edge rendering of the voice status overlay.

支持

webiew!

18 Jun 01:48

Choose a tag to compare

0.5.2 is a major update targeting legacy devices and browser rendering.

From this release onward, Ava continues to cover Android 5 through Android 16, and introduces a standalone GeckoView browser engine package. If your device's system WebView is too old, browser display glitches out, hiding/showing the browser causes freezes, or legacy hardware simply can't upgrade its browser kernel, you can now install the engine package and offload web rendering to a modern GeckoView.

This release also adds German language support and bundles concentrated fixes for microphone permissions, wake engine stability, stop-word detection, edge lighting, Sendspin device naming, Browser Display, and legacy device permission issues.


Major Update: Standalone GeckoView Browser Engine Package

The biggest pain point on old devices was never Ava itself — it was the ancient system WebView: Home Assistant panels wouldn't load, dark mode fell out of sync, the browser froze after toggling, or OEM restrictions blocked browser component updates.

0.5.2 introduces an independent engine package:

https://github.com/knoop7/Ava/tree/master/gecko-engine

The main APK stays lightweight; GeckoView ships as a separate APK. Switch render engines inside Ava when needed — no flashing, no system WebView replacement required.

Ideal for:

  • Echo Show / Facebook Portal / old tablets with outdated system browsers
  • Browser Display instability after show/hide cycles
  • Home Assistant Dashboard anomalies under system WebView
  • Android 5/6/7 devices unable to update WebView through system settings

Path: Settings → Web Browsing → Render Engine → GeckoView (Engine Package)

If the engine package isn't installed, follow the in-app prompt to download and install it. Once installed, return to Ava and select GeckoView.

Support notes:

  • Main app continues to support Android 5–16
  • GeckoView engine package currently provides arm64 and armv7 builds
  • Unsupported architectures will be flagged in settings
  • As a standalone app, the engine package may require additional floating-window permission grants on some legacy systems

For Android 8 and below where the system UI fails to grant permissions normally, use ADB:

adb shell appops set com.example.ava.gecko SYSTEM_ALERT_WINDOW allow
adb shell settings put system kill_background_services_list "com.example.ava,com.example.ava.gecko"

New: German Language

Ava now includes a German UI. System language set to German will automatically display German text; all other languages continue to follow the existing Chinese, English, Russian, Portuguese, Vietnamese, etc. logic.


User Feedback Directly Addressed

Thanks to these reports — they shaped the 0.5.2 fix direction:

  • #83 Not starting on echo show 5 1st gen@treypop
    Enhanced legacy-device startup resilience: microphone, wake engine, and browser engine initialization failures no longer crash the main service.

  • #82 Hide/remove "Ava" in sendspin device name@meiser79
    Sendspin device names are now customizable. Saving triggers a session restart so Music Assistant refreshes the display name faster.

  • #81 "Browser Display" does not follow dark mode in app settings@meiser79
    Browser Display now follows Ava's dark mode and attempts to sync with the Home Assistant Dashboard. Adaptation varies by webpage and WebView version; further polish is planned.

  • #80 Follow up mode behavior issues@itsgreat2misha
    Voice session state and stop-word detection logic refactored. Interruption during conversation still works; idle standby reduces unnecessary on-device inference.

  • #79 Browser becomes unresponsive after toggling Browser Display@jancernik
    Browser Display show/hide chain stabilized, with GeckoView engine package offered as an alternative for legacy system WebView.

  • #78 Cannot grant Device Admin through UI on Facebook Portal devices@itsgreat2misha
    ADB-assisted permission paths added for special legacy devices; in-app guidance will continue to improve.


Wake & Microphone Stability

0.5.2 includes extensive crash-hardening on the voice entry path. The focus isn't new buttons — it's graceful degradation when old hardware, permission anomalies, or model loading failures strike.

Improvements:

  • Microphone permission denial no longer crashes; voice service returns an error state
  • Reading audio from an unstarted microphone no longer throws exceptions
  • Micro Wake Word / TensorFlow Lite initialization failures auto-downgrade
  • Android 5/6 unsupported inference libraries no longer loop retry and lock up the service
  • Wake engine load failure falls back to a null detector — Ava continues running other features
  • Home Assistant voice satellite handles audio errors gracefully instead of killing the process

This matters most for Echo Show, Facebook Portal, old tablets, and custom ROMs.


Stop-Word Detection: Less CPU Burn

Stop-word detection now runs only when actually needed:

  1. A timer alarm is actively ringing
  2. A voice session is in progress (Listening, Processing, Responding)

During idle standby with no alarm, the stop model is skipped — cutting CPU load and heat. Two critical scenarios remain unaffected:

  • Saying "Stop" while an alarm rings still stops it
  • Saying "Stop" during conversation still interrupts

Edge Lighting & Full-Screen Overlay Fix

Fixed wake-word edge lighting failing to fill the bottom navigation bar area.

Previously the ripple appeared full-screen, but edge lighting for Listening / Processing / Responding states left a blank strip at the bottom. 0.5.2 unifies overlay fullscreen and immersive handling so edge lighting truly covers the bottom navigation bar region.


Sendspin / Music Assistant Improvements

Sendspin device names can now be changed naturally to whatever you want, preventing Music Assistant from locking onto unwanted prefixes or stale names.

Path: Settings → Add-ons → Playback → Media Player → Sendspin Device Name

Saving restarts the Sendspin session so Music Assistant picks up the new name quickly. If the old name persists, refresh the player in Music Assistant or fully kill and restart Ava.


Browser-Related Settings Paths

Quick reference:

  • Browser display & remote open: Settings → Web Browsing → Remote Browser URL / Show in Home Assistant
  • Browser render engine: Settings → Web Browsing → Render Engine
  • Dark mode sync: Settings → Web Browsing → Follow Dark Mode
  • Ava's own dark mode: Settings → Add-ons → Interface → Dark Mode
  • Sendspin / Music Assistant: Settings → Add-ons → Playback → Media Player

Note: Dark mode syncs Ava, Browser Display, and Home Assistant Dashboard as closely as possible, but final rendering depends on the webpage itself, theme cards, and system WebView version. Some devices require fully killing Ava and reopening, or switching to the GeckoView engine package, to test properly.


Known Limitations & Troubleshooting

  • GeckoView engine package requires separate installation; manually confirm the system install prompt.
  • Android 8 and below or special devices may need ADB-assisted floating-window permission grants.
  • Some OEM systems aggressively kill background services — add both Ava and the Gecko engine package to battery optimization / whitelist.
  • Dark mode and Home Assistant Dashboard compatibility will continue improving, especially for dashboards heavy on custom cards.
  • If browser freezes, service failures, or microphone anomalies persist, please provide ADB logs — further polish is incoming.

Android 5

14 Jun 16:06
20262af

Choose a tag to compare

Old Device Revival

0.5.0 is a compatibility milestone. The minimum system requirement drops to Android 5.0 (API 21)
while targetSdk 36 (Android 16) stays unchanged — all new-system capabilities are preserved

  1. Android 5.0 Officially Supported
    Old tablets, Echo screens, and headless Android 5/6 devices can now run the full voice satellite. Compose main UI, ESPHome, Sendspin, and scene floating windows have all been validated on API 21.

  2. VS Wake Word Actually Loads on Android 5
    Rebuilt ONNX Runtime with minSdk 21. Both Micro and VS engines are selectable on legacy devices. Release APK remains ~16.6 MB with zero feature cuts.

  3. Wake Engine / Model Switching Fully Fixed

    • Each engine now stores wake words independently (microWakeWords / vsWakeWords)
    • Switching engines auto-restores the last selection — no more lost models or silent failures
    • okay_nabu / ok_nabu cross-engine aliases auto-map correctly
    • HA no longer wipes wake-word options due to empty lists
    • Service auto-restarts on engine switch, keeping the detector in sync with settings

Android 5–6 Compatibility Note: Legacy hardware varies wildly. Wake-word recognition may glitch on Android 5 due to microphone driver quirks or limited compute, and Bluetooth gateway functionality can be unstable. Use the right capabilities for the right device — core voice-satellite functionality is the priority; don't force everything on. The Android 5–6 boundary is still being refined. If you hit a device-specific issue, file an issue and I'll do my best to fix it.

Stability (Android 5 Specific)

  • Scene floating windows and floating-ball RenderScript crashes → BlurCompat software-layer rendering
  • Shizuku card auto-hidden on Android 5 (requires API 23+)
  • Settings page debug pull-handle lengthened and lowered for better vertical-screen reach

0.4.9

12 Jun 19:04
Immutable release. Only release title and notes can be modified.
6b8a503

Choose a tag to compare

1. Home Sidebar Menu (New)

A slide-out sidebar from the screen edge that consolidates floating-window features (voice messages, browser, weather, clock, quick entity panel) and quick controls (camera recording, mic mute) into a single switchable menu. Top shows current voice service status; bottom provides Settings access.

Where to find it

  • Enable: Settings → Device Services → Sidebar Settings → Enable Sidebar
  • Use: Swipe from left/right edge handle (direction configurable)
  • Per-item toggle: Settings → Device Services → Sidebar Settings
  • Optional header hide: Settings → Device Services → Hide Home Header (requires Sidebar + Show Other App Icons)
Mac_2026-06-13 03 03 21

Defaults

Disabled by default. Takes effect immediately without restart. Individual menu items also default off; enable the main feature switch first, then check it in Sidebar Settings.

Configurable entries

Sidebar Item Prerequisite Feature Settings Path
Voice Messages Enable Voice Messages Settings → Extensions → Voice Messages & Calls
Browser HA Remote Webpage Settings → Web Browser
Weather Weather Floating Window Settings → Extensions → Scenes
Minimal Clock Screensaver / Minimal Clock Settings → Screensaver
Dream Clock Dream Clock Settings → Extensions → Scenes
Quick Entity Panel Quick Entity Settings → Extensions → Scenes
Recording Toggle Camera Recording Mode Settings → Advanced (Camera + Recording Mode)
Mic Mute Always available
Settings Always shown Bottom of sidebar

Usage notes

  • Floating-window items are inoperable when voice service is not running; start the service first.
  • Switching floating-window features requires "Display over other apps" permission; unauthenticated attempts redirect to system settings.
  • With Sidebar + Desktop Icon mode enabled, the top-right service status moves to the right of the "Menu" header in the sidebar, tap to start/stop the master service. Home header can be hidden; Settings access shifts to the sidebar bottom.

Home scenarios

  • Wall-mounted panel: Hide home header, keep only app icons and edge menu for a cleaner interface.
  • Kitchen tablet: One-tap weather, clock, voice messages from sidebar without deep navigation.
  • Bedroom device: Quick mic mute or dream clock toggle without disturbing the main view.

2. Wake Visual Feedback Upgrade

Clearer visual feedback during wake and conversation:

  • Wake instant: Colorful ripple expanding from screen center (Android 13+ uses RuntimeShader with distorted halo + star particles; Android 7 uses soft circular diffusion; compatibility paths for other versions)
  • Conversation (when floating subtitle is disabled): Full-screen edge glow that changes with state:
    • Listening: Edge light breathes with microphone volume
    • Processing: Slow breathing animation
    • Speaking: Pulsates with TTS energy
  • Dual wake-word color coding: Wake word 1 = green (#00FF88), wake word 2 = cyan (#00D4FF); ripple and edge light match the triggered wake word

Where to find it

  • Edge glow session: Settings → Extensions → Interface, disable "Floating Subtitle Window" to enable full-screen edge glow
  • Ripple only: Settings → Extensions → Interface → Floating Subtitle Window enabled; wake shows ripple, conversation content goes to subtitle floating window
  • Wake-word colors: Determined by Wake Word 1 / Wake Word 2 in Settings → Voice Config

Technical notes

  • Edge glow uses pre-rendered Gaussian blur bitmaps; per-frame cost is texture-only for performance
  • Ripple animation driven by system uptime to prevent Kiosk devices with "animation duration = 0" from killing the effect instantly
  • Android 7.0/7.1 optimized to clean circular diffusion without Shader dependency

Home scenarios

  • Living room voice: Obvious ripple on wake so family can confirm the device heard
  • Dual wake-word household: "OK Nabu" and "Hey Jarvis" in different colors; instant visual identification of which word triggered
  • 24/7 wall display: Animation plays correctly even on low-power devices

3. Wake-Word Engine Fixes & Enhancements

0.4.8 introduced the VS wake engine; 0.4.9 completes stability and compatibility:

  • Per-engine wake-word persistence: microWakeWord and vsWakeWord save their own active lists independently; switching engines no longer overwrites each other
  • Cross-engine ID mapping: e.g., micro's okay_nabu auto-maps to VS's ok_nabu; HA-configured wake words also resolve correctly
  • HA config sync: Home Assistant wake-word changes merge with local active lists compatibly, reducing "configured but not active" issues
  • VS stop word: ok_stop supported as stop-word classifier under VS engine
  • Built-in VS models: ok_nabu, hey_jarvis, ok_stop (stop word)

Where to find it

Settings → Voice Config (ESPHome)

  • Wake engine: On-device (microWakeWord) / On-device (vsWakeWord)
  • Wake word 1 / Wake word 2 + sensitivity
  • Wake prompt tone, custom prompt tone

Home scenarios

  • Switching from micro to VS: Individual wake-word selections are preserved; no reconfiguration needed
  • HA voice assistant card: HA wake-word changes correctly map and take effect on Ava
  • Dual wake words: Two words with independent sensitivity; trigger color and prompt tone can also differ (wake word 2 prompt tone in Settings → Voice Config)

Engine Comparison: microWakeWord vs vswakeword

Dimension microWakeWord vswakeword
Architecture TFLite binary classification ONNX CTC phoneme decoding + edit distance
Model size 50–80KB, uint8 quantized 500KB
Inference 10ms frame, stride 3 80ms cycle, 1300ms window, 128×40 feature map
Frontend microfeatures Adaptive noise floor + spectral VAD
Decision 5-frame sliding window mean Voice gate → CTC confidence → edit distance ≤1 → 2-hit confirm → 2s cooldown
Output Scalar 0–1 probability Phoneme sequence with traceability
Wake-word swap Full retraining required Manifest JSON hot-swap
CPU / memory Minimal Significantly higher
False wake defense Threshold only (zero-sum trade-off) Multi-layer independent gates
Interpretability None Phoneme-level debugging
Best for Low-end Android 7 persistent background Noise-sensitive, explainability-required deployments

Trade-off summary

  • microWakeWord: Lightweight sentinel. Fast, lean, but sensitivity and false acceptance are a direct exchange with no second defense line.
  • vswakeword: Discriminating gatekeeper. Stronger noise rejection and phoneme-level explainability at the cost of CPU, power draw, and tuning complexity.

Hexagon

11 Jun 14:14
0ae3719

Choose a tag to compare

Ava 0.4.8 Release Notes

0.4.8 is a substantial update. This release pushes Ava beyond a "voice satellite + control panel" into a more complete home terminal: it delivers more reliable wake-word detection during media playback; enables intercom, voice messaging, and VoIP calling across the local network; integrates more naturally as an Android desktop launcher; significantly expands Sendspin audio capabilities for Music Assistant; introduces the VS wake-word engine; and resolves numerous issues across Bluetooth, audio, screensaver, permissions, and wake-word subsystems.


Major Features

1. Software Acoustic Echo Cancellation (AEC): Reliable Wake-Word Detection During Playback

What it does:

Ava now includes software Acoustic Echo Cancellation. In short, Ava knows exactly what it is currently playing and subtracts that reference signal from the microphone input. This makes wake-word detection and Home Assistant voice streaming significantly more robust while music, TTS responses, or wake chimes are playing.

Where to find it:

Settings → Connectivity → Software Echo Cancellation

Default state:

Disabled by default. Toggling it on takes effect immediately without a service restart. When enabled, Ava automatically disables the system's hardware AEC to prevent dual-processing degradation. If the device lacks native support for this pipeline, Ava falls back transparently to raw capture.

Three home scenarios:

  • Wake while playing music in the living room: Ava is streaming Music Assistant audio; the user speaks the wake word nearby without the loudspeaker drowning out the command.
  • Continue speaking after a TTS response in the kitchen: After Ava reads out weather, timers, or Home Assistant replies, the microphone is less contaminated by TTS reverberation.
  • Legacy devices without hardware AEC: Older tablets, phones, or LineageOS-based Echo units that lack reliable system echo cancellation can now use software AEC as a critical fallback.

Technical implementation:

Ava captures the playback reference from two sources:

  • Media, TTS, and wake chimes: PCM audio is tapped via ExoPlayer's audio bypass.
  • Sendspin: The already volume- and duck-adjusted PCM is used directly, so the reference signal closely matches actual loudspeaker output.

These sources are mixed into a single 16 kHz mono reference stream and held in a small timeline buffer. For each microphone frame, the corresponding reference frame is retrieved and processed through SpeexDSP 1.2.1 (compiled into Ava's native audio module) with residual echo suppression. The cleaned frame is then forwarded to wake-word detection and the HA voice stream.

Key technical details:

  • 20 ms frame size for real-time voice pipeline compatibility.
  • ~4 s reference buffer to cover music, TTS, wake chimes, and Sendspin playback.
  • Automatic channel mixing and sample-rate conversion; no requirement for uniform source formats.
  • When the switch is off, reference capture is inactive and incurs zero additional overhead.

Usage and tuning recommendations:

  • Enable the toggle at Settings → Connectivity → Software Echo Cancellation, then test wake-word detection while playing music.
  • Expect slightly weaker suppression during the first 1–2 seconds of playback; convergence improves as the adaptive filter stabilizes.
  • Built-in speakers yield the best results. Bluetooth speakers should not be expected to perform well due to high and variable latency, which makes precise alignment difficult.
  • The feature materially improves wake reliability and false-wake suppression during playback, but it will not eliminate echo entirely. Real-world room reverberation, reflections, and device latency always leave a small residual.
  • For further false-wake reduction, consider combining this with a light standby duck (e.g., reducing playback volume to 80 % when wake-word standby is active), a common technique in commercial smart speakers.

2. Voice Messages, Message Board, and Local-Network Intercom / Calling

What it does:

Ava now supports device-to-device voice messaging, a persistent message board, and real-time voice calling. Multiple Ava units on the same LAN automatically discover one another and can exchange voice messages or initiate peer-to-peer calls. Messages can be delivered immediately or deferred; the receiving unit can auto-play them or retain them on-screen in message-board mode for later replay.

Where to find it:

Settings → Extensions → Voice Messages & Calls

Available toggles:

  • Enable Voice Messages: Displays the voice-message floating panel for recording messages or calling nearby Ava devices.
  • Voice Message Name: The display name shown on peer devices.
  • Message Delivery Delay: Deferred delivery time; 0 means immediate.
  • Control in Home Assistant: Exposes show/hide control of the voice-message panel to Home Assistant.
  • Receive Voice Messages: Allows this device to accept messages from other Ava units.
  • Voice Message Handling: Choose Auto playback or Message board.
  • Answer Incoming Calls: Whether incoming calls require manual acceptance.
  • Call Ringtone: Select a ringtone.

Three home scenarios:

  • Kitchen to living room: While cooking, hands are occupied; send a voice message from the kitchen Ava to the living room tablet: "Dinner's ready—come grab it."
  • Child's room message board: After the child falls asleep, parents can leave a deferred morning reminder (e.g., "Don't forget your water bottle") without entering the room at night.
  • Whole-home intercom: With Ava units in the bedroom, study, and living room, family members can call each other directly like a household intercom—no mobile apps, cloud services, or external accounts required.

Technical implementation:

This is Ava's own LAN voice protocol; it does not rely on SIP/PJSIP. The stack uses UDP for discovery, signaling, and audio transport:

  • Control & discovery port: UDP 19848
  • Audio port: UDP 19849
  • Discovery: LAN broadcast of device ID, display name, device type, and local IP.
  • Signaling: BEGIN, END, ANSWER, DECLINE, HANGUP, NO_ANSWER, etc.
  • Voice messages: Session-based audio frames; maximum single-message duration capped at 60 seconds.
  • Real-time calls: 20 ms frames; supports incoming, answered, declined, hung-up, and ~1 minute no-answer timeout.
  • Codec: Real-time path uses Opus via the Concentus pure-Java codec, targeting 32 kbps, with in-band FEC enabled and soft degradation for packet-loss environments.
  • Audio safety: The call path independently manages microphone acquisition, AudioRecord, AudioTrack, echo/noise processing, and call state to avoid colliding with the primary voice-assistant wake pipeline.

Privacy and security notes:

This feature is architecturally bounded to prevent external leakage:

  • Discovery and communication are strictly LAN-local; no cloud upload or third-party accounts are involved.
  • Discovery broadcasts contain only device ID, display name, device type, and LAN IP. They do not include Home Assistant tokens, credentials, recognition content, or automation configuration.
  • Voice audio travels via direct LAN UDP to the targeted Ava device; no external server is traversed.
  • The receiving device must have Receive Voice Messages enabled; otherwise, messages are neither played nor displayed.
  • Messages are duration-capped; calls enforce hang-up, decline, and no-answer timeout controls, preventing infinite recording channels.
  • Microphone busy states block message/call recording to avoid overlapping with an active voice-assistant session.
  • This remains a LAN-only feature. Deploy Ava on a trusted home network; do not enable on public Wi-Fi, guest networks, or untrusted subnets.

3. Ava as a Genuine Android Desktop Launcher

What it does:

Ava can now serve as a full Android desktop launcher. You can set Ava as the system Home app so that the Home key returns to Ava rather than the stock launcher. Combined with the main interface, service status, quick-access tiles, and optional app-icon display, old tablets, phones, or wall-mounted panels become natural home-control terminals.

Where to find it:

Settings → Device Control → System Launcher

Related settings:

  • System Launcher: Choose which app handles the Home key. Selecting Ava makes Ava the system desktop.
  • Show Other App Icons: Display installed app icons on the Ava home screen for quick access to frequently used apps.
  • Dark Mode: If the default light theme is undesirable, switch to the dark theme at Settings → Extensions → Interface.

Important note:

Ava does not currently support Android live wallpapers / system wallpaper backgrounds. This release implements launcher capability, not dynamic-wallpaper service registration. Live wallpapers introduce additional rendering overhead, lifecycle complexity, and compatibility risk; to preserve 24/7 runtime performance and stability, this path is not pursued. If the light theme is unwanted, use the dark theme instead.

Three home scenarios:

  • Wall-mounted control panel: Fix an old tablet at the entryway or living room; the Home key always returns to Ava, preventing accidental navigation to a cluttered system desktop.
  • Bedside terminal: Limit the device to clock, voice, music, and a handful of essential apps; switch to dark mode at night to reduce eye strain.
  • Legacy device repurposing: Old phones no longer need to function as general-purpose handsets; they become dedicated Home Assistant voice panels, Bluetooth gateways, and music endpoints.

4. Sendspin Protocol Overhaul: Music...

Read more

0.4.7

15 Apr 02:28
d0c67b5

Choose a tag to compare

What's New

  1. Voice Settings Reorganization
    Voice input settings have been consolidated into a more logical location, making the configuration path clearer and easier to navigate.

  2. New System Recording Modes
    Added support for different system recording modes with clearer labels and descriptions, allowing users to choose the most suitable audio capture method for their device.

  3. Auto-Select Recording Mode
    Enabled by default, the system now automatically selects the optimal recording path based on device characteristics, reducing the need for manual configuration. #64

  4. Advanced Microphone Processing Toggle
    New low-level microphone processing options to control system-level capabilities including noise reduction, automatic gain control, and echo cancellation.

  5. Software Microphone Gain Support
    Added software-level microphone gain adjustment to boost input loudness without changing system volume levels, improving wake word detection and near-field speech recognition.

  6. Screen Control Entity Display Toggle
    New setting under Device Services → Screen Power Entities to control the visibility of "Screen On/Off" and "Lock Screen" entities in Home Assistant. Enabled by default.

Bug Fixes

  1. Fixed Recording Source Override for Specific Devices
    Restored and optimized recording source adaptation logic for certain special platform devices, preventing default configurations from overwriting device-specific branches.

  2. Fixed Screensaver Dark-Based Screen-Off
    The screensaver's "Turn off screen when dark" feature now uses independent real-time lux monitoring, no longer dependent on the environmental sensor reporting chain.

  3. Fixed Delayed Dark Detection for Screen-Off
    Corrected dark state detection logic for on-change type ambient light sensors, ensuring screen-off triggers properly when entering dark environments.

  4. Fixed Inconsistent Font Sizes in Settings
    Unified title and description font sizes across settings pages for improved visual consistency and readability.

  5. Fixed Main Settings Layout on Large Screens
    Added independent font scaling and dynamic magnification logic to the main settings page for more natural display on large screens and high-density devices.

  6. Fixed Extension Card Layout on Small Screens
    Added additional bottom padding for extension component cards on small-screen devices to alleviate crowding issues.

Progress

12 Apr 12:51
fd3e202

Choose a tag to compare

1. Tuya S6E/S8E Smart Panel Support (2022 Models)

Added full compatibility for Tuya S6E/S8E devices via Mod Store firmware distribution. Following the Blakadder sideloading guide, users can install the S8E firmware package directly from the Mod Store to enable Zigbee gateway functionality, rotary knob control, Bluetooth casting, and quad-mic array support—breathing new life into legacy hardware without additional hubs.

2. Semantic Clarity & Localization Overhaul

Comprehensive rewrite of UI copy to eliminate ambiguous terminology. Improved i18n key mappings ensure descriptions match actual functionality across all supported languages, reducing cognitive load when configuring entities.

3. Visual Hierarchy Optimization

Refactored typography weights and line heights for data-dense screens. Critical values now render in monospace typefaces with increased label spacing, enabling at-a-glance status recognition from a distance.

4. Browser Engine Stability

Resolved WebView memory leaks on Android 10/11 devices and fixed white-screen flickering during tab restoration. Improved error handling ensures silent failure recovery when loading malformed pages.

5. Sendspin Protocol Complete Overhaul

Rewrote the underlying audio synchronization engine to achieve true millisecond-grade multi-room alignment. Deprecated the legacy -200ms manual offset—now defaults to 0ms across all device tiers. Audio handoff between rooms is now perceptually seamless.

6. Legacy Device Performance Mode

Implemented dynamic bitrate switching for devices with <2GB RAM. When system resources are constrained, the UI automatically reduces visualization frame rates to prioritize audio buffer stability, significantly reducing dropout rates on older hardware.

7. Environmental Sensor Polling Controls

New service options allow granular adjustment of temperature, humidity, and ambient light reporting intervals (down to second-level precision). Optimizing these intervals extends battery life for battery-powered sensors by reducing radio wake cycles.

8. Proximity Sensor Value Streaming

Ad#ded raw proximity value transmission as a configurable entity state, suitable for automation triggers. Adjustable time-window debouncing prevents false positives while maintaining responsiveness.

9. Mod Store Download Experience Refactor

Fixed progress bar freezing and introduced segmented checksum verification. Downloads now display distinct states: Verifying, Extracting, and Installing, with automatic rollback and specific error node reporting on failure—no more black-box installations.

10. Audio Buffer Overflow Fix (Issue #64)

Addressed buffer accumulation reported by @pvossel with a rewritten FIFO queue and a new Silence Detection Model that automatically discards empty packets. Reduces peak memory usage by 40% and eliminates burst noise during high-latency scenarios.

11. Assist Satellite Q&A Service Support

Full implementation of assist_satellite.ask_question service calls. External automations can now initiate voice queries and capture user responses programmatically, enabling bidirectional audio stream control within Home Assistant.

12. Audio Stream Control API

Exposed low-level audio stream hooks for advanced users. Services can now programmatically seize or release microphone channels, enabling full "wake → ask → answer → sleep" pipeline automation without manual intervention.

0.4.5

05 Apr 16:16
ba4d729

Choose a tag to compare

Bug:

  1. Unified Sendspin playback chain lifecycle across stream clear / stream end / pause-play / reconnect scenarios to prevent reuse of underrun or destabilized AudioTrack instances. #63

  2. Fixed legacy playback chain not being fully decommissioned after stream end, reducing "half-beat" sync drift and baseline pollution on restart.

  3. Hardened clearBuffer() decommissioning strategy: active playback chains now undergo clean rebuilds instead of mere flush operations when necessary.

  4. Fixed buffer accumulation during prolonged WAITING_FOR_START states by adding controlled forced-playback protection.

  5. Added protection against extreme timestamp jumps: reconstructs timeline baseline instead of padding multi-MB silence blocks when gaps exceed reasonable thresholds.

  6. Fixed buffer saturation, consecutive packet drops, and GC jitter triggered by anomalous gaps.

  7. Added anomalous output limits to Opus decoder to prevent memory/buffer exhaustion from single oversized PCM blocks.

  8. Fixed Opus output reading to correctly decode using BufferInfo.offset/size parameters.

  9. Tightened handoff logic between pendingChunks and active playback queue to reduce startup-stage accumulation risks.

  10. Reinstated and fully enabled total PCM buffer ceiling to prevent unbounded queue growth.

  11. Expanded Sendspin total buffer capacity to enhance continuous playback stability under network jitter.

  12. Maintained backward compatibility: preserved legacy startup/sync philosophy while enhancing buffering capabilities only.

  13. Fixed log spam during playback speed adjustments: devices lacking speed support now silently degrade instead of flooding logs.

  14. Reset speed control state lifecycle across stop / clear / idle / rebuild paths to prevent state contamination of new streams.

  15. Added caching and rate-limiting to AudioTrack.getTimestamp() to reduce system log spam and instability detection during reconstruction phases.

  16. Restricted timestamp usage timing to reduce amplification effects from device stalls or retrograde timestamps on the sync state machine.

  17. Improved underrun detection conditions to prevent false positives during INITIALIZING / WAITING_FOR_START / stream-switching gaps.

  18. Added aggressive recovery path post-underrun, enabling clean AudioTrack reconstruction during actual playback states.

  19. Fixed intermittent song container visibility failures when initial media metadata arrives.

  20. Adjusted first-packet metadata filtering: now only discards empty cold-start packets rather than swallowing legitimate debut metadata.

  21. Fixed overly restrictive HA media metadata recognition: valid display now triggers if any of title, artist, or cover art is present.

  22. Relaxed song container display conditions: no longer strictly dependent on songTitle, now evaluates based on "any displayable content" criteria.

  23. Fixed song container mistakenly hiding during voice flows when we internally paused media: now distinguishes internal pauses from external stops.

  24. Extracted media resumption arbiter to unify handling of BUILT_IN_MEDIA / HA_MEDIA / SENDSPIN_PROTOCOL / VOICE_TTS line recovery.

  25. Resolved race condition risks from multiple simultaneous resume calls at voice end: now uses single-channel arbitration recovery.

  26. Enhanced reconnection compatibility: preserves legacy manual offset semantics while preventing old dynamic pipeline state contamination of new connections.

  27. Maintained sync semantics where 0ms = auto mode and non-0ms = manual mode, preserving legacy user calibration habits.

  28. Added independent upstream playback position validator to continuously track trackProgressMs / trackDurationMs / isPlaying.

  29. Integrated upstream position validation into critical recovery nodes: clearBuffer / enterIdle / stream start / thaw / underrun rebuild for timeline reconstruction.

  30. Sendspin sync strategy has evolved from "parameter tweaking" to a combined architecture of "clock synchronization + upstream position validation + clean playback chain reconstruction", preparing the codebase for release-grade stability.

Sendspin (Geek)

04 Apr 16:43
d8d4226

Choose a tag to compare

Bidirectional Volume Sync

New toggle for HA ↔ Sendspin volume linkage:

Real-time bidirectional sync. Adjust volume on either end, and the other follows instantly.
Complete decoupling. Each system maintains independent volume levels for isolated control.

Credits: Thanks to @danwig for the architectural suggestion that shaped this implementation.

Mac_2026-04-05 00 47 18

Geek Mode - Live Audio Details

New option to surface technical playback information. Toggle it on to view real-time audio specs—codec, sample rate, bit depth, and sync status—displayed cleanly in the interface. An easy way to see exactly how your music is being processed, available whenever curiosity strikes.

Bug Fixes

Audio Queue Integrity

Fixed list queue logic ensuring a track must fully complete before transitioning to the next. Eliminates premature skipping and truncation during playback.

Legacy Device Camera Compatibility (Fixes #61)

Comprehensive compatibility patches for low-end devices including LineageOS 17.1 and Galaxy S2 8.0 LTE (gts28velte). Resolves rear camera malfunction on resource-constrained hardware.

Credits: Thanks to @yaro24 for testing feedback and device environment support.

Header Styling

Corrected table header rendering anomalies. Unified font weight and spacing for consistent visual hierarchy.

Wake Word Ducking (Fixes #59)

Restored "lower media volume when wake word recognized" functionality. Background audio now automatically attenuates upon wake detection, ensuring voice commands aren't drowned out by playback.

Credits: Thanks to @nils-mosbach for the detailed report and validation assistance.

0.4.3

29 Mar 05:33
843224b

Choose a tag to compare

Core Architecture Refinements

  • Settings Interface Overhaul: Eliminated redundant navigation layers and overlapping UI expressions; interaction paths now significantly more intuitive
  • Extension Component Layout Standardization: Resolved multiple boundary condition issues in component rendering, achieving consistent visual presentation across device form factors
  • Field Description Standardization: Comprehensive correction of technical terminology and status prompts throughout the application, removing ambiguous expressions

Sendspin Component Deep Optimization

  • Information Card Architecture Upgrade: Introduced multi-dimensional data panels with full reveal support via upward swipe gesture interaction
  • Coordinate System Offset Resolution: Fixed cumulative calculation errors in dynamic positioning, substantially improving anchor point precision
  • Protocol Layer Corrections: Addressed state machine anomalies during handshake phase, enhancing connection stability under edge cases

Mod Store Stability Enhancements

  • Potential Crash Scenario Fixes: Reinforced boundary condition handling with comprehensive exception tolerance mechanisms
  • Resource Loading Logic Optimization: Reconstructed asynchronous queue management to prevent race conditions during concurrent operations
  • Allwinner A64 SoC Support Modularization: Migrated relevant drivers and optimization modules to Mod Store, enabling on-demand loading and independent update cycles

System Services & Boot Mechanisms

  • Service Restart Announcement Fix: Corrected broadcast logic during service initialization phase, eliminating duplicate or abnormal trigger conditions
  • Auto-Startup Filtering Mechanism Enhancement: Introduced abnormal volume amplification detection with automatic suppression to prevent audio output anomalies caused by boot sequence pulses

Protocol Stack & Underlying Fixes

  • Communication Protocol Errata: Corrected field serialization/deserialization rules, ensuring cross-version compatibility guarantees
  • Memory Management Optimization: Resolved handle leakage in specific operational scenarios, improving long-running stability metrics