Tascam 144 USB audio/MIDI interface adapter.
Support
- ALSA 1.0.18-rc1
- Kernel 2.6.28
- Works on uhci-hcd only
Howto
- Ubuntu
- Tested on nixie (2.6.31-17-generic i686)
Unbind ehci
# echo -n 0000:00:1d.7 >> /sys/bus/pci/drivers/ehci_hcd/unbind
Install patched snd-usb-us122l.ko
sudo cp /lib/modules/`uname -r`/kernel/sound/usb/usx2y/snd-usb-us122l.ko{,.bak}
wget http://www.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-20091012.tar.gz
tar -xzvf alsa-driver-20091012.tar.gz
cd alsa-driver/alsa-kernel/usb/usx2y/
make -C /usr/src/linux-headers-`uname -r` M=`pwd` modules
sudo cp snd-usb-us122l.ko /lib/modules/`uname -r`/kernel/sound/usb/usx2y/snd-usb-us122l.ko
sudo modprobe snd-usb-us122l
Configure ALSA
-
http://wiki.briata.org/doku.php#step_3_-_set_alsa
wget http://pub.briata.org/us-122l/.asoundrc -O ~/.asoundrc
Test
ARGS="-MDusb_stream:1 -fS24_3LE -r44100 -c2 --period-size=640"
arecord $ARGS > foo.wav
mplayer foo.wav
Rebind afterwards
# echo -n 0000:00:1d.7 >> /sys/bus/pci/drivers/ehci_hcd/bind
Hardware Description
Vendor Id: 0x0644 (Teac) Product Id: 0x800f
lsusb
Bus 002 Device 004: ID 0644:800f TEAC Corp
See below for verbose lsusb output...
Physical structure
Connectors
| 1 | USB | USB type B | || | 2 | Line Out L | RCA | | 3 | Line Out R | RCA | | 4 | MIDI In | MIDI | | 5 | MIDI Out | MIDI | | 6 | Digital In | MIDI | | 7 | Digital Out | MIDI | | 8 | Line In L | Audio Jack 6.3 mm (1/4") | | 9 | Line/Guitar In R | Audio Jack 6.3 mm (1/4") | | 10 | Phones | Audio Jack 6.3 mm (1/4") | | 11 | Mic In L | XLR | | 12 | Mic In R | XLR |
Mixers
Control | Type | Mix inputs |
---|---|---|
Mon Mix (Input/Computer) | Mix | ? <--> 1 |
Line Out | Mix | 2 level |
Phones | Mix | 10 level |
Input L | Mix | 8 <--> 11 |
Input R | Mix | 9 <--> 12 |
Mic-Line/Guitar | Switch | 9 |
USB structure
Configuration 1:
Interface 0
Alt 0
0 endpoints
Alt 1
Endpoint 0: Isochronous Output
(packet size: 156, interval: 125µs)
Endpoint 1: Bulk Input
(packet size: 512, interval: 0ms)
Endpoint 2: Bulk Output 500µs
(packet size: 512, interval: 500µs)
Interface 1
Alt 0:
0 endpoints
Alt 1:
Endpoint 0: Isochronous Input
(packet size: 64, interval: 1ms)
Endpoint 1: Bulk Input
(packet size: 512, interval: 0ms)
/proc/bus/usb
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 33 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0644 ProdID=800f Rev= 1.00
S: Manufacturer=Tascam
S: Product=US-144
S: SerialNumber=no serial number
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=480mA
I: If#= 0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
I: If#= 0 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E: Ad=02(O) Atr=05(Isoc) MxPS= 156 Ivl=125us
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=500us
I: If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E: Ad=81(I) Atr=05(Isoc) MxPS= 64 Ivl=1ms
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
lsusb -vvv
Bus 003 Device 003: ID 0644:800f TEAC Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0644 TEAC Corp.
idProduct 0x800f
bcdDevice 1.00
iManufacturer 1 Tascam
iProduct 2 US-144
iSerial 3 no serial number
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 80
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 480mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x009c 1x 156 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
Links
http://www.pps.jussieu.fr/~smimram/tascam/
http://www.tascam.de/en/us-144.html
http://www.tascam.com/Products/US-144.html
http://langerland.de/linux/usx2y/index.html
http://permalink.gmane.org/gmane.linux.alsa.devel/43192
http://ubuntuforums.org/showthread.php?t=318567
http://doc.gwos.org/index.php/Tascam_US-122_in_Dapper
http://www.alsa-project.org/
http://www.premiumorange.com/la-page-web-of-phil/index.php?page=P030001
http://wiki.briata.org/doku.php