Virtual Chime Rewrite: Chime Speaker Box

Virtual Chime Rewrite: Chime Speaker Box

The Chime speaker box is the simplest device of the Virtual Chime family, so it was the first to be completely rewritten in a new architecture.

Raspberry PiBuildrootLinuxElectronicsC++3D Printing

A single purpose doorbell chime that plays audio alerts when triggered over MQTT. The system runs on a custom-built minimal Linux image, boots in under 5 seconds, and provides a web interface for configuration and monitoring. Designed as a device that can be plugged in and forgotten about.

Features

  • Fast Boot - Custom Linux image boots to operational state in under 5 seconds
  • Dual Daemon Architecture - Audio service and web configuration daemon run independently, ensuring the core ring functionality is never compromised
  • MQTT Integration - Listens for doorbell ring events over MQTT and plays audio responses
  • Web UI - Web configuration interface built with Svelte, compiled for minimal impact
  • OTA Updates - Over-the-air updates for both the application runtime and Web UI
  • Custom Linux OS - ~300MB purpose-built image with no unnecessary packages or services
  • WiFi Auto-Connect - Automatic wireless network bring-up with wpa_supplicant
  • I2S Audio - Direct digital audio via MAX98357A I2S amplifier

Architecture

The chime is built as an embedded device with a clear separation between critical and non-critical services:

Hardware

  • Raspberry Pi Zero W - Main platform with built-in WiFi
  • MAX98357A I2S Amplifier - Digital-to-analog converter and amplifier chip
  • LSM-104F-8 Speaker - Speaker for audio output
  • 3D-Printed Enclosure - Custom compact housing for the entire assembly

Runtime

chime

The core service that subscribes to MQTT topics and plays audio files when ring events are detected. Written in C++ for minimal resource usage and fast response times.

chime-webd

Handles configuration, hosting the Web UI, and exposing REST APIs. Runs independently so that any web interface issues cannot affect the audio service.

Build System

Buildroot Configuration - Defines the entire Linux system including kernel, packages, and root filesystem Docker-based Builds - Containerized build environment for reproducible image generation on macOS hosts genimage - Creates the final SD card image with proper partition layout

Infrastructure

  • Custom Linux Image - Built with Buildroot, includes BusyBox, Dropbear SSH, wpa_supplicant, and the two C++ daemons
  • MQTT Broker - External broker that the chime connects to for receiving events
  • WiFi Network - Connects to existing infrastructure via WPA2, configured through the Web UI
  • NTP Time Sync - Automatic time synchronization for accurate logging

The chime is deployed as a standalone device. Just plug it in, configure WiFi and MQTT broker via the web interface, and it joins the network to start receiving doorbell events.

← Back to all projects