Nice to see 8 channels hat dac!
But why only pi5 is supported?
Only the Pi5 offers 8 audio channels. Older Pi's just support stereo audio.
Does this mean that the DAC8X with HiFiBerry OS will support multichannel flac's? Or is playback to 4 zones? Are you able to add a DSP to this board?
No multichannel support in HBOS if planned for now. It might come at some point in the future, but probably not soon.
We do not plan multi-zone support in HiFiBerryOS at all as this would complicate things a lot.
No DSP add-on is supported as this is also only a 2-channel add-on.
Hello everyone,
I'm diving into the details of the DAC8X, particularly its integration with the Pi5 that supports 8 audio channels. I'm curious if it's possible to configure the DAC8X to function as a 4-channel DAC where each channel operates in mono and features an increased sampling rate.
I'm looking to optimize the audio quality through a more customized setup. If anyone has experience with tweaking the DAC configurations or knows of any software or firmware adjustments that could help achieve this, I would greatly appreciate your advice.
Thank you in advance for your insights!
Best,
Matthew
What do you mean by "features an increased sample rate"? You can split a card into multiple "virtual" cards with ALSA maps for middleware like PulseAudio.
I assume that although the PCM5102a supports 32 bits/384 kHz, these values might have been scaled down to fit within the maximum bandwidth of the i2s bus on a Raspberry Pi. Therefore, my question revolves around whether it's feasible to configure the system to achieve 32 bits/384 kHz but only on 4 channels.
This is a limitation of the clock generator. No 384kHz are supported.
384khz will be supported, though, by the RPi5....hopefully in the next kernel update:
-Jim
Hi,
Regarding this comment above…. “No multichannel support in HBOS if planned for now. It might come at some point in the future, but probably not soon.
We do not plan multi-zone support in HiFiBerryOS at all as this would complicate things a lot. “
But anyone can use an existing library to develop their own multi-channel decoder and multi-zone support application, couldn’t they? I understand this isn’t trivial.
I’d be interested in joining the beta program. When might we see more stock of the DAC8X available?
Cheers, Geoff.
> But anyone can use an existing library to develop their own multi-channel decoder and multi-zone support application, couldn’t they? I understand this isn’t trivial.
Sure. You don't even have to develop your own. There is already software available that has multichannel support.
The Beta test i finished, general availability of the DAC8x will start soon.
Great, thanks. I’ve been after a good compact 8 channel solution for a while. This should fit the bill. :)
Pardon my ignorance, but is there a tutorial available on basic configuration for the DAC8x. I've followed what I've configured in the past, flashing an SD card with the latest 64bit OS using a Pi5. But, I am not able to get sound out of more than 2 channels.
Thoughts?
Hi there!
No worries, happy to help! Yes, you can use CamillaDSP to split a stereo signal into multiple channels. Below is a basic tutorial to get you started:
First, make sure you have CamillaDSP installed on your RPi5. If you haven’t installed it yet, follow the steps in Part 2 of the tutorial you were following. Here’s a quick summary:
bash:
mkdir ~/camilladsp ~/camilladsp/coeffs ~/camilladsp/configs
sudo apt install alsa-utils
wget https://github.com/HEnquist/camilladsp/releases/download/v2.0.3/camilladsp-linux-aarch64.tar.gz -P ~/camilladsp/
sudo tar -xvf ~/camilladsp/camilladsp-linux-aarch64.tar.gz -C /usr/local/bin/
Create a new configuration file for your DAC8x. This file will define how the stereo signal is split into multiple channels.
nano ~/camilladsp/configs/dac8x_split.yml
devices:
capture:
type: "Alsa"
channels: 2
device: "hw:0"
format: "S24"
samplerate: 48000
playback:
type: "Alsa"
channels: 8
device: "hw:1"
format: "S24"
samplerate: 48000
pipeline:
channels:
- channel: 0
sources:
- channel: 0
- channel: 1
sources:
- channel: 1
- channel: 2
sources:
- channel: 0
- channel: 3
sources:
- channel: 1
- channel: 4
sources:
- channel: 0
- channel: 5
sources:
- channel: 1
- channel: 6
sources:
- channel: 0
- channel: 7
sources:
- channel: 1
In this configuration:
capture
section sets up the input (stereo signal).playback
section sets up the output (8 channels).pipeline
section maps the stereo channels to the 8 output channels.Run CamillaDSP with your new configuration file:
camilladsp -g-40 -p 1234 ~/camilladsp/configs/dac8x_split.yml -v
Once CamillaDSP is running, verify that the stereo signal is being split into the 8 channels. You should see the output in the terminal with details about the audio processing.
aplay -
l
device
fields in the configuration file (hw:0
and hw:1
) to match your actual device IDs.If you have any further questions or run into issues, feel free to ask!
If anyone is interested, you can use CamillaDSP to tweak the DAC8x for a four-channel balanced output 😄
> But, I am not able to get sound out of more than 2 channels. Thoughts?
You need to use an application that does palyback on 8 channels. If the DAC8x is listed in aplay -l, the configuration on OS level is done.
What exactly did you do to test this?
Will the DAC8x be able to process 8 channels of 384khz audio when the kernel is updated?
-Jim
@James Wehrfritz Based on your previous comment regarding the changes in i2s, I managed to recompile the kernel with the overlay for DAC8x. Unfortunately, even though the DAC plays at a higher sample rate 352,8kHz and 384kHz, it is not stable. It plays for a few seconds and then hangs. I am not a specialist, but it seems that either the DAC8x drivers need to be rewritten in a different way or this is a limitation of the Raspberry Pi bus.
Matthew thanks for testing!!! Hopefully HiFiBerry team can chime in on the incorporation of this functionality.
-Jim
We can't do anything about this. This has to be addressed in the underlying data transfer layers of the hardware drivers. The hardware and drivers have been tested up to 192kHz.
Hi, I am testing the DAC8x and it runs well as output from camilladsp. I am trying to fit the RPi5 DAC8X combination in a 1U case (40mm height). And this shows the "weakness" of the PCB layout. Since the PI5 requires active cooling, a larger distance is necessary. This means that the GPIOs can no longer be used with standard plugs. Unfortunately, the TRS outputs are also on the wrong side (USB C, HDMI) instead of the LAN USB side.
Can there be a new layout without trs and 90° gpios (horizontal)? Which is then better for case installation?
Hi all, I have a question about configuring the DAC 8X.
I’m planning to set up 4 snapclients on a Pi 5 . Each snapclient will stream a pair of stereo channels.
How do I configure RPi OS audio to route the snapclient stream to the DAC? Would this be accomplished by ALSA config?
(I’ve also asked this question on the snapcast forum.)
Thanks in advance,
Geoff.
.
Yes, you need to create a custom ALSA configuration with 4 virtual sound cards mapping to one 8-channel card. Here's what ChatGPT says about it:
pcm.multi {
type multi;
slaves.a.pcm "hw:0,0";
slaves.a.channels 2;
slaves.b.pcm "hw:0,0";
slaves.b.channels 2;
slaves.c.pcm "hw:0,0";
slaves.c.channels 2;
slaves.d.pcm "hw:0,0";
slaves.d.channels 2;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave b;
bindings.2.channel 0;
bindings.3.slave b;
bindings.3.channel 1;
bindings.4.slave c;
bindings.4.channel 0;
bindings.5.slave c;
bindings.5.channel 1;
bindings.6.slave d;
bindings.6.channel 0;
bindings.7.slave d;
bindings.7.channel 1;
}
pcm.virtual0 {
type plug;
slave.pcm "multi";
slave.channels 2;
ttable.0.0 1;
ttable.1.1 1;
}
pcm.virtual1 {
type plug;
slave.pcm "multi";
slave.channels 2;
ttable.2.2 1;
ttable.3.3 1;
}
pcm.virtual2 {
type plug;
slave.pcm "multi";
slave.channels 2;
ttable.4.4 1;
ttable.5.5 1;
}
pcm.virtual3 {
type plug;
slave.pcm "multi";
slave.channels 2;
ttable.6.6 1;
ttable.7.7 1;
}
Please note that the configuration has not been tested! You might need to consolt the ALSA documentation and experiment a bit.
aplay -D virtual0 somefile.wav
aplay -D virtual1 somefile.wav
aplay -D virtual2 somefile.wav
aplay -D virtual3 somefile.wav
One thing you need to handle in snapclient is resampling. You can't run multiple virtual devices with different sample rates and/or sample formats. You need take make sure, they all use the same. When you're music is usually CD or MP3, the best would be to set fixed 44.1kHz/16bit
Thanks for the ALSA config and also the tip on sampling.
I do have some content with higher resolution than 44.1 / 16 so I’ll check the doco on re-sampling.
Cheers, Geoff.
Hi all,
(Second attempt at posting; I can't post using Safari now for some reason).
I see the documentation for the DAC8X states that it only works on Pi 5. This seems related to earlier Pi models not being able to handle multi-channel audio.
However, my goal is 4 x stereo streams, not actually multi-channel.
A question... Can the DAC8X on a Pi 4B produce 4 stereo outputs? I understand the need for alsa virtual devices (thanks for the earlier advice) . All streams have the same format and resolution. I use Mopidy and Snapcast on Pi 4B's; this is all working well. I'm trying to avoid a fan and I already have a Pi 4B lying around.
Thanks in advance, Geoff.
> Can the DAC8X on a Pi 4B produce 4 stereo outputs?
no, you need a Pi5
Ah, 4 I2S channels on the Pi 5 but only one on previous Pi models.
My DAC 8X arrived and after a bit of time wrangling ALSA it works very nicely. Sound quality is noticeably better than the 4 Sonos Connect units it is replacing.
Just one question… alsamixer reports that the sound card does not have volume (or any other) control. Is there a volume control?
Not a big deal if not as I can control volume other ways if necessary.
That's correct. There is no volume control on the DAC8x.
No worries, thanks.