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


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 ?



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