Skip to content

HiFiBerryOS as a free Volumio replacement

A complete guide on how to replace Volumio with HiFiBerryOS without needing HiFiBerry hardware

📅 Created: Jul 1, 2022

HiFiBerryOS is a music-focussed distro for the Raspberry Pi in conunction with a HiFiBerry board. But you don't actually need a HiFiBerryboard to be able to use it.

Installing HiFiBerryOS ​

HiFiBerryOS can be downloaded from their official website or from GitHub.

Just download and extract the zip, use Balena Etcher or any other flashing tool and install the HiFiBerryOS image onto a MicroSD-card.

Put the card into your Pi, connect power, Ethernet and either your Stereo system directly via your HiFiBerry board outputs or, if you don't have a HiFiBerry board, just connect a USB-DAC.

Give it a few minutes and then open http://hifiberry.local in your browser or, if that doesn't work, lookup the IP and use it to connect to the web-UI. Just follow the instructions and setup up your HiFiBerryOS.

For more detailled installation instructions refer to their official install guide. If you intend to use WiFi instead of Ethernet, they also have an official guide for that.

Enabeling 3rd-party Soundcards ​

By default HiFiBerryOS looks for HiFiBerry devices/boards and uses them as playback device. While I do recommend using their hardware to support them and the development of this awesome OS, you can "hack" the OS to use any soundcard. Because HiFiBerryOS is nothing really more than a linux distro, we can just use any USB soundcard that works fine with Linux, which pretty much all USB soundcards do.

If you are using HiFiBerry hardware, feel free to skip this step. Everyone else, follow these steps:

  1. SSH into your Pi using it's IP or name.
bash
$ ssh root@hifiberry.local # default password: "hifiberry"
  1. List all available playback devices
bash
$ aplay -l

## Example output:
#**** List of PLAYBACK Hardware Devices ****
#card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0]
#  Subdevices: 0/1
#  Subdevice #0: subdevice #0
#card 1: D10s [D10s], device 0: USB Audio [USB Audio]
#  Subdevices: 1/1
#  Subdevice #0: subdevice #0

In my case the soundcard I want to use is called "card 1: D10s [D10s], device 0: USB Audio [USB Audio]". We need the name to tell the OS which device to use so if your device also has USB in it's name, we can use that, if not, use something that is inlcuded in the name of your soundcard.

  1. Edit the reconfigure-players script

This scrip is executed on startup and among other things sets up the soundcard. Thanks to Hagen who posted this hack on hifiberry forums.

Open the file in your editor with:

bash
$ sudo nano /opt/hifiberry/bin/reconfigure-players

and find this block of code:

detect_hw () {
HW=`aplay -l | grep hifiberry | awk -F: '{print $1}'`
HW_SHORT=`echo $HW | awk '{print $2}'`
fix_asound_hw
}

Replace hifiberry in the second line with a keyword in the name of your soundcard, USB in my case and save the file (press Ctrl + X and then Y).

Now restart your Pi and it should automatically use your USB soundcard.

Tidal Connect ​

Tidal Connect is not natively baked in HiFiBerryOS but is available as an unofficial community hack.

Just SSH into your Pi and execute following commands:

bash
$ cd data/
$ git clone https://github.com/TonyTromp/tidal-connect-docker.git
$ cd tidal-connect-docker
$ ./install_hifiberry.sh # Runs the installer

The installer is fully automated and will take a few minutes to set everything up. It will ask you which playback device you want to use. After selecting the default device it didn't want to play anything.

I found that there is also a file called select-playback-device. I ran it and it found my soundcard. Running the install script again it also found my soundcard and now Tidal plays just fine on HiFiBerryOS:

bash
$ ./select-playback-device
$ ./install_hifiberry.sh

A note on the side: Switching inputs doesn't seem to work with Tidal Connect here. Make sure nothing is playing when you want to use Tidal Connect.