3

New to the community.

I was curious about one specific part from the ALSA driver on Raspberry Pi 4 (or even on other Linux machines using ALSA).

So $ aplay -l lists all current audio devices, but also their 'subdevices':

pi@raspberrypi:~/Music $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 7/7
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

As shown, card 0: device 0: has 7 subdevices.

So what are those 7 'subdevices' and what are their purpose?

1 Answer 1

3

The subdevices are for multiple audio services usage that would be mixed to input/output.

There are also subdevices that are a part of an input or output device. There must be at least 1 subdevice. In the context of output devices, a device having multiple subdevices means the hardware can do mixing, i.e. it can take multiple streams of PCM and mix them to produce a single output. This's called hardware mixing and no, multichannel is a different thing. The no. of streams a device can take depends on the no. of sub devices a device has. Using ALSA API, you can send audio to each of these subdevices simultaneously; the result will be seen in the output audio.

Subdevice in capturing means the card can take and digitize the input of multiple audio streams at once. Usually, subdevice has 'modes' in which they operate. For output subdevices, it means the multichannel mode they operate in. Like 2 or 4 or 6 or 7 etc... which's activates other multichannel ports on the sound card.

http://delogics.blogspot.com/2014/11/understanding-alsa-device-subdevice-and.html

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.