What's new in Kiosk Satellite 2026.10.28
Kiosk Satellite now runs headless on devices without a screen, starting with the Echo Dot (2nd generation) on LineageOS. It works as a voice satellite, intercom, alarm clock, timer and speaker for Home Assistant, set up and managed entirely from the remote admin, with its light ring driven by the new LED Control page. Wake word arbitration is also fairer across different hardware.
New Feature: Headless mode
- Devices without a screen. Kiosk Satellite turns headless on its own on a device whose display is a stub, such as the Echo Dot. It never draws a screen and never loads a WebView, dashboard, screensaver or camera. It starts with the device, and Android stays awake so the buttons always reach it. See Echo Dot.
- Everything that works without a screen. Voice Satellite, the intercom, alarms, timers, the DLNA renderer, the Sendspin player, ESPHome, Fleet Management and plugins work as usual. Intercom calls are hands-free and the DLNA renderer offers audio only.
- A remote admin for what the device can do. The remote admin and the setup wizard leave out every page and control that needs a screen: Web Browsing, Screensaver, Camera, Camera Streams, Kiosk Mode, Lockdown Mode, Home Launcher and App Launcher, the dashboard settings and the screen tiles of the Overview. ESPHome leaves out the screen, screensaver, dashboard and camera entities.
- Setup over adb. Android cannot ask for permissions on a device without a screen, so they are granted over adb. The setup wizard and the Permissions page list the commands for anything still missing. Importing a backup in the wizard finishes setup at once.
- The Echo Dot's buttons. The Action button answers a ringing intercom call, stops a ringing alarm, dismisses a ringing timer or the voice turn, ends a call or otherwise starts a voice command. The microphone button mutes Voice Satellite, and the mute follows the Dot's own microphone mute both ways, so the button, the VS Mute switch in Home Assistant and the remote admin always agree. See The Buttons.
- A Button gesture. A new Button trigger on the Gestures page maps a press, a double press or a hold of the Action button to any gesture action. Claps work too, since they only need the microphone.
- Plugins that need a screen stay off. A plugin that only shows overlays or screensavers does not install on a device without a screen, from the Plugin Manager or a fleet leader, and reports This plugin needs a screen. Plugin authors can declare
"headless": trueand check the newhost.isHeadless()call to run everywhere and skip their display features. - Fleet followers without a screen. A headless follower leaves out the leader's values for the settings it holds fixed, such as the screensaver switch, so it stays in sync instead of showing as changed.
- An Echo Dot guide. The guide points to the LineageOS port, covers joining Wi-Fi and the adb grants, recommends volume settings that keep the wake word working while music plays and lists what recovers memory on the Dot's 480 MB.
New Feature: LED Control
- Status lights that follow Kiosk Satellite. On a device with lights Kiosk Satellite can drive, starting with the Echo Dot's light ring, the lights show voice activity, ringing alarms and timers, intercom calls, waiting notifications and the microphone mute in the colors an Echo device uses. A timer countdown, music playing and an idle look are optional. See LED Control.
- A page of its own. The new LED Control page shows only on a device with supported lights. It has a master switch and a group for each feature with its own switch, brightness and colors.
- Animate effects. The listening arc moves, thinking spins and alarms pulse. Turning off Animate effects holds every effect still, for lights that flicker while they move, as the Echo Dot's do on its current LineageOS build.
Improvements
- Voice gesture actions. Three new gesture actions, Start a voice command, Stop the voice assistant and Mute or unmute Voice Satellite, work with buttons, claps and every other trigger. See The Actions.
- More Home Assistant events. Voice Satellite interactions, intercom calls, the screensaver and the screen now fire
esphome.kiosk_satellite_voice,esphome.kiosk_satellite_intercom,esphome.kiosk_satellite_screensaverandesphome.kiosk_satellite_screenon the Home Assistant bus, next to the existing timer and alarm events. See Home Assistant Events. - Who turned the screen off (#1007). The new screen event and the new
SCREEN_ONandSCREEN_OFFAndroid broadcasts carry asource:appwhen Kiosk Satellite moved the screen andsystemwhen Android did, such as the power button. An automation can keep motion and face detection from waking a screen someone turned off by hand. See Screen. - Arbitration offset. A new setting under Wake Word > Wake Word Arbitration adds -30 to 30 dB to how loud a kiosk heard the wake word. Hardware that processes its own microphone, such as a Portal Go, hears a wake word much louder than a plain microphone at the same distance, and the offset evens that out. It stays with each kiosk in Fleet Management. See Wake word arbitration.
- Expose kiosk entities is on by default. A new kiosk added to Home Assistant arrives with its sensors and controls. A kiosk set up before keeps the choice it had, so ESPHome running only for the Bluetooth proxy does not start serving every entity after the update.
- Adding a kiosk Home Assistant had before. The Voice Satellite status and the setup wizard now say that Home Assistant asks for the new encryption key from the ESPHome page when it already had the kiosk, such as after a reinstall.
Fixes
- Noise suppression no longer wins wake word arbitration. Arbitration measured the wake word after the noise suppressor, which pushes the quiet between words toward silence, so a kiosk with Noise suppression on won from across the room. It now measures before the suppressor and after the echo canceller.
- Two kiosks answering the same wake word. A kiosk that detected the wake word later could claim it louder after the first kiosk had already decided, and claims sent only as broadcasts could be lost or held by the access point, so both answered. A kiosk now ends its turn when a louder claim arrives just after its window, and claims also go directly to every kiosk heard from before.
- Secure context proxy after a Home Assistant URL change. When the Home Assistant base URL moved to another address while the secure context proxy was on, a reload of the dashboard view could open the old address directly, past the proxy, and keep retrying it. Everything now follows the new address at once.