Welcome to our project documentation page, work in progress. If you have questions, check the community page and ask us!
This the multi-page printable view of this section. Click here to print.
1 - Overview
Welcome to the OtterCast documentation. Please see the sections below or on the left for what you are looking for. If your questions couldn’t be answered here, please check our Community page for help.
What is it?
OtterCast is an open-source audio streaming device running Linux. Based on a Sochip S3 SoC, featuring a Webinterface, shairport-sync, snapcast, Spotify Connect and pulseaudio sink/source. With a resolution of 24bit at 48kHz, combined with an elegant analog design and real time latency compensation OtterCast provides you with the best wireless audio experience.
Why do I want it?
Because it plays your favorite music over the air, reliably, whenever you need it. Is there more to say?
Where should I go next?
2 - Getting Started
Get your device
You still need the Hardware? We are planning a small production run, but until that has happened, please refer to the production files and instructions located in our repositories.
Get the firmware
After acquiring your device, you may head to our firmware section.
Flashed, and now?
You can mount the SD-Card and change the initial configuration by edition the
config.ini file, present on the first partition. You should add your Wifi credentials and give your Ottercast a lovely hostname, it will be displayed later when you are casting! If you need SSH access, you can add your public key by creating a
ssh_authorized_keys file containing your key.
Great, you did it! You may now check out the supported protocols and start casting or visit your Ottercasts web-interface by typing
<hostname>.local into your browsers address bar.
3 - Firmware
Ottercast Firmware is built using buildroot.
It’s running a mainline Linux kernel, with GNU userland, systemd, PulseAudio and Avahi.
Download ready-made images
Current firmware binaries can be found on GitHub at:
Firmware images are automatically built for each commit via GitHub Actions.
Flashing the image
The procedure is identical to a Raspberry Pi. Make sure to unzip (.gz/gzip) the firmware before writing it to a card.
Firmware binaries are disk images, containing partitions and can be written directly to an SD card or eMMC flash.
After flashing, you can mount the FAT32 partition and edit the
config.sh and (optional)
Configure your WiFi credentials, SSH public keys and a name for the device.
Building your own image
Building your own image can be done on a regular x86_64 machine running Linux.
Make sure to fulfill the buildroot dependencies:
These dependency lists are untested, please report if something is missing!
mkdir ottercast cd ottercast git clone https://github.com/Ottercast/buildroot-ottercast-audio.git wget https://buildroot.org/downloads/buildroot-2021.02.1.tar.gz tar xfv buildroot-2021.02.1.tar.gz cd buildroot-2021.02.1/ make BR2_EXTERNAL=../buildroot-ottercast-audio/buildroot/ ottercast_s3_defconfig
This will generate a config file in the buildroot folder.
make menuconfig to change buildroot settings (enable/disable packages, compile settings, etc.).
make linux-menuconfig to change kernel parameters.
Compile the firmware using
This will take ~60min on a very fast machine with stable internet connection.
First compilation will download, compile and assemble a full Linux installation from scratch.
This can take up to several hours. Be patient! Changes will build much faster.
The resulting disk image will be located at
The external tree can be found at: https://github.com/Ottercast/buildroot-ottercast-audio.
The webinterface is written in PHP and running as a CGI script.
uhttpd is used as a webserver and serves
/var/www on Port 80 via HTTP.
Frontend is using Bootstrap and jQuery.
4 - Supported protocols
Snapcast is a multiroom-capable network audio player.
Ottercast can act as a Snapcast client and will connect to a Snapcast server which is streaming audio.
Multiple Ottercasts (and other Snapcast clients) can connect to the same server and will play perfectly synced audio.
Ottercast can also work as a Snapcast server and stream audio from it’s Line-In port to multiple Snapcast clients.
Spotifyd / Spotify Connect
Spotifyd is a Spotify Connect client, written in Rust, utilizing the librespot library.
Requires Spotify Premium.
Shairport Sync / AirPlay
Shairport Sync is an open source reimplementation of the AirPlay protocol.
You can select your Ottercast as an AirPlay target on your iOS/macOS devices.
Shairport supports full audio synchronisation, which means audio/video sync will be enforced.
Ottercast can act as a PulseAudio Sink via
paprefs to enable local discovery and ensure
avahi-daemon is running.
Not really a protocol, but a yet badly supported input method! Connect a line-in via the TRS jack on the back of the OtterCastAmp or the left TRS jack of the OtterCastAudio, then log onto the device via SSH and run
pactl load-module module-loopback latency_msec=1.
You may need to adjust the input volume by running
PULSE_SERVER=x.x.x.x pavucontrol and e.g. lowering the input volume to 30%.