RBPI digital audio hardware limitations

There is (are) no question(s) here,

Our Zynthian has 2 inputs and 2 outputs. (or that said, one stereo in and one stereo out).

Thanks to the high ends components used in ZynADAC, it seems that you can plug any kind of source (electric gutiar, balanced mikes like Shure SM58, or some electronic gear) in and it just “sounds good”. This is really good !

to be continued


There is (are) no question(s) here, I just want to share some thoughts and maybe some good readings ! I will surely update this …

Our Zynthian has 2 inputs and 2 outputs. (or, one stereoline in and one stereo line out).

Thanks to the high ends components used in ZynADAC, it seems that you can plug any kind of source in (electric gutiar, balanced mikes like Shure SM58, or some electronic gear- synth, rythm box- ) and it just “sounds good”. This is really good !

But 1 stereo in and 1 out is not enough for me: For example it would be great to have a second output (one for the main global mix + one other specific mix on the headphone output => eg: for testing sounds/effects while stepseq is running on main output …). Yeah of course this need some software developments. But regarding the new ZinMixer, I’m really optimistic in fact :slight_smile:

Because, even before having such an “extra feature”, it has to be hardware compatible !

… And this seems so complicated.

Firstly, the hardware:

“Point trop n’en faut”

  • As is, the RBPI can only operate on one Audio Digital interface (one stereo in and one stereo out) under regular I2S mode. That’s the RBPI limitation and the way Zynthian works right now.

  • They are other Single Board Computer (like the nanoPi M4 based on Rk3399 SOC chip) that are exposing more more than one I2S lines. With those boards, multichannel audio is not such a nightmare: you can assign a simple component (saying a pcm5102 DAC) to each single Digital Audio line.

  • Audio Chips (A/D D/A Codecs) may have multiple Digital Audio Data Interfaces (DAI) or just one. AD193x codec series (4 in ADC, 8 outs DAC, see page 9 and 10) has muliple DAI while pcm1863 (4 ADC) has just one DAI (on pin 18 see page 8)

  • some Audio Chips need an external clock reference , but some not, knowing that RBPI, on its own isn’t able to provide a nice and stable clock for operating third party audio devices. And in most of the case two different clock references are needed if you want to achieve 44.1 and 48 hz sampling rates (eg: you need a 12MHz or a 12.288MHz crystal for the wm8731 codec depending on the sampling rate).

  • Oh, here are the ADC/DAC/CODEC chips supported by linux (low level driver)

The software part:

We haven’t finished yet with the hardware stuff that we’re jumping into the software stuff, … really !

Yeah! Because they are both strongly intricated.

EG: Following links are for the audio injector octo, 6 ins 8 outs, built upon a Cirrus Logic CS42448 chip, the only one I know to be multi channel capable with the RBPI:

To achieve this TDM mode (Link to Cirrus Logic TDM documentation) is used.
The way it is implemented in the octo driver seems not to follow best practices (link to RBPI forum) .

In resume, while it’s should be possible to multiplex 2 or 4 stereo audio signals in one DAI using TDM, and despite an intensive search, I didn’t find any working implementation in the RBPI world. AudioInjector Octo excepted ?

I’ve started this because I’ve found these excellent and recent ressources:

  • where you realize that some hardware platform are easiest to manage then RBPI


  • the same Alexandre Belloni from Bootlin has an 50 mn talk about this:
  • the slides presented in the talk are here.

Very interesting progresses here


Nice try! Let’s see where the rabbit’s hole ends up!

This is a novel idea, running the I2S bus at x4 then demultiplexing. I will watch this with interest.

1 Like

Looks like the second installment is here


What is juce ?

It’s a multiplatform audio development framework. It’s very popular among audio-plugin developers, but the support for LV2 is not part of the core yet and you need to use a wrapper developed by falkTX. If you know about Roli, they are the people behind this framework :wink:

Regarding licensing, you can use GPL3 or buy a commercial license if you don’t want to release your source code.



Thank you mate.

Did someone now something about implementing ADAT protocoll?
The Audio DAC fpr raspi are supporting 192kbit sampling rate. So there should be enough bandwidth for 8 44.1kHz Channels?
There is also a toslink hifiberry AHT available.

8 outputs eh? so… Kick, snare, Hi hat, Ride , Low/Mid/Hi toms and Clap?