Turn Any Android 7-16 Device into a BLE Smart Home Control Panel

I think this app has huge potential… but I just installed v0.6.0 on 3 different devices (Pixel 2, Fairphone v6 - my current phone and Samsung Galaxy Tab 9).

The voice recognition and processing is awesome but none of them play any sound after asking a voice command (yes, volume is up completely). Also tts.speak is not working.

Is it due to the latest v0.6 version or what could be the cause? I love that it allows me to turn on and off the device and that it is also a BLE Proxy. Downside is that it is not open-source so I cannot look into why the sound is not working.

Forget what I said… HomeAssistant was running in Docker and the automatically resolved IP address was wrong. When I manually configured the local network in Settings > System > Network and put in the correct IP address, everything worked.

1 Like

excellent! my dad will be very happy about this, as hes now 77 and starting to be forgetful.

Also just saw 0.6.1! Btw theres no about that shows hte version on the device that i can find, and i had issues with auto update working from 0.4.7 to 0.6.1 - it’ll tell me theres a new version but not let me update.

edit - I realize its launching download manager in the background to update.

ps - is there a suggested way to handle logging in?
Ie - I use the remote browser to show a ha dashboard, but I sitll have to log into the ha website on my phone the first time.

pps - cant seem to type into the webpage scrcpy (even though i normally use scrcpy all the time)

Sorry for the wait. Update notifications for the entities introduced in versions 0.6.1 to 0.6.2 have been posted, along with detailed technical information. Therefore, we recommend updating to the latest version. If you cannot upgrade online, you will need to update via GitHub.

Regarding scrcpy, Ava has now officially ported it internally to support it. This means that Ava programs now include both scrcpy and adb binaries.

You can experience this by going to the network console and finding “Cluster Enablement” in the advanced features.

Future development will leverage scrcpy and adb to unlock greater capabilities; this is only a temporary feature for the network cluster console.

Thank you for your support.

@AJolly

Ava 0.6.4 - Dawn +

rethinks both sides of a wall panel: what it shows while resting and how its screen can be used while active. The new Dawn magazine screensaver combines changing artwork with Home Assistant weather and entity states. The browser’s new dual-WebView layout then turns one display into two simultaneous, independently focused web workspaces, with an adjustable split for dashboards, controls, charts, cameras, and everyday information.

The new Software Update center also brings release notes, version selection, downloads, and installation together on the device. Lyrics matching and synchronization, microphone routing and gain, broadcast intents, media overlays, compact displays, and translations all receive targeted improvements.

Dawn · Magazine Screensaver

The former Xiaomi-style screensaver has been rebuilt as Dawn · Magazine Screensaver. It presents a rotating wallpaper with the current time, date, and a short quote, then adapts the rest of the composition to the information that is available and to the screen orientation.

Dawn was designed around a different idea from a conventional smart-home dashboard. A wall panel spends much of its life being seen from across a room, when a dense grid of controls is neither inviting nor easy to read. Dawn therefore treats the idle screen like a new magazine page at the start of the day: the image and typography establish the atmosphere, while time, weather, and a few chosen Home Assistant states remain glanceable without taking over the composition. The result is intended to feel calm enough to leave on, personal enough not to become another static clock, and still useful before anyone touches the screen.

Dawn 1 Dawn 2
Dawn 3 Dawn 4
Dawn 5

Up to four Home Assistant entity slots can be configured. Sensors, binary sensors, lights, and switches appear as compact status capsules with icons inferred from their entity type and name. A weather entity is treated specially: instead of becoming another capsule, it supplies a forecast strip along the bottom when forecast data is available. Dawn automatically selects a corner, centered, or dashboard layout according to the weather data, status capsules, and portrait or landscape space.

The wallpaper source is configurable. It can point to a JSON API or to an address that directly returns a random image; leaving it empty uses Ava’s default source. Images are preloaded before a transition, and the last successful content can be replayed from cache during startup or a temporary network outage. Compatibility handling for older Android WebView versions and an initial Home Assistant data push keep the page useful on the older wall panels that Ava commonly supports.

Path: Ava Settings → Screensaver → Magazine & Content

