path: root/audio/alsa-tools/tascam-us122-HOWTO
diff options
Diffstat (limited to 'audio/alsa-tools/tascam-us122-HOWTO')
1 files changed, 270 insertions, 0 deletions
diff --git a/audio/alsa-tools/tascam-us122-HOWTO b/audio/alsa-tools/tascam-us122-HOWTO
new file mode 100644
index 0000000000..ea36dcfce3
--- /dev/null
+++ b/audio/alsa-tools/tascam-us122-HOWTO
@@ -0,0 +1,270 @@
+How to get a Tascam US-122 working with Slackware 13.37.
+The Tascam US-122 is a bus-powered USB 1.1 audio interface, with 2
+channels of input (either 1/4" unbalanced or XLR balanced) and adjustable
+direct monitoring. See Tascam's product page for more information (Links
+section, below).
+These directions might also be useful for the US-224 and US-428. There are
+also US-122MkII and US-144MkII units which are cosmetically different,
+but might be the same thing internally (or might not; I don't have one
+for testing).
+Before you start: the US-122 is bus-powered, and draws quite a bit more
+power than your average USB device (though not more than the 500mA that
+the USB specification says USB ports/hubs should support). It probably
+won't work with cheap powered USB hubs (it may be detected & show up
+in alsamixer, but fail to actually play any audio). It will of course
+never work with an unpowered hub. It's also possible (but unlikely) that
+it could fry a cheap motherboard, if plugged in without a hub. If you're
+even slightly worried about this, I'd recommend getting a decent powered
+hub (one that says it supports "high power" or "hi-power" USB devices).
+You should read the owner's manual (see Links, below). Obviously you
+can skip the parts about installing/using the Windows/Mac drivers and
+software (which is most of the manual actually), but the product specs
+in the back are informative.
+Unlike some other "USB mixer" devices, the Tascam isn't just plug and
+play on Slackware Linux systems. Although it appears as a standard
+class-compliant USB audio interface (and also as a MIDI interface),
+it requires its firmware to be sent over the USB cable each time it's
+plugged in. Presumably, this is to save on cost (no ROM or flash is
+required inside the unit), and to allow for easy firmware upgrades.
+To get the device to work, you'll need the firmware itself, the firmware
+loader utility, and some udev rules that cause the firmware loader to
+be run when the device it plugged in. Read on for the gory details...
+To start with, leave the device unplugged.
+The commands below assume you have root access (either logged in as root,
+or via "su -". Don't use "su" without the hyphen though).
+1. To get the US-122 working without audio glitches:
+# echo 'options snd_usb_usx2y nrpacks=1' > /etc/modprobe.d/tascam.conf
+What this does is reduce the number of audio packets sent in each USB
+packet. Without this, the Tascam worked, but every few seconds its
+audio would get "scratchy" sounding (due to dropped samples). When this
+happened, I was using jack, and it didn't report any x-runs. I don't
+really understand why nrpacks works, I found it by googling (see the
+links section, below).
+2. Install fxload and alsa-tools from
+# sbopkg -i fxload alsa-tools
+If you prefer, you can download the SlackBuild tarballs and build them
+manually, instead of using sbopkg.
+If you're not actually using Slackware, or if you decide to compile
+alsa-tools without using the package, see the "Udev Rules"
+section of this document.
+3. Plug in the device.
+After a couple of seconds, the green USB light on the Tascam should light
+up. The snd_usb_usx2y should be auto-loaded by udev (check the output of
+4. Testing
+Have a look at the output of "aplay -l", and/or run alsamixer and press
+F6. The card should show up as "USX2Y [TASCAM US-X2Y]". It will probably
+be device #1 (the numbering starts at zero, and your internal/onboard
+audio normally shows up as device #0).
+# aplay -l
+**** List of PLAYBACK Hardware Devices ****
+card 0: Intel [HDA Intel], device 0: ALC269 Analog [ALC269 Analog]
+ Subdevices: 1/1
+ Subdevice #0: subdevice #0
+card 1: USX2Y [TASCAM US-X2Y], device 0: US-X2Y Audio [US-X2Y Audio #0]
+ Subdevices: 1/1
+ Subdevice #0: subdevice #0
+Since it's card #1, we should be able to use it to play an mp3 or ogg file
+with mplayer, like so:
+# mplayer -ao alsa:device=hw=1 somesong.mp3
+You can use some other audio player, if you don't have mplayer installed.
+Whatever you use, set its audio device to "hw:1" (no, the "device=hw=1"
+above isn't a typo, it's how you tell mplayer to use "hw:1". Really.)
+Obviously you need speakers or headphones plugged into the Tascam, to
+actually hear anything. Also, the headphone and main volumes have to be
+turned up. There's no software volume control (you can't use alsamixer
+or KDE's volume control), you'll have to actually turn the knobs :)
+If you don't hear any audio, and/or mplayer (or whatever audio playing
+app) gives error messages and/or freezes up, the Tascam might not be
+getting enough power. Run "dmesg|tail" and look for messages like:
+[623530.547384] Sequence Error!(hcd_frame=226 ep=10out;wait=226,frame=223).
+[623530.547386] Most propably some urb of usb-frame 226 is still missing.
+[623530.547387] Cause could be too long delays in usb-hcd interrupt handling.
+Try a different powered USB hub, or try it in a USB port on the PC itself.
+Once you get everything working, you should be able to use the US-122
+with jack (with or without qjackctl). Make sure to enable the MIDI ports
+(-Xseq on the jackd command line) if you plan to use them.
+(Apparently, the US-428 requires a daemon called us428control to be
+running, to get the MIDI controls to work. I haven't got a US-428 so I
+don't know anything about this)
+JACK Latency
+As a USB 1.x device, the Tascam's audio latency is going to be pretty
+awful. To measure it, you loop the output back into the input, and run
+jack_delay (I used a 1/4" guitar cable, connected from the headphone
+output to the left line input jack). Make sure the "Direct Monitoring"
+switch is off, or else it will feed back and jack_delay won't be able
+to measure anything.
+I've measured my Tascam with jack_delay. Results:
+# jack_delay -I system:capture_1 -O system:playback_1 -E
+ 210.625 frames 4.388 ms
+To get jack-using applications to compensate for latency, use the -I and
+-O options. jack_delay's README says:
+ To determine the correct values for jack's -I and -O, set both
+ of them to zero ('default' in qjackctl) and measure the latency
+ using the -E option. Then set each of the -I and -O options to
+ half the value displayed.
+The options can't be fractional, so I use "-I 105 -O 105", which seems
+to work OK. My complete jackd command line looks like:
+/usr/bin/jackd -Z -R -P65 -dalsa -dhw:1 -r48000 -p256 -n3 -Xseq -I105 -O105
+With these settings, I'm able to use fluidsynth, beatrix, bristol,
+and other audio synths. I use a USB MIDI keyboard, but you could
+use the Tascam's MIDI in jack with a standard MIDI keyboard as well.
+ardour and ecasound also work for recording audio, though I haven't
+tested them thoroughly.
+I haven't experimented with the -p and -n options. Lower values would
+mean less latency, at the expense of more CPU and I/O overhead. I'm using
+the Tascam with an eeePC (relatively slow single core Intel Atom CPU),
+you might do better on faster hardware... but don't expect miracles:
+USB 1.1 just plain doesn't move data fast enough to get truly low latency
+audio. You'd need USB 2.0 (expensive, proprietary) or better yet, Firewire
+(also expensive) for that.
+If you can't seem to get rid of audio problems any other way, try
+(in order):
+- make sure jackd and your audio applications have the appropriate
+ POSIX capabilities (e.g. setcap cap_ipc_lock,cap_sys_nice=ep
+ /usr/bin/jackd)
+- add append="threadirqs" in lilo.conf (re-run lilo, reboot)
+- use the rtirq script from
+- recompile the kernel with CONFIG_PREEMPT=y
+- Use a realtime-patched kernel
+ from
+There is a lot of info out there on the 'net about reducing latency
+and/or x-runs in jack. You'll get it working if you're persistent.
+This isn't Slackware- or Linux-specific information, but it's not covered
+real well in the owner's manual either.
+Unlike some other "USB mixer" devices, the Tascam won't work as a
+standalone mixer. It's USB-powered, and needs its firmware loaded.
+The Direct switch sends whatever's coming in on the inputs, directly to
+the output, with no latency. In ardour, select "Options > Hardware does
+monitoring" to use this. If you want to use the Tascam + your computer
+as a live guitar effects rig (maybe using rakarrack, jack-rack, and/or
+sooperlooper), this needs to be disabled.
+The inputs are labelled L and R (left and right). When the Mono switch
+is in the On position, both channels are mixed together and appear on
+the left and right outputs (and on both system:capture_* ports in jack).
+The device still appears to be stereo from jack and alsa's point of view
+(just with identical audio on both channels).
+The insert jacks are described as "TRS jacks" in the manual. This means
+tip-ring-sleeve. Probably you'll need a stereo 1/4" Y-cable (with two
+mono 1/4" plugs or jacks on the other end) to make any use of the inserts.
+I haven't tried them yet. See
+There are no software-controllable mixer controls. You can only adjust
+the volume with the hardware knobs (separate ones for headphone and
+line outputs).
+You can't use the US-122's controls as a MIDI control surface. From what
+I've read, the US-428 is capable of this.
+Tascam US-122 product page:
+The owner's manual is in the "Downloads" section.
+These instructions were adapted from the Fedora Core 5 instructions here:
+Ubuntu forum topic about Tascam devices (there's a lot of noise, but some
+useful info too):
+The US-122L, US-122MkII, and US-144 are apparently completely different
+beasts. Here are a couple of pages discussing them (which may contain
+outdated information, YMMV):
+Udev Rules
+If you used the package of alsa-tools, you don't need
+this (it already includes a suitable set of udev rules for the US-122,
+US-224, and US-428).
+# cat > /lib/udev/rules.d/99-tascam.rules <<EOF
+BUS=="usb", ACTION=="add", SYSFS{idProduct}=="8006", SYSFS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"
+BUS=="usb", ACTION=="add", SYSFS{idProduct}=="8007", SYSFS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"
+(the above is two long lines beginning with "BUS==". There shouldn't be any
+other line breaks)
+For the US-224, change the "us122fw.ihx" above to "us224fw.ihx", and
+change the SYSFS{idProduct} numbers to 8004 and 8005. For the US-428,
+the firmware is "us428fw.ihx" and the product IDs are 8000 and 8001.
+After creating the udev rules file, tell udevd to load it:
+# udevadm control --reload-rules
+B. Watson (yalhcru at gmail dot com)
+If you find anything confusing or inaccurate in this guide, or have more
+information (particularly about the other Tascam US-series interfaces),
+let me know and I'll update the guide at some point.