HiFiBerryOS
github.com
github.com
Background: I'm using a Beocreate 4 Channel amp since a few months, and it's great (even if a little bit expensive, but it perfectly fits my usecase). As mentioned elsewhere, I use it for phase correct cross overs via FIR (at 250 Hz, which means it requires lots of taps), and also for DRC and cabinet correction (same FIR filters). I "simply" adjusted their DSP program (using SigmaStudio) to my needs.
The OS looks nice, and it allows to relatively easy manage DSP programs/adjustments and, what's also kind of important, playback music. BUT I have one HUGE problem with it: The whole software is only really available as an OS image. That plain sucks. This seems all the rage these days, but if I would run every piece of software on an RPi of it's own, I'd end up with a small RPi cluster in a year or two, while one RPi would be enough for all of that.
I tried to build AUR packages, but this was utter frustrating to figure out which software depends on what else (the buildroot dependencies they have are good-enough, but not exact; and some software seems to be randomly split across packages) and how they're properly configured and so on. So I gave up after a few weekends and am now only running the sigmatcp server.
One thing you could eventually do if you wanted to go the low effort route but still share it on a raspberry pi would be to build the rootfs using buildroot in a tar archive and then import that as a container. I don't really know if it would work, perhaps you would need one container per service or something, but it could be an approach.
My low effort route was to run their image in a podman systemd container, but the setup magic wasn't happy with that and some services failed and I eventually gave up debugging that. Maybe I could have setup a qemu to run it in a VM, but that requires to somehow pass through i2c and spi.
If the effort for integrating the different components (MPD etc.), which still is not close to the capabilities of LMS would go instead into improving the front-ends for LMS (which do need an overhaul IMO), we would be so much further.
With that said, the synchronized playback has never been really what I would call great. It is roughly in synch so you can go form room to room and hear the same stuff, but when you get to an area where you can hear two devices at once there is definitely a disconcerting delay on one of them. Maybe that's because I've got one hard wired and one on wifi, but I thought it was supposed to correct for these differences.
Sync is one of the features which just work perfectly, beat-perfectly.
Of course when turning on one player it will pause the music for 3 to 5 seconds to catch up but then it just works.
Completely agree. I'm a big fan of the material plugin [1], in particular when viewed from a tablet-sized viewport. Easy to setup for family members as no apps need to be installed.
"We are putting a new lease of life into vintage B&O speakers, upgrading them with wireless capabilities, utilising the latest in open source technology."
Basically they are trying to turn old dumb speakers into smart ones. It has to be opensource because a conventional IoT vendor would not only try to sell you a new speaker, you would also be tied to their online servers. The hardware they offer is expensive but it is far more likely to keep its value after 10 years.
Been a happy user of Pi MusicBox for many years. Perfect for making any amp "smart".
I've not used Hifiberry OS but I read through the main parts of their code base a while back so I have some idea of it. I like how they are very clear about what software they are building upon but I'd like to see that information on their website, not just github. I also like that they've refrained from using the word "audiophile". That in itself probably saves a load of pointless support issues.
I think their upfront statement regarding support is a good idea:
> Do you need any help? Post your questions in our community area! Note that there is no individual support for HiFiBerryOS. We hope you will understand that we can’t also provide individual support for this free software. Please DO NOT send questions to our support email or our support form. Use the community area for questions.
> Why should you do this? It takes a lot of time to support HiFiBerryOS users. Using the forum ensures that we don’t have to answer the same questions again. Sometimes, also other users can share their own experiences and tips. This helps us to have more time to implement cool new features or fix bugs.
For a time I was foolishly trying to support people across Facebook, Twitter, email, Raspberry Pi forums, and our own community forum. This sucked all the time (and most of the enjoyment) from working on PiMusicbox and has contributed to its demise. I now only (sometimes) support on our community forum but most of our users are not (yet) in a position to help others so I'm not sure it's ever worked very well.
Since hifiberry are a for-profit company pushing this software with their products I hope they are supporting it themselves to some degree on their forum. Otherwise this could result in dumping unnecessary work onto the upstream developers and that wouldn't be helpful.
Edit: on a similar note, I'd also like to see them contribute upstream but it's probably not fair to single hifiberry out over that.
> I also like that they've refrained from using the word "audiophile".
YES! That word seems to be thrown around a lot as a justification for upcharge and I'm sure you're right about the support issues.
> but I could have easily just not understood a similar option in PiMusicBox
No, you are right, we never had that feature. It would have been the next step if the project was healthy. Or Spotify Connect, of course (although less interesting personally as we'd have to stop using Mopidy).
I had thoughts of a reboot which was much more focused around multi-room (using snapcast or the equally impressive looking SoundSync) but I looked around at Volumio, HiFiberryOS etc and didn't think I'd be bringing anything new to the table so why fragment the space. Perhaps something built around SoundSync would be interesting as that would provide Chromecast support but I am not sure that on it's own is enough. Plus the idea of my USP being something as locked-down as Google's Chromecast is unpleasant.
Also, this might sound bad, but I would like to head away from a project that is too focused on inexperienced users. The support gets too much and you very rarely get any contributions back.
https://www.hifiberry.com/beocreate/
Inside it runs HifiberryOS on a RPi 4, which I use to connect to Spotify and serve Bluetooth.
It runs pretty well, but the Spotify connection sometimes needs a kick (reboot) after a long idle period.
The main advantage of HifiberryOS for my setup is that it can control the DAC on the amp directly, including installing profiles for my specific speaker and managing the EQ.
It’s a shame the Beocreate amp is so expensive (£150), otherwise I’d set up a few more of these.
Can't say how well they work but a stack of IF board, DSP only, and Bluetooth programmer cost me around £50. Looks like the DAC resolution is better on the Beocreate though. No idea how good the amp is either - there are plenty of bad TPA3116 boards so sidestepping that problem might be worth the premium too.
The TPA implementation is pretty good as well. No audible noise or other obvious issues.
These are things that make me excited about audio. I just wonder why it’s so expensive and less mainstream. I could honestly roll my own in a matter of hours for a 10th of the price. Why don’t market forces drive the price of proper high-end audio gear down?
Also, your estimate seems off to me. I don't know your personal background, but prototyping a good-sounding speaker cabinet takes time beyond a few hours. Even more if you're aiming for mass production. Add to that the DSP + n-channel Amp board, this will be expensive, even when building 10000, AND it is not trivial circuitry to design.
Also, "proper high-end" is a relative term. When researching which speakers to build and where to source chassis, I found a nearby "proper high-end" manufacturer integrating realtime measurements of cone movement into their DSP corrections...
I haven’t looked into this space in a few years and I am of the “budget hi-fi” variety. At a glance, it does look like open source choices exist [0]. My last (finished) DIY audio project was an ODAC+O2 and that has been rock solid for 5 years.
Realtime corrections sound nice at first glance, but I’d be wary of the actual effect. It’s best handled with servo in the analog driver. DSP really shines with room and loudspeaker compensation, especially to linearize phase response (at the cost of delay). Room acoustic issues led me down a rabbit hole that ended with me working on a triple BA IEM with a teensy powered FIR crossover. I gave up on soldering wires to a tiny SM connector. It’s on my revisit list. I’ve been knocking some things out this year, so maybe it’ll be up in another year or two.
If only I could just play with toys instead of working :p
This is the setup they are targeting with this distro. But Raspbian does just fine for the use case. Not sure what stripping it down further accomplishes unless they’re targeting an even smaller platform.
One of the possible reasons for stripping it down is for tighter control over real time performance.
To achieve smooth audio playback, you either need to ensure real time task scheduling with a tiny asynchronous buffer or not-so-real-time scheduling with a larger asynchronous buffer. Otherwise the audio will stutter.
The first approach ensures responsiveness: you click stop and it immediately stops; you press volume up and the volume immediately goes up. The second approach is “easier” but results in a bit of lag between your control input and the output.
With HiFiBerryOS, they may go with the first approach. The fewer things you have in a system, the fewer task scheduling surprises you have, and so you can make the buffer smaller and have better responsiveness.
Now, modern hardware, even something as cheap as the Rpi, has plenty enough processing power to ensure smooth playback like 99.9% of the time (I just pulled that number out of thin air), and most non-audiophile people won’t really notice any lag in the usual media players such as VLC in day-to-day listening, but some audiophiles will swear they can notice it.
It runs on raspbian and is USB powered and Ethernet networked by the close Apple timecapsule NAS / wifi AP. It then provides pulseaudio remote, shairport and mpd services.
I have not witnessed stutter but with buffering comes some kind of lag indeed. I strimmed down the basic install, by removing packages, disabling services and devices, in order to reduce power consumption and have the rpi to work out of the timecapsule USB.
My main takeaways:
1. The system has been stable for years and sounds great. I use it on the weekends mostly.
2. The DAC is great, because the built in audio is really terrible.
3. Spotify over Airport quality is not on par with pulseaudio, nor with playing flac through mpd. I have not found great mobile mpd client. Convenience wins.
4. It is strangely difficult to have pulseaudio running headless.
Do you have any information on what you could strip down from the basic Raspbian to get the best performance / power consumption?
Raspbian seems OK.
Regarding the post-install config, mostly about deactivating stuff to lower the power consumption:
# /boot/config.txt [all] # should disable wifi, bluetooth and hdmi at boot time, lowering power consumption dtoverlay=disable-wifi dtoverlay=disable-bt hdmi_blanking=2 #dtoverlay=vc4-fkms-v3d dtoverlay=hifiberry-dacplus
# builtin audio must be deactivated #dtparam=audio=on Also, HDMI deactivation could live in another place, so add the following to /etc/rc.local :
# Disable HDMI /usr/bin/tvservice -o Then, some packages should be installed:
sudo apt-get update sudo apt-get upgrade
sudo apt-get pulseaudio pulsemixer pamix shairport pulseaudio-module-raop pulseaudio-module-zeroconf cmus mpd mpc
Current software only supports laggy playback, but immediate volume control via hardware volume controls.
So I am not certain that the real-time scheduling is as important here.
> Note that there is no direct support for local music archives (e.g. MP3 files on a NAS) yet.
For me it's major flaw. If I'm going to install such software on my Raspberry I would like to connect 2.5" USB drive and finish the installation and start to use it. But because of unknown to me decisions developers took it is impossible. Secondly putting another RPI unit just to serve content is non effective and increases pollution (one needs to setup another unit, it needs to be bought and powered). Same happens with Volumnio and MoodeAudio (the latter supports USB drives but with strange behaviour mounting it as a root, it's impossible to mount it manually in fstab, which makes it hard to fill its content via smb/cifs)
What I really want is something that can do LMS/Squeezebox and be a Google cast receiver but as far as I'm aware there's no way to DIY a cast receiver as it needs a Google cert.
And 189 USD? Really? You would need two, except if you put the boxes very close together. I also doubt that the HiFi quality would be very good.
I use a very old but very good German made Tube amplifier from my grandfather together with some soviet Speakers (30kg each) that I was lucky to get. https://www.rehifi.se/arkivet/2016/radiotehnika-bs-90
Nothing stopping you from connecting the raspberry with a cable though.
And, yes, if you would like to move the unit outside (e.g. during a party) then wireless is quite convenient. You can mix and match :).
https://github.com/hifiberry/hifiberry-os/blob/master/Change...
Although it does seem to be broken currently
I’m looking at this hifiberryOS as a possible replacement for volumio with a snapcast server for whole house sync’d audio (2). Looks pretty full-featured but I haven’t tried it out yet. Maybe others know of good music software for the pi or have experience with this?
But given that they have other direct-playing applications it is a strange omission.
Which means - you're expected to plug it directly into (or build into) a speaker.
DLNA is pretty much the only open standard in existence to play music stored on one device on a second device, controlled by a third device.
DLNA is few notches below NFS in complexity. It has autodiscovery in the local network and optimized for library organization, control and streaming.
Using NFS instead of DLNA is much like what Russians call "sunset by hand".
https://github.com/hifiberry/hifiberry-os/blob/master/doc/bu...
>The audiophile music player designed and fine-tuned for high quality music playback.
Source: I'm using this on an RPI.