[alsa-devel] Workaround for "[AO_ALSA] Unable to set buffer time near: Invalid argument" error on HDMI 5.1 output
thilo at tjps.eu
Sun Feb 9 22:24:52 CET 2014
the purpose of this message is just to document my workaround solution I found
to a bug (probably in ALSA) on a stable Debian system. This took me the better
of a fine sunday and I'm posting this to spare anyone who might run into a
similar problem the same trouble. And I'm posting this so the alsa devs may
look into this (if it's not already fixed in recent alsa versions).
Using mplayer, I recently tried outputting a 6 channel test wave file to the
HDMI output on my Acer Aspire with a HDA Intel PCH card.
2 channels work fine, but trying to output 6 channels results in:
$ mplayer test.wav -ao alsa:device=hdmi -channels 6
[AO_ALSA] Unable to set buffer time near: Invalid argument
Failed to initialize audio driver 'alsa:device=hdmi'
Obviously, this code from mplayer's ao_alsa.c fails:
unsigned int alsa_buffer_time = 500000; /* 0.5 s */
if ((err = snd_pcm_hw_params_set_buffer_time_near(alsa_handler, \
alsa_hwparams, &alsa_buffer_time, NULL)) < 0)
A similar issue seems to have been discussed in this thread on alsa-devel:
And as a workaround it is suggested there to raise some memory preallocation
$ cat /proc/asound/card0/pcm3p/sub0/prealloc
$ echo 128 > /proc/asound/card0/pcm3p/sub0/prealloc
this indeed fixes the problem and mplayer plays fine. Now here comes the curious
part. _Lowering_ the parameter like this:
$ echo 63 > /proc/asound/card0/pcm3p/sub0/prealloc
makes the problem go away as well. Strange.
For followup replies, please CC me, as I'm subscribed to neither mailing
To ALSA devs: I would be willing to help debug this issue if you'd give a few
instructions (where to put a few printk messages in the module, etc)
More information about the Alsa-devel