On Sat, 30 Aug 2008, Lennart Poettering opined: > The thing is that we try to enable SND_PCM_ACCESS_MMAP_INTERLEAVED and > when that fails SND_PCM_ACCESS_RW_INTERLEAVED. Which apparently > suceeded on your setup, since you got past that initialization. You > subsequently hit an assert when we checked whether the sample layout > actually matches what SND_PCM_ACCESS_xxx_INTERLEAVED promises. > > It's totally fine to support only NONINTERLEAVED channel setups, but > then the alsa driver needs to refuse enabling INTERLEAVED mode, > i.e. snd_pcm_hw_params_set_access() must fail -- which it doesn't. > > The relevant code in PA you find here: > > http://pulseaudio.org/browser/src/modules/alsa-util.c#L324 OK, I've downloaded the latest PulseAudio source code, upgraded ALSA to the latest (Rawhide) bleeding-edge Fedora version. There are some differences in the trace but it still fails. 1) I suspect there may be a problem with the code: === begin === if (_use_mmap) { if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_MMAP_INTERLEAVED)) < 0) { /* mmap() didn't work, fall back to interleaved */ if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) goto finish; _use_mmap = FALSE; } } else if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) goto finish; === end === Are the two "< 0" comparisons correct? BTW: I put some debug displays in the code and the value of "ret" after both the SND_PCM_ACCESS_MMAP_INTERLEAVED and SND_PCM_ACCESS_RW_INTERLEAVED calls is -22. 2) There is no file in the PulseAudio source package that has the string SNDRV_PCM_INFO_NONINTERLEAVED or even just the word NONINTERLEAVED! Therefore, does PulseAudio support devices that use the NONINTERLEAVED mode? Kevin