New audio board: Audio Injector Ultra sound card for the Raspberry Pi

Is input just on Pi I2S soundcard really neccessary? Maybe USB soundcard with line or mic inputs are enough? Sampling and processing sample adds some latency anyway, ADC on I2S bus doesn’t help with this. USB soundcards with inputs are common and afaik sound data exchange with USB card is standardized.

I don’t buy Audioinjector BC of input.
The zero and ultra are giving you better design options because you can place the jacks better.
It’s cheaper and I like Matt :slight_smile:

I’m finishing a Zynthian kit now, and also have the Audioinjector Ultra.

I believe that this 40 pin header will do the job to connect the Pi and the sound card:

Pololu part no. 2748, details here:

For Australian builders, this part is available from Little Bird Electronics and Core Electronics.

The same in my Zynthie :wink:

I added Ultra Support in the webconf.
But you need to call sudo rpi-update to get the new overlay.
@jofemodo will add this soon. But in case, you want to play the next days.

I fried my card, because I had issues to apply the 40pin.
So I am curious, if somebody made it work before I order a new one.

Ok, the price segment for the ultra changed.
Before I buy a new one, somebody else should really make it work first.

Ok, i made it work.
The Ultra runs with 48k, so that the jack options needed to be changed.
I made it transparent in the webconf.
The two alsa sliders DAC and PGA are visible.
I am not quite sure how to separate the level of playback and capture though.
But I am in contact with Matt to solve this issue.

I am going to avoid the Audioinjector Ultra 2 until some things changed.
This might be a new driver or I give it another try when Raspi 4 is out.

Those are the main issues:

  1. alsactl store
    alsactl: get_control:256: Cannot read control ‘2,0,0,C Data Buffer,0’: Input/output error
    That makes it impossible to save the volume. As it is resetting to 100 every boot, which is too loud. I used a script which sets it to 80% at boot time.

  2. The volume for the playback and the capture is called “DAC” in both cases and “amixer controls” doesn’t show two different controls either so that I could use numid=xy to handle it. This means, that both output volume and input volume are the same. When alsamixer is used, they are locked together as well.
    If Matt would change the driver, so that there are two mixers, we could set two different volume levels.

  3. As I have to use a different jack setting, Pianoteq is not as nice as with other cards. And I get more xruns either. That’s why I said, I would give it another try when there is a Raspi 4.

But as of know, I am going to use the Zero again.

1 Like

Yes indeed.
The ultra uses the linux/sound/soc/codecs/cs4265.c driver. This driver is a little bit of a mess, I have already made many fixes to it.

To address your points:

  1. Yes this is a problem - it is to do with buggy code in the linux driver. I will look into it when I get more time.
  2. I believe the ADC is called PGA in the capture screen of alsamixer. Again the “DAC” in the alsamixer capture section is due to buggy linux codec code. So to sum up, use DAC in the playback section of alsamixer and PGA (for ADC) in the capture section of alsamixer.
  3. It wasn’t clear whether there are more xruns or not - which jack settings are being used ?


1 Like

HI @flatmax!

Welcome to Zynthian’s community! Nice to see you here. We are a few AudioInjector owners in our community.
Your help will be really appreciated for having AI cards fully integrated in zynthian and working 100%. Your cards are very interesting stuff for building synthesizers :wink:


Hi Matt, nice to see you here.
Please let us know, when you fixed the driver.
I will test that and the DAC/PGA issue in that case.

-P 70 -t 2000 -s -d alsa -d hw:0 -r 48000 -p 256 -n 2 -X raw

Those are xruns when Pianoteq is used. The Hifiberry seems to use less processing power.
When I play the same sound with Hifiberry, the performance stays green at approx. 50% most of the time with peaks at 80%. (at 44.1k)
But with AudioInjector Ultra and Zero as well, I am constantly at 60/70% with little peaks up to 100%, so that there are occasional xruns.

Thanks a lot,

Sweet !

I am wondering why two i2s based cards would have such different cpu usage ?

Both use the same DMA right? Their Alsa soc pcm processes should be very similar … hmmm

I have had a thought. Maruks, can you tell me, does the audio injector open jack in full duplex mode (with input and output) ? Do the other sound cards open jack in half duplex output only mode ?

Hm. Yes the hifiberry doesn’t have Audio In.
How can I disable it so that the Audioinjector Zero is saving resources?
Is muting enough?
The comparison between hifiberry and ultra isn’t fair because ultra is set to 48k.

Just noting that upstream Linux is in the process of being patched for the issue 1 above.
This will make alsactl store work as expected.

Turns out it was a cs4265 linux codec driver bug.


Thanks for the update, @flatmax!

Can I expect the change already when I do an rpi-update?

1 Like

I just tried, but an rpi-update didn’t solve it. Do I have to wait?
Are you informing us, when we can test again?


I just tested the Ultra with our first running buster image on a Raspi4…no :frowning: jack hasn’t been started.

Ok, I don’t know, what went wrong first. Now it works.
The alsastore issue is solved.
The pianoteq index is 17 and the first time in my life I don’t get any xruns…running raspi4…

So now I can officially say, that zynthian supports Audio Injector Ultra as well :slight_smile: