Recording works with arecord but not with GStreamer alsasrc

Thanks, The above control looks good except that I2S would be configured for 4 channels based on -c 4 which needs a override control too. Please use the below mixer

amixer -c 1 sset “I2S1 Channels” “8”

This is not what I am trying to do.

  • I2S1 has 8 channels, not 4
  • I want to split the 8 channels into 2x4 channels using the ADX.

In the previous commands, I route the ADX outputs to the ADMAIFs:

amixer -c 1 sset “ADMAIF1 Mux” “ADX1-1”
amixer -c 1 sset “ADMAIF2 Mux” “ADX1-2”

My understanding is that this connects ADMAIF1 to output 1 of ADX1, and ADMAIF2 to output 2 of ADX2

When I specify hw:1,0 in arecord, I am telling it to get the data from ADMAIF1, right? So it should be getting the data from ADX1-1. Similarly, when I specify hw:1,1 in arecord, I am telling it to get the data from ADMAIF2, which is connected to output 2 of the ADX (ADX1-2)

The other commands route the 8 channels of I2S1 to the input of ADX1, and then configure ADX to have two 4-channel outputs.

The following lines connect the 8 channels from I2S1 to the ADX, and instruct it to expect 8 channels on the input, and to produce two 4-channel outputs:

amixer -c 1 sset “ADX1 Mux” “I2S1”
amixer -c 1 sset “ADX1 Input Channels” “8”
amixer -c 1 sset “ADX1 Output1 Channels” “4”
amixer -c 1 sset “ADX1 Output2 Channels” “4”
amixer -c 1 sset “ADX1 Output3 Channels” “0”
amixer -c 1 sset “ADX1 Output4 Channels” “0”

The other Byte Map commands above tell the ADX where to route each input byte (i.e. which part of the output)

I understood your requirement. Please note as I2S1 is also connected in the capture path, the channels and I2S clock calculation would be for 4 channels (i.e not 8 channels as you expects as this is I2S master). So you need to override I2S to operate for 8 channel instead of -c 4 in arecord option. Please include this extra controls and let me know the result

Apologies, I mis-read your message. I will give this a try later this afternoon.

Thank you.

Update: I re-ran the sequence above and now I get nothing (0s all around). I guess I must have somehow made something work through various experiments that led up to the sequence above, but I can’t get it to work anymore at all.

I will revisit this more systematically when I have the chance.
It would be nice if the documentation had a capture path example for this. I’m not sure if the sequencing is correct, but I don’t have any good examples for dumuxing the capture path to confirm.