Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Problem: I2S driver keeping clocks alive
#1
Hello,

My first post here, I would like first to thank and congratulate Tim and all the developers working on Moode, really a great and very complete music player, I like it very much.

I designed my own DAC with asynchronous FIFO (UGSD) and completing the debug at the moment.
I found out that on pausing a track on Moode / RPI, the frame clock stops immediately as well as the data (even sometimes not completing the current word) and the bit clock stops few ms later.
This makes difficult the detection of data = 0 at the input for a certain number of frame clock period which is one condition that control the state machine resetting my fifo inside a fpga.

So to make it short and before starting to implement more complex logic to detect that clocks has been stopped, I would like to know if there is an i2s driver in all the list of dac supported that maintains lrclk and bclk when a track is paused. I tried few drivers randomly but none of were keeping the clocks alive.

When I used my previous configuration (C2 / volumio) I never met this problem as the C2 with a dedicated I2S interface maintains the clocks on and just put the data at 0 on track pauses.

Thanks.
Reply
#2
@Alex_twn

By "C2" I suppose you mean an Odroid C2?

As this is really a question about Raspbian and the RPi firmware, it would seem more sensible to ask on the Raspberry Pi forum.

And props for designing your own DAC!

Regards,
Kent
Reply
#3
Thanks Kent.
Yes by C2 I was referring to the Odroid C2.
Actually I found out that it is a well known problem that can be fixed with pulseaudio but reading quickly it seems to add a layer of mixing to keep the I2S driver always on.
I would prefer not doing soft mixing. So I'll implement some logic to detect when the clock has been disabled.

By the way, I am still wondering what is the difference between all the selectable I2S DAC in moode.
I2S is standard so I am not sure to understand why all those choices are available.
Are there for example some additional gpio enabled on the 40pins connector to control specific DAC?

Regards,
Alex.
Reply
#4
Pulseaudio config will cause breakage in moOde. Good luck.

I2C lines are used by drivers to enable useful chip capabilities like high res hardware volume, digital filters, DoP, selectable inputs etc.

Maybe study some of the codecs for I2S audio devices on Raspberry Pi Git repo to gain an understanding of the differences between generic I2S drivers like hifiberry-dac and rpi-dac and those which enable advanced chip capabilities.
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#5
Thanks Tim.
I am not interested to add pulseaudio here.
I will rather implement a HW mechanism with some simple logic looking at when lrclk get disabled and when this is happening I will adjust the control of my FIFO accordingly.
Reply


Forum Jump: