Setting Up a Wyoming Satellite with WM8960 on Raspberry Pi

This guide walks you through setting up a Wyoming Satellite using a Raspberry Pi Zero 2 W with the WM8960 I2S soundcard, suitable for offline wake word detection and audio I/O in a Home assistant voice pipeline with the wyoming protocoll. The steps below assume you're working with a clean installation of Raspberry Pi OS Lite (Bookworm/Bullseye).

1. Enable I2S and I2C and Load the WM8960 Driver

Edit the Raspberry Pi configuration file:

sudo nano /boot/firmware/config.txt

Append the following lines to enable I2S and I2C and to load the WM8960 audio driver:

dtparam=i2s=on
dtparam=i2c_arm=on
dtoverlay=wm8960-soundcard

2. System Update and Required Packages

Update the system and install essential packages:

sudo apt update
sudo apt upgrade

sudo apt install --no-install-recommends \
  git \
  python3-venv \
  python3-pip \
  alsa-utils \
  btop \
  fish

Then restart the pi:

sudo reboot

3. Install Wyoming OpenWakeWord

Clone the repository and run its setup script:

git clone https://github.com/rhasspy/wyoming-openwakeword.git
cd wyoming-openwakeword
script/setup

You can later run the wake word detection service with:

script/run --uri 'tcp://0.0.0.0:10400' --debug

4. Install Wyoming Satellite

Clone and set up the Wyoming Satellite:

git clone https://github.com/rhasspy/wyoming-satellite.git
cd wyoming-satellite/
script/setup

5. Run Wyoming Satellite

Launch the satellite with the WM8960 soundcard using the following command:

script/run \
  --name 'WM8960 Satellite' \
  --uri 'tcp://0.0.0.0:10700' \
  --mic-command 'arecord -D plughw:1,0 -r 16000 -c 1 -f S16_LE -t raw' \
  --snd-command 'aplay -D plughw:1,0 -r 22050 -c 1 -f S16_LE -t raw' \
  --wake-uri 'tcp://127.0.0.1:10400' \
  --wake-word-name 'ok_nabu' \
  --mic-auto-gain 5 \
  --mic-noise-suppression 2 \
  --awake-wav /home/adivius/wyoming-satellite/sounds/awake.wav \
  --done-wav /home/adivius/wyoming-satellite/sounds/done.wav \
  --timer-finished-wav /home/adivius/wyoming-satellite/sounds/timer_finished.wav \
  --debug-recording-dir recordings \
  --debug

Adjust the sound device identifiers (plughw:1,0) and paths to match your system as needed.


6. Adjust Volume with alsamixer

Use alsamixer to configure volume levels:

alsamixer
  • Press F6 to select the WM8960 soundcard.
  • Set appropriate levels for Speaker, Playback, and Output Mixer.
  • Unmute channels using the M key.

Summary

You now have a fully functional Wyoming Satellite on your Raspberry Pi using the WM8960 soundcard, ready for integration with a voice assistant stack. This setup enables offline wake word detection and audio handling through an I2S-based device, ideal for low-power and always-on environments.