Tascam144

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

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