Is it possible to build a multi-channel DAC for RPi

I understand that Pi only has one data in for I2S? But I saw that Audio Injector Octo sound card could provide 6-in and 8 out. I wonder how it is implemented? Does anyone has any idea about this?

There’s a limitation in the I²S peripheral of the Raspberry Pi of only stereo streams, the Octo uses some FPGA in between to workaround that somehow.

Thanks Giedrius.

I understand that rpi only has one data input for I2S. But I just wonder if it could work in TDM mode so that an ADC like PCM186x from TI could be used. I haven’t found any rpi projects based on similar ADCs. My currently project needs 8 channel input and I am using NXP’s imx 8MM which supports 8 channels for a single SAI. But that’s too expensive for the final product and it would be much better if we can build the system based on rpi.

BTW, how does Octo manage to combine all the inputs and transfer them to rpi? Originally I thought it is done through USB but it’s still using the 40pin head of rpi.

I have found the driver code for Octo and it turns out that Octo is using CS42448 and the DAI is configured to work in DSP mode which means it is using TDM to share the single data in of the PCM port.

// set codec DAI configuration
int ret = snd_soc_dai_set_fmt(rtd->codec_dai,
SND_SOC_DAIFMT_CBS_CFS|SND_SOC_DAIFMT_DSP_A|
SND_SOC_DAIFMT_NB_NF);
if (ret < 0)
return ret;

// set cpu DAI configuration
ret = snd_soc_dai_set_fmt(rtd->cpu_dai,
		SND_SOC_DAIFMT_CBM_CFM|SND_SOC_DAIFMT_I2S|
		SND_SOC_DAIFMT_NB_NF);