Intent of this thread is to provide a tutorial for setting up CamillaDSP on a RPi4. There is a lot of really good information scattered through ASR, DIYAudio and the CamillaDSP GitHub but there also appears to be a lot of apprehension. My goal is to give concrete examples of how to use CamillaDSP with a variety of hardware to ease some of that apprehension.
I realize this tutorial is quite long and looks daunting to the uninitiated. I felt the same way when trying to figure this stuff out. My advice is to take it step by step, go slowly and ask questions. Some DIY projects are not worth the effort but this one definitely is. At the end of this project you will have a DSP with almost unparalleled processing power in a very small form factor, easily configured via web interface all at a very low cost compared to commercial options.
I would like to especially thank @HenrikEnquist for developing CamillaDSP. I’ve long been skeptical of computer based DSP but CamillaDSP is a game changer. It easily runs on minimal hardware, is easy to interface with a variety of devices and overall just seems exceptionally well designed. I’ve replaced all of my miniDSP systems with RPi4s running CamillaDSP and could not be happier.
The tutorial is divided in to 4 parts, Part 1 talks through CamillaDSP background, Part 2 covers how to get a working CamillaDSP setup, Part 3 documents specific CamillaDSP configuration files for various multichannel DACs and Part 4 talks through more advance stuff such as the GUI, displays, IR receivers, trigger output options and cases.
Motivation for this thread started from the ASR Open Source Streamer thread. I would like to thank everyone that participated in that thread as it pushed me to explore computer based DSP. As this thread is more about how to use CamillaDSP rather than how to build a streamer (although that will also be covered!) I decided it was better to start a new thread.
I am not a programmer or DSP expert, my primary motivation is finding better ways to implement DIY active speakers. If you see a better way of doing something or want further explanation please speak up! These instructions have been developed as I learned how to implement CamillaDSP and found better ways to set it up but I am always learning.
As of 10/20/2022 I am now linking old versions of this tutorial in zip form with all screenshots and attachments to this post for future reference. I only plan to save the old versions when there are major revisions. In general I am attempting to maintain the existing step numbering to ensure that the discussion makes sense for updated versions of the tutorial. I am also switching to more generic username / hostname nomenclature instead of the previous michael3 / raspberrypi3 examples.
Old Versions
10/20/2022 Archive
Revision Log
01/18/2022: Fixed error with quotation mark in squeezelite configuration instructions.
01/19/2022: Added 1 dB attenuation to all output channels of Okto configuration to avoid digital clipping. Added further discussion about digital clipping when using downstream volume control. Added dates to configuration files.
01/20/2022: Revised instructions for ALSA loopback to run sudo apt install linux-modules-extra-raspi instead of sudo apt install linux-modules-extra-$(uname -r). This should allow the loopback to persist through kernel updates without running any additional commands.
01/26/2022: Added brief notes on specific micro SD card models.
01/27/2022: Small editorial changes, thanks @Wirrunna for the feedback.
02/01/2022: Updated case pictures to match attached drawings.
03/29/2022: Updated following:
+Added more detail on how to install and use WSL
+Added guidance on how to copy / paste in to terminal
+Added guidance on how to use scp to copy files to RPi
+Added steps for starting camilladsp and camillagui from terminal before implementing service
+Added logging to camilladsp service
+Updated flirc.py and oled.py with source switching functionality
+Added video of display
03/31/2022: Moved ALSA Loopback installation step sooner.
04/10/2022: Added instructions to implement bluetooth using bluez-alsa.
04/26/2022: Minor updates for use with Ubuntu Server 22.04 64 bit.
05/04/2022: Updated to reflect CamillaDSP V1.0.0 release. Changed to using symlink configuration file.
05/22/2022: Slight update to reflect that SPDIF input works on Focusrite 18i20 2nd gen as Ubuntu 22.04.
07/17/2022: Updated flirc.py and oled.py to implement mute functionality bound to KEY_LEFT.
07/21/2022: Added upgrade instructions and revised to use CamillaDSP V1.0.1 and rc5 GUI.
08/11/2022: Minor update to flirc.py to better integrate with GUI.
08/16/2022: Removed all directory changes to make installation easier.
10/20/2022: Major update for Ubuntu 22.10 and V1.0.2 CamillaDSP and V1.0.0 CamillaGUI
11/29/2022: Minor update to reflect V1.0.3 CamillaDSP and V1.0.1 CamillaGUI
11/30/2022: Updated following:
+Changed to single flirc.py routine as a result of CamillaDSP mute behavior changes
+Implemented improved configuration switching in flirc.py and oled.py
+Updated oled.py to eliminate display anomalies when switching from longer to short text strings
02/21/2022: Added performance improvements to oled.py based on feedback from @LandscapeJohn.
03/25/2023: Changed recommended display mounting hardware for 10 mm faceplate from 5 mm to 3 mm long screws.
04/18/2023: Updated oled.py with option for smaller volume font with tenths place. Also updated flirc.py to with option for 0.5 dB volume increments.
04/20/2023: Updated oled.py with option to display clipped samples instead of CDSP status.
04/25/2023: Minor update to give option for Ubuntu Server 23.04 64 bit.
07/17/2023: Minor update to use WantedBy=multi-user.target instead of WantedBy=graphical.target for all services.
I realize this tutorial is quite long and looks daunting to the uninitiated. I felt the same way when trying to figure this stuff out. My advice is to take it step by step, go slowly and ask questions. Some DIY projects are not worth the effort but this one definitely is. At the end of this project you will have a DSP with almost unparalleled processing power in a very small form factor, easily configured via web interface all at a very low cost compared to commercial options.
I would like to especially thank @HenrikEnquist for developing CamillaDSP. I’ve long been skeptical of computer based DSP but CamillaDSP is a game changer. It easily runs on minimal hardware, is easy to interface with a variety of devices and overall just seems exceptionally well designed. I’ve replaced all of my miniDSP systems with RPi4s running CamillaDSP and could not be happier.
The tutorial is divided in to 4 parts, Part 1 talks through CamillaDSP background, Part 2 covers how to get a working CamillaDSP setup, Part 3 documents specific CamillaDSP configuration files for various multichannel DACs and Part 4 talks through more advance stuff such as the GUI, displays, IR receivers, trigger output options and cases.
Motivation for this thread started from the ASR Open Source Streamer thread. I would like to thank everyone that participated in that thread as it pushed me to explore computer based DSP. As this thread is more about how to use CamillaDSP rather than how to build a streamer (although that will also be covered!) I decided it was better to start a new thread.
I am not a programmer or DSP expert, my primary motivation is finding better ways to implement DIY active speakers. If you see a better way of doing something or want further explanation please speak up! These instructions have been developed as I learned how to implement CamillaDSP and found better ways to set it up but I am always learning.
As of 10/20/2022 I am now linking old versions of this tutorial in zip form with all screenshots and attachments to this post for future reference. I only plan to save the old versions when there are major revisions. In general I am attempting to maintain the existing step numbering to ensure that the discussion makes sense for updated versions of the tutorial. I am also switching to more generic username / hostname nomenclature instead of the previous michael3 / raspberrypi3 examples.
Old Versions
10/20/2022 Archive
Revision Log
01/18/2022: Fixed error with quotation mark in squeezelite configuration instructions.
01/19/2022: Added 1 dB attenuation to all output channels of Okto configuration to avoid digital clipping. Added further discussion about digital clipping when using downstream volume control. Added dates to configuration files.
01/20/2022: Revised instructions for ALSA loopback to run sudo apt install linux-modules-extra-raspi instead of sudo apt install linux-modules-extra-$(uname -r). This should allow the loopback to persist through kernel updates without running any additional commands.
01/26/2022: Added brief notes on specific micro SD card models.
01/27/2022: Small editorial changes, thanks @Wirrunna for the feedback.
02/01/2022: Updated case pictures to match attached drawings.
03/29/2022: Updated following:
+Added more detail on how to install and use WSL
+Added guidance on how to copy / paste in to terminal
+Added guidance on how to use scp to copy files to RPi
+Added steps for starting camilladsp and camillagui from terminal before implementing service
+Added logging to camilladsp service
+Updated flirc.py and oled.py with source switching functionality
+Added video of display
03/31/2022: Moved ALSA Loopback installation step sooner.
04/10/2022: Added instructions to implement bluetooth using bluez-alsa.
04/26/2022: Minor updates for use with Ubuntu Server 22.04 64 bit.
05/04/2022: Updated to reflect CamillaDSP V1.0.0 release. Changed to using symlink configuration file.
05/22/2022: Slight update to reflect that SPDIF input works on Focusrite 18i20 2nd gen as Ubuntu 22.04.
07/17/2022: Updated flirc.py and oled.py to implement mute functionality bound to KEY_LEFT.
07/21/2022: Added upgrade instructions and revised to use CamillaDSP V1.0.1 and rc5 GUI.
08/11/2022: Minor update to flirc.py to better integrate with GUI.
08/16/2022: Removed all directory changes to make installation easier.
10/20/2022: Major update for Ubuntu 22.10 and V1.0.2 CamillaDSP and V1.0.0 CamillaGUI
11/29/2022: Minor update to reflect V1.0.3 CamillaDSP and V1.0.1 CamillaGUI
11/30/2022: Updated following:
+Changed to single flirc.py routine as a result of CamillaDSP mute behavior changes
+Implemented improved configuration switching in flirc.py and oled.py
+Updated oled.py to eliminate display anomalies when switching from longer to short text strings
02/21/2022: Added performance improvements to oled.py based on feedback from @LandscapeJohn.
03/25/2023: Changed recommended display mounting hardware for 10 mm faceplate from 5 mm to 3 mm long screws.
04/18/2023: Updated oled.py with option for smaller volume font with tenths place. Also updated flirc.py to with option for 0.5 dB volume increments.
04/20/2023: Updated oled.py with option to display clipped samples instead of CDSP status.
04/25/2023: Minor update to give option for Ubuntu Server 23.04 64 bit.
07/17/2023: Minor update to use WantedBy=multi-user.target instead of WantedBy=graphical.target for all services.
Last edited: