[alsa-devel] Getting pcm_usb_stream plugin to know its limits.

Michaël Cadilhac michael at cadilhac.name
Wed Dec 30 18:48:22 CET 2009

Hi there everyone,

I've been fighting for a few hours with a USB sound device (namely,
Tascam US-144), to get it to work with Audacity (this not being the
relevant part).

At first, Audacity died in a painful segfault, without any explanation,
when associated with the usb_stream plugin[1]. 

Audacity uses PortAudio, which checks for a few possible parameters of
audio rate to find the list of accepted ones.  It tries to set a
parameter (snd_pcm_hw_params), and if it fails, closes the device, and
continues its way.

Suppose the `prepare` act of the usb_stream is aborted because of wrong
parameters.  Then, PortAudio tries to close the device, by calling
snd_pcm_close.  This in turn calls snd_pcm_drop, which calls the fast_op
drop (that of ioplug), which is snd_pcm_ioplug_drop, which then calls
the *stop* callback of the usb_stream (snd_pcm_us_stop).  The stream not
being properly initialized, us->uus->write_area is nil, and the memset

This is the modification I did for that purpose :

-------------- next part --------------
A non-text attachment was scrubbed...
Name: memset.patch
Type: text/x-patch
Size: 392 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20091230/3d58a7a3/attachment.patch 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: period_size.patch
Type: text/x-patch
Size: 511 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20091230/3d58a7a3/attachment-0001.patch 
-------------- next part --------------

Well, that's all folks.  Happy new year to everyone.

[1]  Configured as
pcm.!usb_stream {
	type usb_stream
	card "1"
which works with a fine-tuned aplay.

[2]  linux/sound/usb/usx2y/us122l.c

Michaël `Micha' Cadilhac (LITQ, U. de Montréal) -- http://michael.cadilhac.name
	|| La culture, c'est comme l'amour.
	||  Faut y aller à petits coups au début pour bien en jouir plus tard.
	||         -- Pierre Desproges

More information about the Alsa-devel mailing list