The necessary firmware and downloading programs can be obtained from
www.alsa-project.org, as will be described below. However,
at the time of writing this, the accompanying installation procedures
assume that the old USB hotplug facility is in place, whereas in Fedora
Core 5, this has been removed and replaced by udev. There
are two alternative means of addressing this problem. One is to install
the deprecated hotplug facility, which can via a compatibility clause
in udev. The other method is to configure udev
directly to do the two stages of firmware downloading. I have chosen
the latter, since it is the cleaner of the two options. Hopefully the
ALSA configuration scripts will be modified to do this automatically,
in future.
The Tascam firmware files and the second stage firmware-loader
program can be obtained by going to the official web-page of the ALSA
project (www.alsa-project.org), and downloading the
alsa-firmware and alsa-tools packages from there. We have to install
these by hand, rather than using yum, since the equivalent packages
that are available from the standard FC5 repositories appear to be have
been mysteriously stripped of the files that we need. To avoid
conflicts with future updates of the yum variants of these packages, it
makes sense to only install the missing parts from the original alsa
packages. This turns out to be easy, since the alsa build procedure is
ameanable to only building and installing specific parts. At the time
of writing this, the alsa packages are numbered 1.0.11. Having
downloaded the compressed tar files of these packages, as mentioned
above, I first unpacked them as follows:
tar xjf alsa-firmware-1.0.11.tar.bz2
tar xjf alsa-tools-1.0.11.tar.bz2
I then installed the firmware as follows:
cd alsa-firmware-1.0.11
./configure --prefix=/usr
cd usx2yloader
/bin/su -c 'make install'
cd ../..
Then I compiled and installed the second-stage firmware loader, as
follows:
cd alsa-tools-1.0.11
cd usx2yloader
./configure --prefix=/usr
make
/bin/su -c 'make install'
cd ../..
The above installation procedure installs files in /etc/hotplug that
we don't need, since we aren't going to use the obsolete hotplug
facility. Just in case somebody does install hotplug at a later
date, delete these files, to avoid a fight between udev
and hotplug.
/bin/su -c '/bin/rm -f /etc/hotplug/usb/tascam*'
http://prdownloads.sourceforge.net/linux-hotplug/
and downloading the latest RPM file of thefxload package.
At the time of writing, this was called fxload-2002_04_11-1.i386.rpm.
I downloaded this, and then typed the following to install it./bin/su -c 'rpm -i fxload-2002_04_11-1.i386.rpm'
When the Tascam US-122 device is plugged in to a USB port, it
appears on the USB bus with a vendor ID of 1604 and a product ID of
8006. This doesn't cause the device driver for the Tascam box to be
loaded, because the driver is looking for a different product ID that
doesn't appear until the first stage firmware has been loaded. Once the
first-stage firmware has been loaded using the fxload
program that was installed above, the product ID changes to 8007, which
is what the device driver is looking for. At this point, if one is
listening on headphones, to the audio-output of the Tascam box, a
distinct click is heard, and the device driver automatically loads
itself. However the LEDs on the Tascam box don't even flicker at this
point, since the Tascam box needs to have its second-stage firmware
installed, before the driver can do anything with it. This is done
using the usx2yloader program that was installed above,
which operates through the device driver.
While it is possible to load the firmware by hand, it is much more
convenient to have udev do this for one, automatically
whenever the Tascam box is plugged in to a USB port. This is done as
follows:
/bin/su
cd /etc/udev/rules.d
cat > 55-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'"
EOF
The first line above causes the first-stage firmware to be loaded
when udev sees a USB device from Tascam with a 8006 product ID, and the
second-stage firmware to be loaded when it sees a Tascam device with a
8007 product-ID. Once udev has loaded the second stage firmware, then
the US-122 LEDs should light, and it should be ready for use.