[alsa-devel] Help with multichannel High Speed USB audio device
Dear list,
I made an embedded device that has a CODEC with 6 inputs connected to an ARM9 micro-controller that has an integrated high-speed USB controller. Now, I need to write the USB code on that micro-controller so that i can capture those channels in real-time at 24bits / 48 KHz with low latency (ie. sub 10ms), on a computer.
I only need my device to work with Linux, and if possible, I would like to avoid writing a device driver on the Linux-side.
Is there already such a USB audio driver available that I could nearly use "as is" and to which i would conform ?
Would you have some general guideline on how to write the high-speed USB device code ?
Would you have any comment on the following :
For simplicity, my device is going to be the "clock master" of the system since it is already has the exact clock that drives the CODEC. I will maintain a circular buffer of samples (well, frames of samples) coming from the CODEC. Each time a new frame arrives, i put the samples in the buffer and increase a counter so i know how many frames of samples I have in the buffer, ready to be sent. Each USB micro-frame (125ms/8000Hz), I send all the bytes corresponding to the frames that I have in the circular buffer. In average, 6*3*48000/8000 = 108, but I presume that could jitter slightly, which should not be a problem at all.
Thanks in advance, Laurent
_________________________________________________________________ Windows Live™ Hotmail®: Celebrate the moment with your favorite sports pics. Check it out. http://www.windowslive.com/Online/Hotmail/Campaign/QuickAdd?ocid=TXT_TAGLM_W...
Laurent . wrote:
I made an embedded device that has a CODEC with 6 inputs connected to an ARM9 micro-controller that has an integrated high-speed USB controller. Now, I need to write the USB code on that micro-controller so that i can capture those channels in real-time at 24bits / 48 KHz with low latency (ie. sub 10ms), on a computer.
I only need my device to work with Linux, and if possible, I would like to avoid writing a device driver on the Linux-side.
Is there already such a USB audio driver available that I could nearly use "as is" and to which i would conform ?
Yes, snd-usb-audio.
Would you have some general guideline on how to write the high-speed USB device code ?
Just conform to the USB (2.0) and USB Audio (1.0) specifications.
For simplicity, my device is going to be the "clock master" of the system since it is already has the exact clock that drives the CODEC.
So you'd use an asynchronous endpoint.
Best regards, Clemens
----------------------------------------
Date: Fri, 24 Jul 2009 11:12:48 +0200 From: clemens@ladisch.de To: sid6582@msn.com CC: alsa-devel@alsa-project.org Subject: Re: [alsa-devel] Help with multichannel High Speed USB audio device
Laurent . wrote:
I made an embedded device that has a CODEC with 6 inputs connected to an ARM9 micro-controller that has an integrated high-speed USB controller. Now, I need to write the USB code on that micro-controller so that i can capture those channels in real-time at 24bits / 48 KHz with low latency (ie. sub 10ms), on a computer.
I only need my device to work with Linux, and if possible, I would like to avoid writing a device driver on the Linux-side.
Is there already such a USB audio driver available that I could nearly use "as is" and to which i would conform ?
Yes, snd-usb-audio.
Would you have some general guideline on how to write the high-speed USB device code ?
Just conform to the USB (2.0) and USB Audio (1.0) specifications.
For simplicity, my device is going to be the "clock master" of the system since it is already has the exact clock that drives the CODEC.
So you'd use an asynchronous endpoint.
Best regards, Clemens
_________________________________________________________________ Bing™ brings you maps, menus, and reviews organized in one place. Try it now. http://www.bing.com/search?q=restaurants&form=MLOGEN&publ=WLHMTAG&am...
participants (2)
-
Clemens Ladisch
-
Laurent .