Raspberry Pi Media Center and Hats are a series of Raspberry Pi Zero-based media center devices. They share a similar look, and compared to my earlier designs, they have a great-looking aluminum case.
Raspberry Pi Media Center Hats are cost-effective versions of the above devices, sharing the same DACs and similar schematics but being able to pair with any Raspberry Pi boards.
- Raspberry Pi Media Center and Hats
- Table of Contents
- Motivation
- Raspberry Pi HiFi Media Center and Hats
- Amped Raspberry Pi Media Center and Hats
- Loud Raspberry Pi Media Center and Hats
- Louder Raspberry Pi Media Center and Hats
- Dual TFT and OLED Hats
- Which device is right for me
- Features
- Boards Pinout
- Software
- DAC Configuration - HiFi Raspberry Pi Media Center and Hat
- DAC Configuration - Amped Raspberry Media Center and Hat
- DAC Configuration - Loud Raspberry Pi Media Center and Hat
- DAC Configuration - Louder Raspberry Pi Media Center and Hat
- Bare OS Options
- Bare OS + Standard client services (Ansible short overview)
- Third-party Media Software
- Volumio
- Rotating MAC address on the W5500
- TAS58xx DSP Capabilities (TAS5805M / TAS5825M)
- TAS58xx DAC I2C address changes
- Hardware
- Demo
- Where to buy
- Press mentions
I did a few audio projects in the past, some using ESP32, some using larger Orange Pi and Raspberry Pi devices. Each has its pros and cons, and with each iteration, I'm trying to focus on the details that were working best for me while actually using those devices at home.
What is special about the Raspberry Pi ecosystem is, of course, its community support. Being a not-so-strong software developer, I often have to rely on the work that other people did and bake it into the base Raspbian image. Attaching a DAC, Ethernet, and IR reader is as simple as adding 3 lines to the config.txt file, which is a bit of magic, really
dtoverlay=gpio-ir,gpio_pin=23
dtoverlay=w5500
dtoverlay=hifiberry-dac
Believe it or not, all the device tree definitions, kernel drivers, and dependency packages are already in place.
Sure, compared to the ESP32 platform, it is not as lightweight. It requires more power, it takes some time to boot. But when it comes to rapid development, there is nothing like the Raspberry Pi.
Raspberry Pi HiFi Media Center is a first-in-line product that uses the legendary PCM5100 series DAC with supreme audio quality. It exposes line-level output that you can plug into a stereo amplifier. Analog power comes through an Ultra-low-noise LDO, making sure no interference from the Raspberry comes through to your speakers. Spend as much as you need on the external amp to deliver the sound you like (personally, I prefer late 80's audio gear).
| 1X | 2X |
|---|---|
Raspberry Pi HiFi Hat is the lightweight implementation of the same DAC and power circuitry in a Hat shape. It has two flavors: 1X is a traditional DAC that works with any Raspberry Pi out there, while 2X is specifically designed for Raspberry Pi 5 and implements two stereo-DACs, which Raspberry Pi 5 users can use independently. Using two of them, you can have up to 4 stereo outputs, totalling 8 channels of audio.
The PCM5100 HiFi DAC is combined with a highly efficient TPA3110D2 D-class amplifier. It brings all the best from the HiFi model and adds an onboard amp to form a complete solution that can be paired with speakers directly. It uses an external power source to feed hungry amps and host Pi using an onboard drop-down converter. It has similar power capabilities to the Louder Raspberry DAC, but it is much simpler to use since it only needs a valid I2S signal to operate, so it is a single line of configuration in the config.txt file.
| 1X | 2X |
|---|---|
Amped Raspberry Hat is the lightweight implementation of the same DAC and power circuitry in a Hat shape. Following the same pattern, the 1X version is a single DAC+AMP combo that will work with every Pi, while 2X is a Raspberry Pi 5 specialty that can drive 4 channels independently. 2X boards use 4-layer PCBs to ensure good signal protection to keep noise low.
Originally, amps could be shut down using GPIO pins, but in the latter version of the board, I removed that functionality. The reason is that TPA3110 doesn't have a dedicated MUTE pin, and I was using the SHDN pin for that purpose. Changing the voltage on that pin created a pop sound, no matter how slowly I changed the voltage. I'm planning to switch to a more modern TPA32XX series going forward to solve this issue.
As of the end of 2025, I'm working on an upgraded version of the Amped Hat that uses a newer and more capable TPA3128 amp. There are a few benefits that the new amp brings
- It is much more efficient (about half the heat with the same output power, compared to TPA3110), so the board can sustain higher power for longer
- It has a true MUTE pin that can be connected to the Pi and shut down the output driver when no audio is playing
- It can be powered from a 5V source, so if you're not looking for maximum power, you can use a USB-C power alone
- Being a newer design, it has better audio quality. I can't hear it, but people say it sounds much better
Loud Raspberry Pi Media Center uses a dual MAX98357 HiFi DAC with a built-in highly efficient D-class amp to deliver 3 to 5W of music power directly to your speakers. It is not too loud, but also very simple to use and fun to play with. When DAC is not in use, it goes into shutdown mode, making sure no hissing will keep you up at night. It powers from a standard USB-C power source, like a phone charger, etc.
| 1X | 2X |
|---|---|
Loud Raspberry Pi Hat is the same DAC and audio circuitry in a cost-efficient Hat form. 1X version can be used with any Raspberry Pi, while Raspberry Pi 5 users can use two pairs of speakers independently on the 2X version. The hat will pull the juice from the Pi's 5V line, or power the Pi itself using screw connectors, so you can make sure enough power is delivered to both boards.
| Louder Raspberry Pi | Louder Raspberry Pi NOPD |
|---|---|
Louder Raspberry Pi Media Center is a top-of-the-range model that uses modern, highly capable TI TAS58xx series DACs (TAS5805M/TAS5825M) and is aimed to be paired with medium-to-large speaker systems. With 25W per channel stereo output, it packs a punch and can easily enliven living quarters or dorm rooms. It is highly efficient, but much more demanding for power when cranked; therefore, it uses USB-C Power Delivery to pull up to 65W from the wall power adapter. Alternatively, the NOPD version will pull the power from a generic power adapter using a standard barrel jack. It can be used both with Wi-Fi and Ethernet (to make sure bad Wi-Fi does not interrupt the stream)
| 1X | 2X |
|---|---|
![]() |
![]() |
Louder Raspberry Pi Hat drops the USB-PD in favor of an external power supply up to 28V (opposed to 20V over PD) and has a step-down converter onboard to deliver 5V to the Pi, so you need only a single power source for everything. Otherwise, it delivers audio through the same highly capable DAC, capable of driving large speakers or tearing apart small ones.
Hat Variants:
- 1X: Single TAS5805M DAC for stereo output (2.0)
- 2X: Dual TAS5805M DACs for 2.1 configuration with dedicated crossover filters (~45W subwoofer, ~22W per satellite)
- 1X Plus: Enhanced version featuring TAS5825M DAC with better power efficiency and richer DSP features
- 2X Plus: Dual TAS5825M DAC version for 2.1 configuration with dedicated crossover filters (~55W subwoofer, ~30W per satellite)
The 2X version uses dual TAS5805M/TAS5825M DACs with single I2S interface to deliver a complete 2.1 speaker system with dedicated crossover filters. The power budget is optimized with 45..55W for the subwoofer and 22..30W per satellite speaker, specifically aimed at delivering a professional 2.1 speaker configuration.
| 1X Plus model | 2X Plus model |
|---|---|
![]() |
![]() |
TAS58xx DACs (TAS5805M/TAS5825M) feature highly capable DSPs that allow flexible configuration of each channel to fit your needs. The DSP is now fully controllable from user space through ALSA, providing real-time control of EQ settings (including 15-band parametric EQ and crossover filters), Mixer modes, Analog Gain, Modulation scheme, and Switching frequency - all without reboots. The driver automatically detects the chip variant based on I2C address and provides appropriate controls.
2X Hat Features:
- Primary DAC (0x2d/0x4c): Stereo satellite speakers with HF crossover (high-pass, 60-150Hz), or full-range speakers with 15-band EQ
- Secondary DAC (0x2e/0x4d): Mono subwoofer in bridge mode with LF crossover (low-pass, 60-150Hz)
- Linkwitz-Riley 4th order crossover filters
- Global device list synchronization for reliable initialization (DSP init triggered by I2S clock)
- Independent ALSA controls per DAC for fine-tuning
To add a visual touch to the above Hats, I developed two Hats that add two displays each: Dual OLED Hat adds 1.3" 128x64 px OLED displays, and Dual TFT Hat that adds two 2.0" 240x320 px TFT displays. These can be used to add visualisations, current track playing, and whatever else comes to your mind. Both options use the SPI bus, and this means two things: they are not very fast, you should count on a 30 fps frame rate at best; but also, they are very easy to use from user space, using popular Adafruit and Pimoroni Python libraries. But most importantly, they are dead cheap, costing only $5 a piece, definitely not going to drain your budget.
| Dual OLED Hat | Dual TFT Hat |
|---|---|
| HiFi Raspberry Media Center and Hat | Loud Raspberry Media Center and Hat | Louder Raspberry Media Center and Hat | Louder Raspberry Hat Plus | Amped Raspberry Media Center and Hat | |
|---|---|---|---|---|---|
| Image (Media Center) | n/a | ||||
| Compatible with (Media Center) | Raspberry Pi Zero (W), Raspberry Pi Zero2 W | Raspberry Pi Zero (W), Raspberry Pi Zero2 W | Raspberry Pi Zero (W), Raspberry Pi Zero2 W | n/a | Raspberry Pi Zero (W), Raspberry Pi Zero2 W |
| Image (Hat) | ![]() |
![]() |
|||
| Compatible with (1X Hat) | Every Pi | Every Pi | Every Pi | Every Pi | Every Pi |
| Image (Hat, 2X) | ![]() |
||||
| Compatible with (2X Hat) | Raspberry Pi 5 | Raspberry Pi 5 | Every Pi | Every Pi | Raspberry Pi 5 |
| DAC | Single PCM5100A 32bit Stereo DAC | Dual (1X) or Quadruple (2X) I2S DAC MAX98357 with built in D-Class amp | (1X) Stereo I2S DAC TAS5805M with built in D-Class amp (2X) Dual (2.1) I2S DAC TAS5805M with built in D-Class amp |
(1X) Stereo I2S DAC TAS5825M with built in D-Class amp (2X) Dual (2.1) I2S DAC TAS5825M with built in D-Class amp |
Single (1X) or Dual (2X) PCM5100A 32bit Stereo DAC working with TPA3110D2 D-Class amp; TPA3128 starting from Rev E |
| Output | 2.1 VRMS Line level output -100 dB typical noise level | [1X] 2x 3W (8Ω); 2x 5W (4Ω) [2X] 4x 3W (8Ω); 4x 5W (4Ω) |
[1X] 2x 22W (8Ω, 1% THD+N); 2x 32W (4Ω, 1% THD+N) at 20V 1x 45W (4Ω, 1% THD+N) at 20V [2X]: 2x 22W (8Ω, 1% THD+N) + 1x 45W (4Ω, 1% THD+N) |
[1X] 2x 32W (8Ω, 1% THD+N); 2x 45W (4Ω, 1% THD+N) at 20V 1x 53W (4Ω, 1% THD+N) at 20V [2X]: 2x 32W (8Ω, 1% THD+N) + 1x 53W (4Ω, 1% THD+N) |
Line-out (2.1V RMS) and [1X]2x 25W (8Ω, 1% THD+N) at 22V; 2x 22W (4Ω, 1% THD+N) at 16V 1x 40W (4Ω, 1% THD+N) at 20V [2X]4x 25W (8Ω, 1% THD+N) at 22V; 4x 22W (4Ω, 1% THD+N) at 16V 2x 40W (4Ω, 1% THD+N) at 20V (TPA3128) 2x 22W (8Ω, 1% THD+N) at 20V 2x 40W (4Ω, 1% THD+N) at 20V 1x 60W (3Ω, 1% THD+N) at 20V (bridged) |
| RGB LED | Media Center only | Media Center only | Media Center only | no | Media Center only |
| IR input | yes | yes | yes | 1X model | yes |
| Onboard Serial Bridge | Media Center only | Media Center only | Media Center only | no | Media Center only |
| Ethernet (Media Center) | Wiznet W5500 SPI Ethernet | Wiznet W5500 SPI Ethernet | Wiznet W5500 SPI Ethernet | no | Wiznet W5500 SPI Ethernet |
| Power requirement | Media Center: 5V USB-C power adapter (up to 1 A) Hat: 5V from the host Internally: LP5907 3.3 V Ultra-Low-Noise LDO |
Media Center: 5V USB-C power adapter (up to 3 A) Hat: 5V from the host (up to 4A) or 5V from screw connector (powering host) |
65W USB-C PD power adapter [NOPD] Up to 26V from external PSU [Hat] 7..26V from external source powering host (up to 3A cont.) |
7..26V from external source powering host (up to 3A cont.) |
65W USB-C PD power adapter [NOPD] 8..26V from external PSU [Hat] 8..26V from external source powering host (up to 3A cont.) |
| Mechanical dimensions (WxHxD), Media Center | 88mm x 38mm x 100mm | 88mm x 38mm x 100mm | 88mm x 38mm x 100mm | n/a | 88mm x 38mm x 100mm |
| Mechanical dimensions (WxHxD), Hat | 65mm x 30mm x 15mm | 65mm x 30mm x 20mm | 65mm x 56mm x 20mm | 65mm x 56mm x 20mm | 70mm x 61mm x 20mm |
| I2S CLK | I2S DATA | I2S WS | MAX98357A EN, Loud Media Center | MAX98357A EN, Loud Hat | TPA3110 EN, HiFi-Amped Hat (Revisions A,B) | |
|---|---|---|---|---|---|---|
| Raspberry Pi Zero | 18 | 21 | 19 | 4 | [1X]8, [2X]5,6 | [Rev A, B]5,6 |
| Raspberry Pi 2,3,4 | 18 | 21 | 19 | 4 | [1X]8, [2X]5,6 | [Rev A, B]5,6 |
| Raspberry Pi 5 | 18 | 21, 23, 25, 27 | 19 | 4 | [1X]8, [2X]5,6 | [Rev A, B]5,6 |
| I2S CLK | I2S DATA | I2S WS | Mute | |
|---|---|---|---|---|
| Raspberry Pi Zero | 18 | 21 | 19 | 8 |
| SPI CLK | SPI MOSI | SPI MISO | LAN RES | LAN CS | LAN INT | WS2812 RGB LED | RELAY EN | IR INPUT | |
|---|---|---|---|---|---|---|---|---|---|
| Raspberry Pi Zero (BCM) | 11 | 10 | 9 | 24 | 8 | 25 | 12 | 7 | 23 |
| I2C CLK | I2C DATA | DAC PWDN | DAC FAULT | PD POWER GOOD | |
|---|---|---|---|---|---|
| Raspberry Pi Zero (BCM) | 3 | 2 | 4 | 26 | 16 |
| SPI MOSI | SPI MISO | SPI CLK | SPI CE0 | SPI CE1 | DC0 | DC1 | RESET (SHARED) | BACKLIGHT (SHARED) | |
|---|---|---|---|---|---|---|---|---|---|
| Raspberry Pi (Any)) | 10 | 9 | 11 | 7 | 8 | 24 | 25 | 16 | 18 |
Being a Raspberry Pi software selection is a vast space for experimentation. First things first, for any OS you need to configure DAC. Then we talk about different OS options.
You can use any distribution you like. The only change you need to make to enable hardware is to add 3 lines to the /boot/config.txt
dtoverlay=gpio-ir,gpio_pin=23
dtoverlay=w5500
dtoverlay=hifiberry-dac
A simple setup should only include a single line into /boot/config.txt, the amp will be powered on all the time by default.
dtoverlay=hifiberry-dac
[Revisions A and B] If you want to control the amp using GPIO you may use software integration to pull GPIO5/6 HIGH or LOW to switch the amp ON and OFF.
Starting from revision C it will be possible to use device-tree configuration to switch the amp ON and OFF when audio is playing (it is possible in earlier revisions as well, but I didn't manage to avoid fully the speakers popping sound)
As simple as the HiFi model, just add 3 lines to the /boot/config.txt
dtoverlay=gpio-ir,gpio_pin=23
dtoverlay=w5500
# pin 4 for Media center, pins 5,6 for Hat
dtoverlay=max98357a,sdmode-pin=4
Note that for Hat only the last line is applicable
Note for 2X Loud Hat - it will probably require a dedicated device tree file, that's a work in progress still
TAS58xx DACs (TAS5805M/TAS5825M) are not supported by default Raspbian distribution, therefore, some work needs to be done to enable them. Linked repo contains code and instructions on how to configure it. It will take you 5 minutes and one reboot.
1X Hat/Media Center (TAS5805M): Use the single DAC overlay:
dtoverlay=tas58xx,i2creg=0x2d
Plus Hat (TAS5825M): The driver automatically detects TAS5825M based on I2C address:
dtoverlay=tas58xx,i2creg=0x4c
2X Louder Hat (2.1 Audio): The driver includes full dual DAC support for 2.1 speaker configurations with crossover filters. Use the dual overlay:
dtoverlay=tas58xx-dual
This configuration provides:
- Primary DAC (0x2d): Stereo satellite speakers with HF crossover (high-pass filter, 60-150Hz adjustable)
- Secondary DAC (0x2e): Mono subwoofer in bridge mode with LF crossover (low-pass filter, 60-150Hz adjustable)
- Synchronized initialization via global device list
- Individual EQ mode control per DAC
- Linkwitz-Riley 4th order crossover filters
- Runtime parameter overrides (eq_mode, mixer_mode, bridge_mode)
Advanced Configuration: The driver supports runtime overrides via device tree parameters:
# Single DAC with custom settings
dtoverlay=tas58xx,i2creg=0x4c,eq_mode=2,bridge_mode=1,mixer_mode=1
# Dual DAC with individual settings
dtoverlay=tas58xx-dual,eq_mode_primary=3,eq_mode_secondary=2,bridge_mode_secondary=1See the driver README for detailed configuration options.
With the bare OS, you're in full control of what to install and configure. It is totally up to your use case.
| Raspbian | DietPi | PostmarketOS | |
|---|---|---|---|
| Link | link | link | link |
| Code | link | link | link |
| Based on | Debian | Debian | Alpine |
| Type | Bare OS | Base OS | Bare OS |
A minimal Raspberry Pi OS can be provisioned with the most-used media features via Ansible playbooks in this repo. Current functionality includes:
- Hardware setup: HiFi/Loud/Louder/Amped DAC configuration, optional W5500 SPI Ethernet overlay, HDMI audio disable, OLED/TFT enable, rotating-MAC fix for W5500.
- Core audio services:
- PulseAudio (system-wide, network sink)
- Spotify Connect (Raspotify/librespot)
- Snapcast server and client (multi-room sync)
- Apple AirPlay (Shairport Sync)
- Logitech Media Server client (Squeezelite)
- UPnP/DLNA renderer (gmediarender)
- DSP: CamillaDSP backend plus CamillaGUI frontend.
- Visualizers: LED bar, OLED, and TFT CamillaDSP VU meters.
- Convenience: tmux auto-attach profile, base init/updates.
Full details, requirements, and run steps are documented here:
- See the detailed guide: Ansible Playbooks README
This setup integrates cleanly with Home Assistant, LMS, Mopidy, and other sources, including multi-room synchronization via Snapcast.
| HifiBerry OS | PiCorePlayer | MupiBox | Mopidy | Volumio | Moode | Balena Audio | |
|---|---|---|---|---|---|---|---|
| Link | link | link | link | link | link | link | link |
| Code | link | link | link | link | link | link | link |
| Based on | Debian | Tiny Core Linux | DietPi | Debian | Debian | Debian | Balena |
| Type | OS + Services | OS + Services | OS + Services | Services only | OS + Services | OS + Services | OS + Services |
| Remote management | No | No | No | No | No | No | Yes |
| SW support | |||||||
| UI/UX features | |||||||
| Web UI | Yes | Yes | Yes | Yes | Yes | Yes | |
| Mobile App/UI | Yes | Yes | Yes | Yes | Yes | ||
| IR Remote | ? | Yes | ? | ? | ? | ? | Custom |
| Server features | |||||||
| LMS server | Yes | ? | No | ? | ? | ? | |
| Local library | Yes | Yes | Yes | Yes | Yes | ||
| Radio providers | Yes | Yes | Yes | Yes | Yes | ||
| Snapcast server | ? | ? | ? | ? | ? | ? | Yes |
| Client features | |||||||
| LMS Client/Squeezelite | Yes | Yes | ? | No | Yes | Yes | ? |
| Airplay | Yes | Yes | ? | No | Yes | Yes | Yes |
| Spotify | Yes | Yes | Yes | No | Yes | Yes | Yes |
| Snapcast client (HA) | Yes | ? | ? | ? | ? | ? | Yes |
| Pulseaudio sink | ? | ? | ? | ? | ? | ? | Yes |
| UPNP/DLNA client | Yes | Yes | Yes | ||||
| MPD | Yes |
Volumio is a great piece of software, extremely popular with media center devices like Raspberry Media Center.
With HiFi Raspberry and Loud Raspberry, things are fairly simple. Those DACs are supported out of the box. Select HiFiBerry DAC and Adafruit MAX98357 in the DAC Model settings accordingly. Optionally, you may also create a /boot/userconfig.txt file and add the following config to enable W5500 Ethernet
[all]
dtoverlay=w5500
For Louder Raspberry, you'd need to perform a few more steps to configure a custom DAC.
Setup instructions
First, get access to the terminal either from USB-Serial or from SSH. To enter the Serial terminal, you'd need to add this line to /boot/userconfig.txt (create if missing)
enable_uart=1
Also, in the latest Volumio releases, you'd need to update /boot/cmdline.txt file, removing quiet, nodebug and plymouth.ignore-serial-consoles flags, and changing loglevel=0 to loglevel=7.
You can enable SSH at volumio.local/dev and log in using user volumio and password volumio
We're about to build kernel modules, so we need to install a few dependencies first (all commands going forward are running on the target host, ie, Raspberry Pi)
sudo apt update && sudo apt install git raspberrypi-kernel-headers build-essential -y
Assuming you're in, first install build prerequisites (this will take a while, grab a coffee)
volumio kernelsource
Next, pull the DAC driver from GitHub
cd ~
git clone https://github.com/sonocotta/tas5805m-driver-for-raspbian
cd tas5805m-driver-for-raspbian
Build a kernel driver
cd /usr/src/rpi-linux && sudo find . -type d -exec chmod 755 {} \; # no idea why permissions are not right, but this should fix it
cd ~/tas5805m-driver-for-raspbian
make all
If all goes well, you should see no errors in the console
make -C /lib/modules/6.1.77+/build M=/home/volumio/dev/tas5805m-driver-for-raspbian modules
make[1]: Entering directory '/usr/src/rpi-linux'
CC [M] /home/volumio/dev/tas5805m-driver-for-raspbian/tas58xx.o
MODPOST /home/volumio/dev/tas5805m-driver-for-raspbian/Module.symvers
CC [M] /home/volumio/dev/tas5805m-driver-for-raspbian/tas58xx.mod.o
LD [M] /home/volumio/dev/tas5805m-driver-for-raspbian/tas58xx.ko
make[1]: Leaving directory '/usr/src/rpi-linux'
Copy over kernel drivers to the filesystem
sudo make install
Now, let's compile and copy the device tree
sudo apt install device-tree-compiler -y
sudo ./compile-overlay.sh
At this stage, Volumio is not changing DT overlay automatically. I can't figure out why, but for now, let's add it manually to the end of the /boot/config.txt file
#### Volumio i2s setting below: do not alter ####
#dtoverlay=hifiberry-dac <- comment out any other DAC you had before
dtoverlay=tas58xx,i2creg=0x2d
After reboot, you should be able to see the new sound card via aplay -l
card 2: LouderRaspberry [Louder-Raspberry], device 0: bcm2835-i2s-tas58xx-amplifier tas58xx-amplifier-0 [bcm2835-i2s-tas58xx-amplifier tas58xx-amplifier-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
Also you can change it's settings via ALSA (including equilizer). It will be preserved across reboot
Perform a quick speaker test, to confirm that sound card is working
speaker-test -c 2 -t wav -D sysdefault:CARD=LouderRaspberry
Next, we need to update the Volumio settings. Navigate to /volumio/app/plugins/system_controller/i2s_dacs/dacs.json file and add this line as the first choice in the Raspberry PI section
{"id":"louder-raspberry","name":"Louder Raspberry","overlay":"tas58xx,i2creg=0x2d","alsanum":"2","alsacard":"LouderRaspberry","mixer":"Master","modules":"tas58xx","script":"","needsreboot":"yes"},
Restart the Volumio service
sudo systemctl restart volumio.service
Now you should be able to select Louder Raspberry in the DAC list, which will enable output after Voliumio restart
Volumio will start playing using the right DAC on its own. Congratulations!
On some systems, the W5500 driver will rotate the chip's MAC address on each boot, which is quite annoying if you're binding the DHCP server to them. There is a manual fix that can help with that
- Downloaded the w5500 overlay file
- uncomment this line and change the MAC to your liking // local-mac-address = [aa bb cc dd ee ff];
- save the file as w5500-overlay-custom.dts
- create the binary with the following command:
dtc -I dts -O dtb -o w5500-custom.dtbo w5500-overlay-custom.dts - backup the original w5500.dtbo:
sudo mv /boot/overlays/w5500.dtbo /boot/overlays/w5500.dtboBACKUP - move the new .dtbo into the overlays directory:
sudo cp w5500-custom.dtbo /boot/overlays/w5500.dtbo - reboot and ip a will report the new MAC address
Both TAS5805M and TAS5825M DACs feature sophisticated DSPs inside. The unified driver automatically detects which chip is connected based on I2C address and provides extensive control over DSP features through ALSA, eliminating the need for the $250+ evaluation board for most use cases.
Chip Detection:
- TAS5805M: I2C addresses 0x2c - 0x2f (automatically detected)
- TAS5825M: I2C addresses 0x4c - 0x4f (automatically detected)
Currently Implemented:
- EQ Modes: 4 modes selectable via device tree (
ti,eq-mode)- OFF (0): No equalization
- 15-band parametric EQ (1): Full frequency control with adjustable Q and gain
- LF Crossover (2): Low-pass filter for subwoofers (60-150Hz, Linkwitz-Riley 4th order)
- HF Crossover (3): High-pass filter for satellite speakers (60-150Hz, Linkwitz-Riley 4th order)
- Speaker Configurations: 2.0 stereo, 2.1 (with dual DAC), bridge/PBTL mono
- Mixer Controls: Flexible channel routing (Stereo, Mono, Left only, Right only)
- Analog Gain: 32 steps (0 to -15.5dB) for output level optimization
- Modulation Schemes: BD, 1SPW, Hybrid (efficiency vs. quality tradeoffs)
- Switching Frequency: 384kHz, 480kHz, 576kHz, 768kHz
- Bridge Mode: PBTL for maximum mono power output
- Fault Monitoring: Read-only ALSA controls for real-time hardware health monitoring
- Channel faults (overcurrent, DC fault)
- Power supply faults (PVDD under/overvoltage)
- Thermal warnings (4 levels: 112°C, 122°C, 134°C, 146°C)
- Clock and Digital Signal Processing faults
- Overcurrent warnings and shutdown detection
I'm planning to dive deep into the topic (whenever I have time, haha) and provide optional settings for the most common configurations. This is a work in progress with no deadline set.
While most of the boards come with an I2C address consistent with the driver's default value, some boards might appear on the 1-bit off address. It happens partially because I accidentally put a resistor with the wrong value on the 'address set' pin on one of the early batches, partially because of some other unknown quirks (it was once reported on the modern board). It seems that when the DAC reports an unexpected address, it sticks to it, so it is easy to fix.
Address ranges: TAS5805M uses addresses 0x2c-0x2f, while the new TAS5825M (used in the Plus variant) uses addresses 0x4c-0x4f.
The indication of that is when journalctl spits out errors about I2C communication failure. In that case, one can confirm the address issue by running the i2cdetect -y 1 command.
| config.txt | i2cdetect | journactl -k |
|---|---|---|
dtoverlay=tas58xx,i2creg=0x2e |
![]() |
![]() |
In the picture above device is found on the 0x2d address, while the driver hooks up to the 0x2e address, indicated by the UU mark. In that case, the address needs to be changed in the /boot/firmware/config.txt file to reflect the actual address. The correct picture would look like below
| config.txt | i2cdetect | journactl -k |
|---|---|---|
dtoverlay=tas58xx,i2creg=0x2d |
![]() |
![]() |
On the Louder 2X Hat with dual DAC configuration, both DACs are independently controlled by the driver. The expected output from the i2cdetect command shows both devices with UU marks (indicating they're bound to the driver):
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- UU UU --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- —
Both DACs (primary at 0x2d, secondary at 0x2e) are configured via the device tree overlay and synchronized through a global device list. The primary DAC typically handles stereo satellite speakers with HF crossover, while the secondary handles the subwoofer with LF crossover in bridge mode.
Please visit the hardware section for board schematics and PCB designs. Note that PCBs are shared as multi-layer PDFs as well as Gerber archives.
| Front | Back | PCB |
|---|---|---|
![]() |
![]() |
![]() |
| 1X and 2X |
|---|
![]() |
| Front | Back | PCB |
|---|---|---|
![]() |
![]() |
![]() |
| 1X | 2X |
|---|---|
![]() |
![]() |
| Front | Back | PCB |
|---|---|---|
![]() |
![]() |
![]() |
| 1X | 2X |
|---|---|
![]() |
![]() |
| Front | Back | Back (NOPD) | PCB |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 1X | 2X |
|---|---|
![]() |
![]() |
According to the manufacturer, Raspberry Pi Zero requires at least 1 Amp of 5V line, and each of the Loud Raspberry DAC needs at least 1 Amp extra. With the total budget requirement of 3 Amps, it is within specs for a non-PD USB-C 5V power line. I've decided not to use USB-PD for The Loud model. Just make sure your power adapter is capable of 3 Amps (or keep a reasonable volume if it is not).
HiFi Raspberry barely uses extra power compared to what the Raspberry Pi Zero board itself needs. No special requirements are there.
For Louder Raspberry, it is clearly not an option. You'd need a PD-enabled power adapter to run the board. Ideally, you should supply a 20V 3.25 Amp capable power source, common for modern laptops (Dell, HP, and Lenovo all tested and work perfectly). However, pretty much any 9V/12V/20V PD-enabled power adapter will work, most typically phone chargers with a quick charge option. The smallest of the family is a 25W model, which is plenty enough for both the Raspberry Pi and the DAC.
The interesting part was all the phone and laptop chargers I used for the test (around five different makes of each), sounded great, with no hissing, no popping. (Apart from the Apple ones, they didn’t work. Likely they have Apple-specific PD protocol). This is probably because modern devices have become so noise-sensitive that manufacturers have been forced to do good work on noise levels.
Tested and perfectly working models are (others may be available)
| Model | Image |
|---|---|
| 65W USB-C Lenovo ThinkPad Laptop Charger Replacement Power Adapter | ![]() |
| 65W 45W 20V 3.25A Type-C PD Laptop Charger | ![]() |
| 120W Gan Type-C PD Charger | ![]() |
| 45W Type-C PD Mobile Phone Wall Adapter | ![]() |
Because USB-PD is a bit of a Wild West in terms of standards, sometimes not everything goes as designed. Some people have run into this with power adapters that aren’t fully PD-standard compliant. In most cases, the worst that happens is the PD chip doesn’t trigger the 20V mode, so the Raspberry Pi goes into the boot loop, not getting enough voltage on the 5V bus.
The “hammer-style” solution I came up with is a new NOPD version of the Louder Raspberry that lets you use a barrel power jack to supply raw voltage directly. The catch? Standard 2mm pins can’t handle high currents, so I’ve gone with a 2.5mm pin instead — it’s a bit unusual but still common enough in the laptop world.
With this setup, you can supply more than the 20V limit of PD, giving you a bit more power for the speakers. You probably won’t hear much difference (thanks to the way human hearing works), but it could help larger speakers that need a bit more to really “open up." Other than that, the NOPD version works just like the PD version — no software changes are needed.
Due to the limited space available on the Raspberry Pi Hat-sized PCB, I'm using simplified output filter schematics with 1812 ferrite beads (instead of full-size coils on the Media Center models). These filters are not as efficient and generate more heat on the larger volumes. The datasheet recommends (quote)
- Ferrite bead filter is appropriate for lower PVCC (< 12V)
- Ferrite bead filter is recommended for use with Fsw = 384 kHz with Spread spectrum enabled, BD Modulation
One caveat is that, since Raspberry Pi requires 5V to run and the input voltage is in the range of 5 to 20 volts, I failed to find a step-down converter that (a) supports this wide input range and (b) can run in no-dropout mode (meaning keep 5V output on 5V input). If you know one, please let me know. But at this moment you have to supply more than 5V over USB (meaning 9V in PD standards) to start the Raspberry.
Now, you have USB power delivery and the Serial on the same bus, how should this work then? When you're developing, you may not require the full power of the DAC, and it will happily work with 5V input (limited to something like 5W of music power per channel). you just supply 5V to the Raspberry using a micro-USB cable, while USB-C will power the DAC with 5V and give you a Serial console at the same time
HiFi version of the Raspberry Media Center has an internal driver for the external relay. It has a back-facing diode to shunt any coil-inducted currents. Driver is an open-drain output with the following states
| Driver Pin State (IO7) | Output state | Relay connected between OUT and +5V |
|---|---|---|
| Floating (pulled low with 100K resistor) or LOW |
High impedance | INACTIVE (switched OFF) |
| HIGH | Pulled to GND | ACTIVE (switched ON) |
Schematics:
External relay can be connected directly between OUT and +5V pins (1st and 3rd pins, mid pin being GND)
Start by configuring IR device-tree overlay in the /boot/config.txt file
Setup instructions
# Enable IR reader on GPIO23
dtoverlay=gpio-ir,gpio_pin=23
After reboot, you should be able to see /dev/lirc0 device
$ ls -al /dev/lirc0
crw-rw---- 1 root video 251, 0 Jun 17 21:51 /dev/lirc0
There are multiple ways you can capture IR signals using /dev/lirc0 device, one of them is to use lirc utilities by installing them via
$ sudo apt install lirc -y
Next, we need to pull the remote configuration or create new one by training lirc. First path is much easier, you may find your remote in the library here. Pull it into lirc config by running
$ cd /etc/lirc/lircd.conf.d/
$ sudo wget -O aa59-00741a.lircd.conf https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/samsung/aa59-00741a.lircd.conf?format=raw
$ sudo service lircd restart
To be sure, I've updated also /etc/lirc/lirc_options.conf changing 2 lines
driver = default
device = /dev/lirc0
Next, capture incoming IR codes by running
$ irw
00000000e0e0e01f 00 KEY_VOLUMEUP Samsung_TV
00000000e0e0e01f 01 KEY_VOLUMEUP Samsung_TV
00000000e0e0e01f 00 KEY_VOLUMEUP Samsung_TV
00000000e0e0d02f 00 KEY_VOLUMEDOWN Samsung_TV
00000000e0e0d02f 01 KEY_VOLUMEDOWN Samsung_TV
The tested method of controlling RGB LED is to use rpi_ws281x library, available as rpi-ws281x-python module. You can install it with pip. This library uses PWN capabilities of the GPIO and does not require any specific device tree configuration. The only configuration that you'd need in any of the provided examples is below
Setup instructions
Install the library first
sudo apt install python3-pip git -y
sudo pip install rpi_ws281x --break-system-packages
Pull the example repo
git clone https://github.com/rpi-ws281x/rpi-ws281x-python/ && cd rpi-ws281x-python/examples
Update any of the example's header with the below configuration
# LED strip configuration:
LED_COUNT = 1
LED_PIN = 12
LED_FREQ_HZ = 800000
LED_DMA = 10
LED_BRIGHTNESS = 255
LED_INVERT = False
LED_CHANNEL = 0
Now you're ready to run it
sudo python3 ./strandtest.py
Unfortunately, this library uses direct access to memory, so you need to run it as root.
OLED display Hat supports 2 types of display: 16-pin and 30-pin. Despite using different connectors, they are using similar pinouts and the same controller, typically SH1106 for 1.3' displays (for which these hats are designed mechanically) or smaller 0.96' SSD1306-based ones. They present different display orientations, though, so pick one based on your specific need. Tested display models are below
| Model | Image |
|---|---|
| 1.3" 128x64 OLED Screen SH1106 White/Blue 16-Pin | ![]() |
| 1.3" 128x64 OLED Screen SH1106 White/Blue 30-Pin | ![]() |
On the software side, I used the luma-oled library for testing, and it works well. Other libraries might do even better, but I haven't spent too much time on the discovery yet.
The code snippet below will get you started (make sure SPI is enabled)
from luma.core.interface.serial import i2c, spi, pcf8574
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1309, ssd1325, sh1106, sh1107, ws0010
from time import sleep
serial1 = spi(device=1, port=0, gpio_DC=24, gpio_RST=16)
serial0 = spi(device=0, port=0, gpio_DC=25, gpio_RST=16)
device1 = sh1106(serial1, rotate=0, width=128, height=64)
device0 = sh1106(serial0, rotate=0, width=128, height=64)
with canvas(device0) as draw:
draw.rectangle(device0.bounding_box, outline="white", fill="black")
draw.text((30, 40), "Hello World #{}".format(0), fill="white")
with canvas(device1) as draw:
draw.rectangle(device1.bounding_box, outline="white", fill="black")
draw.text((30, 40), "Hello World #{}".format(1), fill="white")TFT display Hat also supports 14-pin and 22-pin pinouts, which can be used with multiple screen models, based on ST7735 and ST7789 controllers. Use 2.0" displays to achieve a perfect fit, but smaller or larger displays will work as well. These are 320x240 px TFT displays that I've tested, and apart from working, they also provide a really good picture
| Model | Image |
|---|---|
| 2.0" ST7789 IPS TFT Display 240x320 14-Pin | ![]() |
| 2.4" ST7789 IPS TFT Display 240x320 14-Pin | ![]() |
On the software side, I used pimoroni libraries for st7735 and st7789 to acceess the displays over SPI directly, while there is also a more linux-native option is availble.
The libtft library allows for initialization of these displays as a framebuffer device as simply as enabling these two lines in the config.txt file
dtoverlay=fbtft,spi0-0,st7789v,rotate=90,width=240,height=320,dc_pin=25,reset_pin=16,led_pin=18
dtoverlay=fbtft,spi0-1,st7789v,rotate=90,width=240,height=320,dc_pin=24
Raspberry Pi 5 is the first one that allows the user to drive multiple I2S data lines using the same interface. What it means in practice is that while all older Pis have just 3 I2S lines (CLK, WS, DATA), Pi5 supports up to 4 Data lines (CLK, WS, D0, D1, D2, D3), capable of driving 4 independent audio interfaces.
2X Raspberry Pi hats support alternative data lines. You need to short some solder bridge to use it, though. It allows configuring Hats to use different pins and stack them together to create 4 individual stereo interfaces (8 channels in total) using the same device.
By default, the 2X hat uses pins 21, 23 for data, with the possibility to switch to pins 25 and 27 with solder bridges and stack 2 boards together.
| HiFi Hat (rev C) | HiFi Hat (rev D) | HiFi-Amped Hat | Loud Hat |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
The configuration value that allows this is quite simply
dtoverlay=hifiberry-dac8x
At this point, all Hats with 1X marking a single DAC version that can be used with every Pi, including Pi 5. The 2X version uses two data lines of the Pi5 and will work out-of-the-box with it. It can be changed to use a second set of data lines, so 2 boards stacked together will utilize 4 DACs or 8 channels of audio. You can short data lines together and use 2X Hat with Pi2/3/4, having 2 parallel DAC channels.
You may support our work by ordering these products
- HiFi Raspberry Pi Media Center
- HiFi Raspberry Pi Hat at Tindie and Elecrow
- Amped Raspberry Pi Media Center
- Amped Raspberry Pi Hat
- Loud Raspberry Pi Media Center
- Loud Raspberry Pi Hat
- Louder Raspberry Pi Media Center
- Louder Raspberry Pi Hat as Tindie and Elecrow
- Louder Raspberry Hat Plus - Coming soon!




















































