Hi everyone,
Long-time happy community member — going back to the Mycroft days where I made a few skills (auto-volume, Google AIY voicekit, Auto-Volume and a few others). I’ve been lurking through the OVOS years and have a lot of respect for what the team has built.
I recently dug out my Mark II and decided to give it a new life. I want to share what I’ve built, because I think it might be interesting to people here — even though the approach is a bit different from the OVOS path.
The idea
Instead of running OVOS on the device, I wanted to use the Mark II as a Home Assistant Assist satellite — meaning the voice pipeline lives entirely in HA, and the Mark II is a smart endpoint: mic, speaker, touchscreen, LED ring and buttons.
The key insight is that HA Assist is actually very flexible about what runs each step of the pipeline. You can mix and match:
-
Wake word: local on the device (openWakeWord)
-
STT: Whisper locally, or cloud, or whatever
-
Conversation: HA’s own, OpenAI, Claude, or OVOS as a conversation agent
-
TTS: Piper locally, Nabu Casa, or OVOS TTS plugins
So OVOS is absolutely still in the picture — just as a backend component in HA rather than running natively on the device. That opens up some interesting possibilities, especially for people who already have HA running.
What mark2-assist does
It’s a set of shell scripts that turns a fresh Raspberry Pi OS Lite (Trixie/Debian 13) install into a fully configured Mark II satellite. A bit like the old PiCorft, but this is way more understandable and can be extended with modules for more funktionality:
Core:
-
SJ201 hardware drivers (VocalFusion kernel module, XVF-3510 firmware, TAS5806 amp, WirePlumber profile) — converted from the ovos-installer Ansible roles, credit to that team
-
Linux Voice Assistant (ESPHome protocol) as the satellite — replaces the old Wyoming satellite, auto-discovered by HA
-
Weston Wayland compositor + Chromium kiosk showing your HA dashboard on the touchscreen
-
Hardware test suite covering all 10 Mark II components before you proceed
-
Kernel watchdog that auto-rebuilds the VocalFusion module after kernel updates
Optional modules:
-
LED ring reacting to voice states (idle/wake/listen/think/speak/error)
-
Animated face overlay that reacts to voice and dances to music
-
Volume overlay (on-screen bar when volume changes)
-
Screensaver with clock + live weather from HA
-
MQTT sensors publishing voice state, audio playback, CPU/temp etc. to HA
-
Snapcast multiroom audio client
-
AirPlay receiver (shairport-sync)
-
MPD local music player
-
KDE Connect phone integration
The installer handles everything: asks all questions upfront, runs hardware setup, reboots automatically, resumes and installs the rest, reboots to the finished system. Total time around 20-40 minutes.
Why not just run OVOS?
Honest answer: I wanted to keep my existing HA setup as the brain, and I already had pipelines, automations and integrations there. The Mark II becomes one of several voice endpoints alongside other satellites around the house.
That said — nothing stops you from pointing the HA conversation agent at OVOS, using OVOS TTS for the voice responses, or using OVOS STT for speech recognition. The pipeline is fully configurable in HA. I think of it as complementary rather than competing.
For people who want OVOS running natively on the device, the OVOS installer and Neon AI are still the right paths. This is for people who are already deep in the HA ecosystem and want their Mark II to fit into that.
The hardware situation
One thing worth documenting for the community: the Mark II hardware is actually in pretty good shape for this kind of repurposing.
The VocalFusion DTBO overlays that OpenVoiceOS maintains include the PWM fan overlay — so thermal management is handled automatically by the kernel with no extra code needed. The SJ201 runs fine on Trixie once the VocalFusion driver is built. The DSI touchscreen works with the Waveshare overlay.
The trickiest parts were:
-
Getting the XMOS XVF-3510 audio routing right in PipeWire on Trixie
-
The LED ring uses NeoPixel on GPIO 12, not I2C as some older docs suggest
-
The TAS5806 amplifier needs specific initialization before audio works
-
Weston vs labwc for the Wayland compositor (ended up on Weston)
All of these are now solved and documented in the repo.
Repo
https://github.com/andlo/mark2-assist
Still work in progress — there are known issues tracked in KNOWN_ISSUES.md and contributions are very welcome, especially from people who know the Mark II hardware well.
/Andreas