[alsa-devel] Plug plugin not working on Raspberry Pi.

Krzysztof Adamski k at japko.eu
Fri Jul 13 09:38:14 CEST 2012


Hi,
for a couple of days I'm trying to figure out problems with ALSA on 
Raspberry Pi. It turned out that for some reason, plug plugin is not 
working as expected. Id does work correctly when I'm using PCM 
configuration that can be handled directly by HW but any other 
configuration (like unsuported format, more channes etc) fails with 
"Invalid argument" on snd_pcm_hw_params.

It's not my code that fails because of this by it's both mplayer and 
VLC. Both snd_pcm_hw_params_set_format and snd_pcm_hw_params_test_format 
(and other similar functions) does not return error. Only when 
snd_pcm_hw_params is run, there is one.

I'm using Debian Wheezy, with ALSA 1.0.25 with all default ALSA 
configuration. ALSA drivers for RPi are not in mainline kernel but they 
can be viewed here:
https://github.com/raspberrypi/linux/tree/rpi-patches/sound/arm (it's 
bcm2835). Card capabilities seems to be described correctly:

static struct snd_pcm_hardware snd_bcm2835_playback_hw = {
.info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER),
.formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE,
.rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000,
.rate_min = 8000,
.rate_max = 48000,
.channels_min = 1,
.channels_max = 2,
.buffer_bytes_max = (4 * 8 - 1) * 1024, /* Needs to be less than 
audioplay buffer size */
.period_bytes_min = 1 * 1024,
.period_bytes_max = (4 * 8 - 1) * 1024,
.periods_min = 1,
.periods_max = 4 * 8 - 1,
};

So, I would like someone to help me investigate if it's a userspace or 
driver BUG and how to fix this. I will be happy to provide any 
information that is needed for debug, test patches, recompile with some 
debugin enabled etc.


More information about the Alsa-devel mailing list