Am Freitag 19 März 2010 schrieb Jan Depner:
Karsten,
Last year I emailed you with a question about the TASCAM US-1641 and
you replied with a bit of information related to the US-144. I finally
bought the US-1641 (it went down to $299 US). It works great under
Windows with Cubase. In fact, I'm tempted to just leave it at that
since it works so well but I hate the thought of having it here and not
being able to use it in Linux. I have installed UsbSnoop on Windows and
can dump the tons of traffic back and forth between the device and the
system. My problem is that I have no idea where to start. I'm a pretty
good C programmer (I've been doing it for a living since 1989 [FORTRAN
since 1978]) so I think I could probably figure this thing out if I
could just get started. You mentioned something about using libusb or
usblib instead of playing around with building and modifying a kernel.
I don't have any problem with building a kernel and hacking it but I
need a starting point. Are there ANY USB 2.0 audio drivers for Linux
that I could start with? Is the US122L or the US144 USB 2.0? Any help
you could give me would be greatly appreciated.
hey jan,
the US122L linux driver uses non-standard USB 2.0. It comes with a kernel part
in snd_usb_us122l and a userspace alsa-plugin called usb_stream.
i've heard the US-1641 uses bulk usb packets for audio
(maybe bulk in, iso out or the other way round), where snd_usb_us122l uses
iso packets only.
the devices sample rate is most likely interpreted from audio in packets and
the audio out packets are cut to fit.
the hard stuff is figuring from the usbsnoop dump, what happens why and when.
then one would verify things by trying out. you already know that ;-)
sequence of operation guessed:
- lowlevel initialisation
- sample format setup
- sample rate setup
- stream start
- audio i/o
iirc, the actual userspace start/stop on the usb_us122l doesn't change the audio i/o,
userspace just starts/stops reading/writing the audio.
using libusb for trying out could spare you some kernel crashes + reboot cycles.
if you've verified operations via libusb, moving to a kernel driver, maybe expanding
or using snd-usb-us122l as a template might be easier.
regards,
karsten