How To Get The M-Audio Transit USB Audio Device Working In Ubuntu 9.04 AMD64

This tutorial will explain how to get the M-Audio Transit USB audio device working under Ubuntu 9.04 amd64, although it may work for other versions.

The Transit is usually a Windows only device and is not detected normally because the firmware has to be loaded in to the device; this is normally done by the Windows drivers. I've written this tutorial after a long exhaustive search on how to get it working.

 

Requirements:

madfucutter (from multiverse repositories)
transit firmware file (you must get this from the driver package or from windows)

 

What we're doing

ALSA supports USB audio devices by default, and the Transit does conform to this standard, however, when it's first powered on it does not have a firmware loaded in to it and is basically a "pretty dumb" USB device. In fact, when you plug it up, lsusb lists it as the following:

[email protected]:~$ lsusb

Bus 001 Device 007: ID 0763:2806 Midiman M-Audio Transit DFU

Usually the Windows drivers will load the firmware in to the device and runs a reset on it, from which point Windows will then detect it as a Transit audio device and load the appropiate drivers. Under linux, the madfuload utility will upload the firmware to the device so Linux will be able to detect it. madfuload is available in multiverse, but out of the box it doesn't work.

 

How to do it

You do not need your Transit USB plugged in for any of these steps, so you may want to unplug it if it's currently plugged in. Let's make sure the multiverse repositories are enabled. The easiest way to do this is grep /etc/apt/sources.list with the following command:

less /etc/apt/sources.list | grep multiverse

You are looking for a line similar to this

deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse

If you see this line but it has a # in front of it, then we'll need to enable the repositories by editing the sources.list file.

sudo nano /etc/apt/sources.list

Of course you can replace nano with your favorite editor. Once you find the proper line, remove the #, save the file, and reload your apt sources:

sudo apt-get update

Once your apt is updated with multiverse, we can proceed to install madfudload:

sudo apt-get install madfudload

Now that we've got madfuload installed, we need to copy the firmware file. This file is called ma006100.bin - you can either extract the installer package to find the file, or, if you have Windows installed on the same system, you can find the file on your windows drive in /windows/system32/drivers/ Once you've located the file, it needs to be copied to /usr/share/usb/maudio.

If we try to pass the proper variables over command-line to madfudload, at least on amd64 systems, we get a segfault. So what we're going to do is modify a udev rule file to make everything automatic and avoid the segfault problems.

The file we need to edit is /lib/udev/rules.d/42-madfuload.rules and change the TRANSIT section. For this I used gedit since the entry does not contain any line-breaks and is much wider than my terminal screen..again, you can use any editor you wish.

sudo gedit /lib/udev/rules.d/42-madfuload.rules

# Transit
ACTION=="add", SUBSYSTEM=="usb", DEVPATH=="/*.0",
ENV{PRODUCT}=="763/2806/*", RUN+="/usr/sbin/madfuload -l -3 -f /usr/share/usb/maudio/ma006100.bin -D $root/$name"

We need to replace that entire chunk with this:

# Transit
ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="763/2806/*", RUN+="/usr/sbin/madfuload -l -3 -f /usr/share/usb/maudio/ma006100.bin
-D $env{DEVNAME}"

Save the file. Now, plug up your Transit and run lsusb again. You should now find that it shows up as this:

[email protected]:~$ lsusb

Bus 001 Device 009: ID 0763:2006 Midiman M-Audio Transit

That's it. Your Transit is now installed and working in Ubuntu.

 Since publication I've discovered that about 80% of the other machines I did this on required a reboot. I cannot remember what was special about those installs either; so if your Transit still shows up as a DFU after reboot, reboot your machine before thinking it did not work.

 I've also discovered why you are unable to play 24-bit with the device. The limitation is not in ALSA but is with the Transit itself. Since it's a USB 1.1 device it does not have enough bandwidth to reliably send a 96/24 stream in and out at the same time. M-Audio has worked around this by having several operating modes selectable in the Windows Drivers. When the firmware first loads, it defaults to the 16-bit 8000-48000hz mode, which gives you recording and playback. ALSA does not know (or probably care) how to change this, however, as a result you cannot support more than 48khz 16-bit on this under Linux.

Share this page:

6 Comment(s)

Add comment

Comments

From: Dan Chen

In the past, invoking udevsettle "did the right thing"; there's no need to reboot.

From: Johan

Is the firewire loaded only once or will ubuntu have to reload it every time the computer was shut down?

I was thinking, if the firwire will not reset when I turn the computer off, it might work installing the windows driver in windows, and then, with firewire on it, it will work in ubuntu too?

From: Anonymous

"sudo apt-get install madfuload", not "sudo apt-get install madfudload"

From: David Collin

This worked perfectly (apart from the "madfudload->madfuload" typo mentioned in another comment), thanks so much!

From: Anonymous

It is tested to work with debian in arm environment too, however the path in the loader rules need to be adjusted to /usr/local instead of /usr for madfuload version 1.2

From: Christopher Williams

can you please post the entire altered chunk for Debian? i don't understand how the code should be be adjusted to /usr/local instead of /usr for madfuload version 1.2

thanks