I built a Raspberry Pi4 streamer with an I2S HAT (that supports DSD 512 out) to use with my Denafrips Pontus II DAC and installed Moode OS on it. The set up has been fairly straightforward. I hear a strangely mild white/hissing noise from the speakers when I play DSD files. Clarity and volume also dips to the point it sounds worse than FLAC/MP3 files. A bit more context on what I've tried-
Link to the I2S HAT I'm using: https://www.aliexpress.us/item/3256803457718766.html
- I matched the I2S PIN configuration on the I2S HAT with the Pontus II (PIN setting 5)
- FLAC/MP3 plays amazingly well with so such static/hissing noise.
- Played the DSD track from NAS and locally from the RPi4 SD card. I hear the static in both set up.
- Moode player shows DSD 2.822 MHz as the playback bitrate on its display, but Pontus II only lights up 48Khz and 4X LEDs. DSD LED doesn't light up.
- I've set 'DSD Native' as the playback setting on Moode. I tried 'DSD Over PCM' but there is no sound output at all.
Link to the I2S HAT I'm using: https://www.aliexpress.us/item/3256803457718766.html
I don't know if this helps, but the first time I tried to play DSD using PiCorePlayer on a Raspberry Pi 3B, I got audible noise because it actually decimated DSD to PCM with a rather poor decimation filter. I had to change some setting to solve it.
Mind you, I use DoP. I don't know if the Raspberry Pi's I2S interface can be switched to raw DSD mode and if so, with what software. My DAC is a DIY DAC.
Mind you, I use DoP. I don't know if the Raspberry Pi's I2S interface can be switched to raw DSD mode and if so, with what software. My DAC is a DIY DAC.
RPi I2S hats can only play DSD DoP, but no native!
1. Firts limtation is DSD128, because it is packed as PCM, which in this case means 352.8 kHz. So, for clarification, on I2S pins you can only play DSD64 and DSD128 files! Don't worry about quality because of DoP, it is the exactly same as DSD native.
2. Second limitation is that you can't use the software volume! It will break the "DoP package". So, set in the Moode Player settings Volume to "Hardware", or to 100%, you have to read the documentation of your I2S HAT. As an example, in my case, Allo Katana and PiCorePlayer I had to set it to "Master". Of course, in this situation you will not be able to set the volume also for FLAC/MP3 files.
1. Firts limtation is DSD128, because it is packed as PCM, which in this case means 352.8 kHz. So, for clarification, on I2S pins you can only play DSD64 and DSD128 files! Don't worry about quality because of DoP, it is the exactly same as DSD native.
2. Second limitation is that you can't use the software volume! It will break the "DoP package". So, set in the Moode Player settings Volume to "Hardware", or to 100%, you have to read the documentation of your I2S HAT. As an example, in my case, Allo Katana and PiCorePlayer I had to set it to "Master". Of course, in this situation you will not be able to set the volume also for FLAC/MP3 files.
Hi @MarcelvdG and @Thorp Thanks for your inputs. I changed the driver setting in Moode to 'Pontus' and now the white noise is completely gone, the DSD content plays well with great clarity. For some reason the I2S HAT manual had asked to be set to a different driver which was probably not working well.
A couple more things i noted -
1. The Moode player shows DSD 2.822 MHz on the display. But my DAC's DSD light is still not. It shows 352.8 Khz, previously it used to be 192 Khz. Is this because of the limitation #1 that @Thorp mentioned above? In that case, is the DAC receiving content in DSD format or is RPi/Moode converting DSD into PCM and sending it over?
2. For some reason I'm not able to choose DSD DoP. There is simply no audio coming out when i play the same DSD file. I believe Denafrips DACs support DOP but not sure where things are breaking.
A couple more things i noted -
1. The Moode player shows DSD 2.822 MHz on the display. But my DAC's DSD light is still not. It shows 352.8 Khz, previously it used to be 192 Khz. Is this because of the limitation #1 that @Thorp mentioned above? In that case, is the DAC receiving content in DSD format or is RPi/Moode converting DSD into PCM and sending it over?
2. For some reason I'm not able to choose DSD DoP. There is simply no audio coming out when i play the same DSD file. I believe Denafrips DACs support DOP but not sure where things are breaking.
@Thorp @MarcelvdG this is exactly what is happening in Moode. PCM conversion is happening, likely because I chose Native DSD. Alas I'm not able to set to DoP 🙁 Kinda stuck on next steps.
@Thorp @MarcelvdG This is what is happening when I choose DSD DoP, it looks like the output is in DoP and transmitted as DoP, but for some reason Pontus DAC is not handling it well? Because is no sound at all from the speakers. I believe Pontus support DOP over I2S.
Attachments
You have to choose Hifiberry Digi, because your i2s HAT is based on WM8804 chip. It only supports up to 192kHz, so you can play DSD64 only, which means 176.4 kHz via DoP. It is mandatory to set software volume to 100%. In the case of this Pi HAT there is no hardware digital volume option, because there is no volume control capabilities inside WM8804.
It should be an option to set DoP mode in Moode audio setings, I am not familiar with it. Or maybe you can try to use piCoreplayer, at least for testing purposes.
Please note that you can't play that file, Houese of Cards.dsf, which is DSD128 on this HAT without software re-encoding to PCM! It is a false advertising on Alliexpres. You can read the real specs. here , same board and layout as your board, different PCB colour.
It should be an option to set DoP mode in Moode audio setings, I am not familiar with it. Or maybe you can try to use piCoreplayer, at least for testing purposes.
Please note that you can't play that file, Houese of Cards.dsf, which is DSD128 on this HAT without software re-encoding to PCM! It is a false advertising on Alliexpres. You can read the real specs. here , same board and layout as your board, different PCB colour.
Is the WM8804 in the signal path? WM8804 is an S/PDIF transceiver and if I understood the opening post correctly, varunach uses the LVDS I2S output (HDMI connector).
@Thorp like @MarcelvdG said, I'm using LVDS I2S output not SPDIF. The board you linked seems to be the SPDIF version not I2S. Is the 192Hz limitation that of the chip or is it a limitation of the SPDIF interface?
And good point on choosing Hifiberry Digi driver. Thats what the HAT manufacturer recommended too. But when I use that driver, the PCM conversion still happens and that too of much poorer quality. Atleast choosing Pontus R2R driver eliminated the white noise.
And good point on choosing Hifiberry Digi driver. Thats what the HAT manufacturer recommended too. But when I use that driver, the PCM conversion still happens and that too of much poorer quality. Atleast choosing Pontus R2R driver eliminated the white noise.
I found this on audiophonics site, which is probably what @Thorp intended to link - https://www.audiophonics.fr/en/dac-...-for-raspberry-pi-spdif-i2s-tcxo-p-15821.html
The board looks similar to mine and says supports only DSD64 with a max bit rate of 24/192 khz. But in my screenshot above when it converted DS128 to PCM it was able to hit 24bit/384khz, so I'm a bit confused.
The board looks similar to mine and says supports only DSD64 with a max bit rate of 24/192 khz. But in my screenshot above when it converted DS128 to PCM it was able to hit 24bit/384khz, so I'm a bit confused.
I think that is what Thorp did link to, at least it is what I get when I click on the link.
For conversion from the CMOS I2S signals from the Raspberry Pi to their LVDS equivalents, all you need are LVDS drivers, and those are usually very fast. That is, I would expect the hardware to support much faster rates than specified as long as you only use the LVDS I2S output (HDMI connector). I haven't a clue what the software does, though.
For conversion from the CMOS I2S signals from the Raspberry Pi to their LVDS equivalents, all you need are LVDS drivers, and those are usually very fast. That is, I would expect the hardware to support much faster rates than specified as long as you only use the LVDS I2S output (HDMI connector). I haven't a clue what the software does, though.
Yes, I am confused, too.The board looks similar to mine and says supports only DSD64 with a max bit rate of 24/192 khz. But in my screenshot above when it converted DS128 to PCM it was able to hit 24bit/384khz, so I'm a bit confused.
If your Pi HAT is based on WM8804, it shouldn't work at 384 kHz. What about the other files 44.1/48/96, are they displayed correctly on your DAC display?
I woluld recomend you this experiment: find or transcode a FLAC 24/176.4 music/test file, play it while Pontus driver is still selected, and see what's on your DAC display . Same, while Hifiberry Digi driver is selected.
The main idea is this: from your Pi HAT perspective shouldn't be any difference between a flac 24/176 file and a DSD64 packed as DoP, which is still 24/176. You only have to convince your software to pack that DSD64 file as DoP. In both cases, your Denafrips DAC should receive a 24/176 signal, but in case of DSD64 it should also find the DoP markers in it, IF the original DoP pack made by your software player is still untouched.
But first, I want to check the fisrt paragraph, in order to see if your i2s HAT is in hardware mode, or software mode. Since you didn't receive any driver error - i2C (c, not s) communication error when Pontus driver was used, I suspect that it is in hardware mode. In this last case, you can test other generic drivers, so you can find ones which will let you to select DSD DoP.
@MarcelvdG Hi, Marcel, you are right, I missed that he is on i2s HDMI LVDS output.
@varunach Hi, in this case, is it possible to set it properly (Hifiberry Digi driver) and check if Coax and OPT work?
I don't think that there is something wrong with your DAC, but there might be some connection and/or signal integrity issues. Or maybe something related to MCLK. I don't know if your DAC works without MCLK on HDMI LVDS input. If it requires MCLK, it should arrive from WM8804 output if it is propely set. Anyway, 44.1kHz family PCM files are played and displayed right on your DAC, when Pontus driver selected?
@varunach Hi, in this case, is it possible to set it properly (Hifiberry Digi driver) and check if Coax and OPT work?
I don't think that there is something wrong with your DAC, but there might be some connection and/or signal integrity issues. Or maybe something related to MCLK. I don't know if your DAC works without MCLK on HDMI LVDS input. If it requires MCLK, it should arrive from WM8804 output if it is propely set. Anyway, 44.1kHz family PCM files are played and displayed right on your DAC, when Pontus driver selected?
When you look here
https://www.denafrips.com/specs-pontus
it looks like the DAC only supports DoP over its S/PDIF, Toslink and AES3 inputs, not I2S. If the DAC's I2S input only supports raw DSD (#) and the Raspberry Pi's I2S output only supports DoP, it will never work like this.
(#): Sloppy use of terminology, but phrasing it more accurately would make the post less readable.
https://www.denafrips.com/specs-pontus
it looks like the DAC only supports DoP over its S/PDIF, Toslink and AES3 inputs, not I2S. If the DAC's I2S input only supports raw DSD (#) and the Raspberry Pi's I2S output only supports DoP, it will never work like this.
(#): Sloppy use of terminology, but phrasing it more accurately would make the post less readable.
Yes, I just read that, too.
Also, even if doesn't matter now, Pontus doesn't require MCLK+/- on HDMI LVDS input, as in its user manual.
LE: I am still wondering why it doesn't play DoP on I2S input. It seems that it found the DoP markers, since it muted the signal, instead of playing it as PCM.
Also, even if doesn't matter now, Pontus doesn't require MCLK+/- on HDMI LVDS input, as in its user manual.
LE: I am still wondering why it doesn't play DoP on I2S input. It seems that it found the DoP markers, since it muted the signal, instead of playing it as PCM.
Last edited:
When you play DoP as PCM, you get an ultrasonic tone at half the sample rate and soft noise. Could that be mistaken for silence?
IMO using the jittery RPi I2S for that DAC is a very compromise solution, if that DAC has proper async UAC2 support.
DoP conversion must be provided by the player, the RPi I2S drivers do not change the data stream to convert DSD to DoP.
DoP conversion must be provided by the player, the RPi I2S drivers do not change the data stream to convert DSD to DoP.
No mistaken, of course!When you play DoP as PCM, you get an ultrasonic tone at half the sample rate and soft noise. Could that be mistaken for silence?
I just wondering: if it figures out that it is a DSD packed signal, why it didn't unpacked it, to recover the original DSD? I ment, if it already knows what signal it got, why should it mute the singnal, instead of recover and play the DSD L/R streams? (as DSD, not as PCM).
My wondering has a reason!
In the Pontus DAC specs they wrote:
"
DSD | DSD64 / 2.8224MHz (DoP) on Coax/AES/Opt Input |
DSD1024 / 45.1584MHz * On USB & I²S Input Only |
Maybe "(DoP)" text is only a redundant/retorical information, and it doesn't necessarily means that only Coax/AES/Opt can play DoP. Of course, you can't have DSD raw on Coax or Opt, but it is not so clear if USB/I2S inputs support DoP or not.
I agree with @phofman, the Denafrips Pontus is worthy of something better than this rather compromised solution.
My own starting point for a network streaming solution would be a Beaglebone Black equipped with an isolator/reclocker cape - it would be simple to pass the output of that to an HDMI LVDS board for transmission to the Pontus. Would remove DoP too.
My own starting point for a network streaming solution would be a Beaglebone Black equipped with an isolator/reclocker cape - it would be simple to pass the output of that to an HDMI LVDS board for transmission to the Pontus. Would remove DoP too.
Last edited:
- Home
- Source & Line
- Digital Line Level
- I2S DSD Playback issue on RPi4