Dual Pages in the Browser

The browser’s major new capability in 0.6.4 is Dual Pages. Instead of treating a large display as one oversized phone page, Ava can turn it into two live web surfaces that remain visible and usable at the same time. They sit side by side in landscape and stack vertically in portrait. This is not a tab switcher or a static preview: both System WebViews stay present, and either one can become the active working page with a tap.

The size of the two panes can be adjusted rather than being locked to a half-screen layout. The default is 5:5, while independent weights from 1 to 9 let one page become the primary workspace and the other a narrow companion. A wall tablet can therefore use equal dashboards when both matter, a wide control panel beside a slim status column, or a large chart with a smaller set of actions without rebuilding either website.

The existing Home Assistant browser URL entity continues to control the left or upper page, preserving current automations. A second entity controls the right or lower page. Tapping either page gives it focus, after which URL editing, refresh, cache cleanup, and Web Console actions apply to that page. Console messages carry [L] or [R] markers, while settings such as page scale, text size, and User Agent refresh both pages when necessary.

This opens up combinations that previously required a second display or constant navigation:

  • Two Home Assistant dashboards: keep a whole-home overview on one side and a room-specific dashboard on the other. For example, lights and climate can remain beside energy, security, or family status, with each dashboard retaining the layout built for its job.
  • Live context beside controls: place a camera, doorbell, solar-production chart, music interface, or device diagnostics next to the Home Assistant controls that act on it. The larger pane can follow whichever side needs attention, while the companion page remains visible.
  • A shared information display: combine a household dashboard or calendar with a stock-market page, news feed, transit board, weather radar, or another web service. Ava is only hosting the pages, so existing authenticated web tools and purpose-built dashboards can be paired without Ava needing a separate integration for each source.

Each pane has its own pull-to-refresh path, and page-specific tools follow the pane currently in focus. This keeps the two-page layout practical for interaction and troubleshooting, not just passive viewing. The release also connects the existing Allow scrolling preference to the browser input path so disabling it now takes effect as configured.

Dual Pages is available for System WebView and is hidden while the Gecko engine is selected.

Path: Ava Settings → Browser → Page Display → Dual Pages

Software Update Center

A new Software Update page brings the complete update flow into Device Services. It shows the installed version, loads the full GitHub release notes, and lists every published Ava release that includes an APK. The latest version can be updated or reinstalled, and an older release can be selected manually when troubleshooting requires it.

Download, verification, installation, and their progress are handled as one continuous task. Automatic updates, checks at startup, the Home Assistant update entity, and reopening Ava after an update are enabled by default. Starting Ava’s core services after installation remains optional and is disabled by default. Ignore Updates and Auto Update are mutually exclusive so that the device cannot be configured to both install and ignore the same release.

Ava can use its built-in downloader or the Android system downloader. Android may still show its normal installation confirmation when Root, Shizuku, or Device Owner privileges are unavailable. Android also prevents installing an older version over a newer one; to downgrade in that case, export the Ava configuration, uninstall the current version, install the older APK, and import the configuration again.

Thanks to @realroywalker for requesting improved update controls in #156.

Path: Ava Settings → Device Services → Software Update

Better Lyrics Matching and Synchronization

LRCLIB is now Ava’s primary lyrics source. A request that times out after five seconds, returns no useful result, or fails validation automatically falls back to QQ Music; the QQ Music path also performs one short retry when needed.

Matching now considers track duration and multiple artists more carefully, reducing cases where a different recording with the same title supplies the lyrics. Known spoken-track and no-lyrics placeholders are filtered out, and a new track without artist metadata no longer inherits the previous track’s artist.

Small one- or two-second progress corrections from the upstream player now use hysteresis, keeping the lyric window from jumping backward and forward around a line boundary. Deliberate, larger seeks still realign the lyrics immediately.

Microphone Routing and Negative Gain

Software microphone gain now ranges from -24 dB to +24 dB. Positive values amplify a quiet input, while negative values attenuate a microphone that is too loud or captures too much background noise. The default remains 0 dB.

