[LAU] UA-101

Clemens Ladisch clemens at ladisch.de
Wed Feb 24 07:36:23 EST 2010


Colin Fletcher wrote:
> Colin Fletcher wrote:
> > Capture is very noisy: there's a white noise-like signal superimposed on 
> > the captured sound, and sounding like its amplitude is modulated by the 
> > captured signal.
> 
> Looking at the waveforms, it appears that sections 4 or 5 samples long
> are "shuffled" out of order in the captured signal.

USB high speed uses 8000 frames per second, so one packet contains
about 5.5 (44100/8000) samples.  It's obvious that the USB packets are
exchanged somehow.

Please try the patch below, or download the new ua101.c from
<http://www.alsa-project.org/~clemens/ua101.c>.  This will log the
sequence in which the first 50 USB packets are received, but it won't
fix anything.


Since the kernel crash happens when resetting the capture interface,
there is a possibilty that these bugs are related, probably due to some
corruption of the EHCI data structures.  Trying a 2.6.33 kernel might
help, although I don't know of any change that could affect this.


Regards,
Clemens


--- alsa-kernel/sound/usb/ua101.c.orig	Tue Feb 16 21:47:56 2010
+++ alsa-kernel/sound/usb/ua101.c	Wed Feb 24 13:28:57 2010
@@ -367,6 +367,14 @@
 	unsigned int frames, write_ptr;
 	bool do_period_elapsed;
 	int err;
+	static int ccc = 0;
+
+	if (ccc < 50) {
+		ccc++;
+		for (err = 0; err < stream->queue_length; ++err)
+			if (urb == &stream->urbs[err]->urb)
+				printk(KERN_DEBUG "completed URB %d\n", err);
+	}
 
 	if (unlikely(urb->status == -ENOENT ||		/* unlinked */
 		     urb->status == -ENODEV ||		/* device removed */
@@ -465,6 +473,8 @@
 				err, usb_error_string(err));
 			return err;
 		}
+		if (stream == &ua->capture)
+			printk(KERN_DEBUG "submitted URB %u\n", i);
 	}
 	return 0;
 }


More information about the Linux-audio-user mailing list