[alsa-devel] Capture from 3+ cards connected to a USB hub - distorted samples

Pavel Hofman pavel.hofman at ivitera.com
Mon Dec 26 20:48:44 CET 2011


Dne 18.12.2011 21:17, Pavel Hofman napsal(a):
> Dne 14.12.2011 13:30, Jaroslav Kysela napsal(a):
>> Date 14.12.2011 13:19, Pavel Hofman wrote:
>>>
>>> Dne 10.12.2011 00:23, Pavel Hofman napsal(a):
>>>> Hi,
>>>>
>>>> I have been informed about the following problem which I was able to
>>>> reproduce afterwards:
>>>>
>>>> * Latest git.alsa-project.org drivers
>>>>
>>>> * USB 2.0 hub, 3 or more USB soundcards (inexpensive USB sticks, USB
>>>> audio v.1 types, async capture, adaptive playback) hooked to the hub,
>>>> identified A, B, C, D.
>>>>
>>>> * NONE of these soundcards is playing back
>>>>
>>>> Now:
>>>>
>>>> * Card A begins microphone capturing (mono 48/16), result OK
>>>>
>>>> * Card B begins capturing (mono 48/16), both results still OK
>>>>
>>>> * As soon as the third card C begins capturing, the signal captured from
>>>>    cards A and B gets distorted. Audacity shows some samples are
>>>> incorrect, distorting the expected sine waveform of the testing signal.
>>>> I can provide screenshots as well as recorded samples, if needed.
>>>>
>>>> * The signal recorded from card C is OK.
>>>>
>>>> BUT
>>>>
>>>> * If any card hooked to the HUB is playing back (even a fourth one D),
>>>> the distortion does not occur. It happens only when there is no playback
>>>> stream going through the hub. Traffic on another USB port has no effect,
>>>> in fact the test signal for the three cards was provided by a
>>>> multichannel USB card hooked to another USB port.
>>>>
>>>> It seems to me as if blocks of samples for each card in the USB frame
>>>> sometimes overlap by a few bits, corrupting the neighbouring card
>>>> samples, or are recovered incorrectly.
>>>>
>>>> I understand I have provided no real data, I am ready to do so plus any
>>>> tests you would consider useful.
>>>>
>>>> Thanks a lot for suggestions of the next debugging steps I should do.
>>>>
>>>
>>> Hi, please may I ask for help? I think we could fix this likely bug.
>>
>> This looks like a USB core issue (lost / unsynced URBs from isochronous
>> transfers). I would try recent linux kernels and/or ask on the USB
>> development list for a help.
> 
> Hi Jaroslav,
> 
> Thanks a lot for your suggestion. I tested latest stable kernel 3.1.5.
> The behaviour has somewhat improved (3 cards OK), but still IMO
> incorrect (the fourth card D distorts captured streams from C and D). I
> will ask at the usb development list.
> 

I checked USB communication with wireshark and the reduced data payload
in URBs for card C and D suggest I am already hitting ceiling of the hub
throughput. I think the hub support is already correct in the latest kernel.

Best regards,

Pavel.


More information about the Alsa-devel mailing list