Recording device routing is now a separate choice from Android’s AudioSource mode. Ava can select Auto, Built-in microphone, or USB microphone, with a safe fallback when the requested USB device is unavailable. Related AudioSource labels and translations have also been clarified.

Thanks to @lone-baggie for requesting explicit USB microphone selection in #157.

Path: Ava Settings → Voice Config → Microphone

Broadcast Intent Compatibility

Broadcast intent launching once again preserves structured fields such as intent_package_name. Ava now merges those fields with the broadcast URI: values explicitly included in the URI take priority, while structured fields fill only the missing parts.

The launcher accepts a bare action, an action with query parameters, or an intent:#Intent URI. A broadcast containing both a data URI and structured fields no longer falls into the older URI-only path. The Home Assistant and ESPHome service schema still exposes every field; unused fields should be supplied as an empty string.

Thanks to @pantherale0 for reporting the regression in #155.

Media Overlay Pause Recovery

The media overlay no longer gets caught between a paused state and its idle timer. In minimal mode with the floating button disabled, pausing playback now fades the overlay out after 20 seconds. If the upstream player is still not ready to resume 10 seconds later, Ava clears stale title and artist identity and waits for fresh metadata instead of leaving old media information stuck on screen.

When the floating button is enabled, or when the detailed player is used, the established 10-second pause behavior remains unchanged. Resuming playback cancels the pending cleanup.

Compact Display and Translation Fixes

The Mini launcher keeps its four-button layout within compact square displays around 480 x 480 instead of allowing controls to overflow the screen.

2 Likes

For all other users here, this is an awesome app which deserves a lot of credit.

I did not think my old Android phone could be so useful…

Thanks, @knoop7 !

1 Like

Hello, I’m trying this useful project and I really like it but I have some issues to make it work.
Is there a troubleshooting section that could help me?
My setup is: HA on raspberry pi4 and AVA on an old huawei tablet with 7.0 android.
It seems working but doesn’t do what I ask.
For “doesn’t do what I ask” I mean the voice activation works, on my HA server I see the communication is active (ESP32 status listening/idle etc works) but it didn’t understand the commands.
If I try to start a conversation from HA settings/voice assistants/3dots/start conversation the assistant didn’t recognize what I ask.
If i set “speech-to-phrase” after 1, 2 seconds I receive “Speech detected, no text” written
If I set “faster-whisper” after 5, 6 seconds she spoke “I’m sorry I didn’t understand”
The question is easy, it is “what day is today?” (but in italian)
I’m using it italian, I’ve set voice assistant in italian and I’m asking in italian.
What should I do?
My idea is to using it for very simple tasks like open a specific dashboard or ask the weather without using my hands.
Thanks

This is a fundamental issue with Hass. Originally, Hass didn’t have any specific localization intentions; its principle is that it requires cloud LLM integration and needs to be paired with [other tools/systems].

Currently, GitHub - ha-china/ha_claw: As an aggregated AI feature of Home Assistant, it is designed to integrate and control third-party AI plug-ins. And has three-terminal dialogue aggregation function · GitHub is the main way to enhance integration with the native engine.

However, it’s currently not being maintained due to ongoing maintenance work on AvaPro, and you’ll need to wait a while, as the workload for claw is much greater.

A better approach is to explore the numerous resources online that can improve Hass integration. You can research these resources using HACS, as Hass cannot recognize certain specialized sentences offline.

@dapalo

I just wanna use simple commands like “turn on lights” or “start cleaning” for the cleaning robots.
This devices are actually connected to HA, they works from HA panels.
I exposed them to Voice Assistant but the system didn’t recognize what I say.
You mean I need an LLM for this too?
I though your AVA app will transport my voice to HA server and HA execute the simple command.
I don’t undestand what I’m doing wrong, I tried with another more recent tablet (android 13) and I have same issues.

Hi, you don’t need an LLM for simple things.
Have you read this: Set up a fully local voice assistant - Home Assistant and Best practices with Assist - Home Assistant and Talking to Assist - Sentences starter pack - Home Assistant

EDIT: also try to use the chat function (Assist, right top of the dashboard) to see if your typed command is executed.
image