[alsa-devel] TASCAM US-1641
A couple of weeks ago I purchased a TASCAM US-1641 on the off chance that I might be able to get the thing working on Linux (or give up and use it in Windows ;-) I have built the 2.6.33 kernel and started playing around in Karsten Wiese's US-122L module to see what I could get to happen. I did this on the off chance that TASCAM just increased the number of ports but used the same protocol for communication that they used for the US-122L. I added an entry for the US-1641 in us122l.h (#define USB_ID_US1641 0x8017) and then added an entry to the snd_us122l_usb_id_table in us122l.c. After recompiling and installing the modules I get the following in my dmesg output when I turn the device on:
usb 1-2: new high speed USB device using ehci_hcd and address 3 couldn't __get_free_pages() snd-usb-us122l: probe of 1-2:1.1 failed with error -22
I don't have any problem with spending a lot of time on this (actually, it's kind of fascinating) and I am proficient in C but I could use some help. I'm hoping that someone on this list might have some information that could help me in trying to get this thing working (I've even got UsbSnoop installed on my Windows partition). Any information that could help would be greatly appreciated.
Cheers, Jan Depner
On Tue, Mar 23, 2010 at 08:34:43PM -0500, Jan Depner wrote:
A couple of weeks ago I purchased a TASCAM US-1641 on the off chance that I might be able to get the thing working on Linux (or give up and use it in Windows ;-) I have built the 2.6.33 kernel and started playing around in Karsten Wiese's US-122L module to see what I could get to happen. I did this on the off chance that TASCAM just increased the number of ports but used the same protocol for communication that they used for the US-122L. I added an entry for the US-1641 in us122l.h (#define USB_ID_US1641 0x8017) and then added an entry to the snd_us122l_usb_id_table in us122l.c. After recompiling and installing the modules I get the following in my dmesg output when I turn the device on:
usb 1-2: new high speed USB device using ehci_hcd and address 3 couldn't __get_free_pages() snd-usb-us122l: probe of 1-2:1.1 failed with error -22
I'm not familiar with this driver in particular, but looking at the code to produce this error message, I believe that something in the calculation of the number of pages to allocate goes wrong. Most probabably usb_stream_new() is invoked with bogus parameters and so the size variables overflow to some ridiculous value.
I suggest adding some printk()s to the driver and see what it actually does and which values it passes around. Most probably there is more differences in the data format, and descriptors and/or message blocks have different meanings for this hardware model.
HTH, Daniel
On Wed, 2010-03-24 at 06:56 +0100, Daniel Mack wrote:
On Tue, Mar 23, 2010 at 08:34:43PM -0500, Jan Depner wrote:
A couple of weeks ago I purchased a TASCAM US-1641 on the off chance that I might be able to get the thing working on Linux (or give up and use it in Windows ;-) I have built the 2.6.33 kernel and started playing around in Karsten Wiese's US-122L module to see what I could get to happen. I did this on the off chance that TASCAM just increased the number of ports but used the same protocol for communication that they used for the US-122L. I added an entry for the US-1641 in us122l.h (#define USB_ID_US1641 0x8017) and then added an entry to the snd_us122l_usb_id_table in us122l.c. After recompiling and installing the modules I get the following in my dmesg output when I turn the device on:
usb 1-2: new high speed USB device using ehci_hcd and address 3 couldn't __get_free_pages() snd-usb-us122l: probe of 1-2:1.1 failed with error -22
I'm not familiar with this driver in particular, but looking at the code to produce this error message, I believe that something in the calculation of the number of pages to allocate goes wrong. Most probabably usb_stream_new() is invoked with bogus parameters and so the size variables overflow to some ridiculous value.
Yes, that was where it was.
I suggest adding some printk()s to the driver and see what it actually does and which values it passes around. Most probably there is more differences in the data format, and descriptors and/or message blocks have different meanings for this hardware model.
I did as suggested and got back reasonable appearing numbers for rate, use_packsize, and period_frames of 44100, 36, and 256 respectively but am not sure how to relate this to my interface. Is there some documentation somewhere that would explain the output of lsusb -v with respect to variable names in us122l.c. My problem here is that I don't know what would actually be reasonable for this interface nor how to find out.
Many thanks for your help with this. Karsten had asked me to get back with him if I got one of these but my email to him must have gone to the spam filter as I haven't heard anything.
HTH, Daniel
On Wed, Mar 24, 2010 at 05:02:46PM -0500, Jan Depner wrote:
On Wed, 2010-03-24 at 06:56 +0100, Daniel Mack wrote:
On Tue, Mar 23, 2010 at 08:34:43PM -0500, Jan Depner wrote: I suggest adding some printk()s to the driver and see what it actually does and which values it passes around. Most probably there is more differences in the data format, and descriptors and/or message blocks have different meanings for this hardware model.
I did as suggested and got back reasonable appearing numbers for
rate, use_packsize, and period_frames of 44100, 36, and 256 respectively but am not sure how to relate this to my interface. Is there some documentation somewhere that would explain the output of lsusb -v with respect to variable names in us122l.c. My problem here is that I don't know what would actually be reasonable for this interface nor how to find out.
Sorry I can't really help here. I've never dealt with any TASCAM interface, and I don't know how close they are to any USB class interface. Maybe Karsten can tell us more about that.
Many thanks for your help with this. Karsten had asked me to get
back with him if I got one of these but my email to him must have gone to the spam filter as I haven't heard anything.
Cc'ed him on this mail :)
Daniel
Am Mittwoch 24 März 2010 schrieb Jan Depner:
I suggest adding some printk()s to the driver and see what it actually does and which values it passes around. Most probably there is more differences in the data format, and descriptors and/or message blocks have different meanings for this hardware model.
I did as suggested and got back reasonable appearing numbers for
rate, use_packsize, and period_frames of 44100, 36, and 256 respectively but am not sure how to relate this to my interface.
I heard the US-1641 uses bulk and/or iso packets, while US-122L uses iso only. so snd_usb_us122l would need some deep tweaking. also all the incantation stuff looks propably different.
Is there some documentation somewhere that would explain the output of lsusb -v with respect to variable names in us122l.c.
erm, no. there are the interface and endpoint numbers.
My problem here is that I don't know what would actually be reasonable for this interface nor how to find out.
usbsnoop and/or the developers at http://usbaudio.com.
Many thanks for your help with this. Karsten had asked me to get
back with him if I got one of these but my email to him must have gone to the spam filter as I haven't heard anything.
no spam filters, just work and short hollidays.
looking back at developing snd_usb_us122l, i'm unsure if I spent my time wisely: the actual hardware one can buy now doesn't talk to the driver anymore. and i'm busy caring for real life, which i've been omitting a tad too much that time.
If in doubt, don't bother hacking on the tascam, enjoy spring instead!
regards, Karsten
On Thu, 2010-03-25 at 11:00 +0100, Karsten Wiese wrote:
Am Mittwoch 24 März 2010 schrieb Jan Depner:
I suggest adding some printk()s to the driver and see what it actually does and which values it passes around. Most probably there is more differences in the data format, and descriptors and/or message blocks have different meanings for this hardware model.
I did as suggested and got back reasonable appearing numbers for
rate, use_packsize, and period_frames of 44100, 36, and 256 respectively but am not sure how to relate this to my interface.
I heard the US-1641 uses bulk and/or iso packets, while US-122L uses iso only. so snd_usb_us122l would need some deep tweaking. also all the incantation stuff looks propably different.
Sounds complicated ;-)
Is there some documentation somewhere that would explain the output of lsusb -v with respect to variable names in us122l.c.
erm, no. there are the interface and endpoint numbers.
My problem here is that I don't know what would actually be reasonable for this interface nor how to find out.
usbsnoop and/or the developers at http://usbaudio.com.
I've got usbsnoop and UsbSnoop on Windows. Would the guys at usbaudio actually help out??? It seems counterintuitive.
Many thanks for your help with this. Karsten had asked me to get
back with him if I got one of these but my email to him must have gone to the spam filter as I haven't heard anything.
no spam filters, just work and short hollidays.
I know how that is ;-)
looking back at developing snd_usb_us122l, i'm unsure if I spent my time wisely: the actual hardware one can buy now doesn't talk to the driver anymore. and i'm busy caring for real life, which i've been omitting a tad too much that time.
If in doubt, don't bother hacking on the tascam, enjoy spring instead!
Probably the best advice ever ;-)
regards, Karsten
Am Mittwoch 24 März 2010 schrieb Jan Depner:
I suggest adding some printk()s to the driver and see what it actually does and which values it passes around. Most probably there is more differences in the data format, and descriptors and/or message blocks have different meanings for this hardware model.
I did as suggested and got back reasonable appearing numbers for
rate, use_packsize, and period_frames of 44100, 36, and 256 respectively but am not sure how to relate this to my interface.
I heard the US-1641 uses bulk and/or iso packets, while US-122L uses iso only. so snd_usb_us122l would need some deep tweaking. also all the incantation stuff looks propably different.
Is there some documentation somewhere that would explain the output of lsusb -v with respect to variable names in us122l.c.
erm, no. there are the interface and endpoint numbers.
My problem here is that I don't know what would actually be reasonable for this interface nor how to find out.
usbsnoop and/or the developers at http://usbaudio.com.
Many thanks for your help with this. Karsten had asked me to get
back with him if I got one of these but my email to him must have gone to the spam filter as I haven't heard anything.
no spam filters, just work and short hollidays.
looking back at developing snd_usb_us122l, i'm unsure if I spent my time wisely: the actual hardware one can buy now doesn't talk to the driver anymore. and i'm busy caring for real life, which i've been omitting a tad too much that time.
If in doubt, don't bother hacking on the tascam, enjoy spring instead!
regards, Karsten
participants (4)
-
Daniel Mack
-
Jan Depner
-
Karsten Wiese
-
Karsten Wiese