Topic: A guide to making Multiface, other RME HDSPe devices work under Linux
I've registered to post a guide to help anyone who is having trouble getting an RME HDSPe interface running under Linux. I have a Multiface II, so this guide is best for someone who needs to make an RME Multiface 2 work under Linux, but it's likely to be applicable to other interfaces as well. I spent a day combing through old forum posts and bug reports to figure this out, so hopefully this will save you some time.
First things first: Forget about using PulseAudio. I was not able to get good results with PulseAudio: sound played over the interface through PulseAudio is full of cracks and skips. Sometimes, particularly just after restarting PulseAudio, the sound was cleaner but the problems would soon return. So far as I know, PulseAudio interacts with HDSPe devices through a generic ALSA API. I'm guessing that this API is not able to interact with the advanced sample rate and frequency control features of RME products, hence the distorted output.
There may be a way to tune PulseAudio so it'll work with a Multiface or other HDSPe device, but I don't know how. However, you can still play sound from PulseAudio-only applications like Firefox once you get things set up correctly.
What worked for me was running the Multiface II through JACK, a toolset for implementing professional computer audio systems in Linux and other OSes. But before doing anything with JACK, the first step is to set up the interface.
Setting up the RME interface
Install the HDSPE PCIe card or card into your computer, plug in your interface via the FireWire cable and start the system. In the case of the Multiface, you'll notice a red light shining on the front of the interface indicating a "host error." This means that the interface can't yet communicate with the computer. You need to install the firmware.
For apt users (Debian, Ubuntu, etc.)
Anyone using a .deb-based distro should enable the KX studio package repo. KX studio is a Linux distribution aimed at audio power users; it's a bit out of data so it's not a good idea to use the distro itself but its software packages are invaluable. Instructions on enabling this repo for your system are here:
Once you've got the kx repos enabled, install the following packages:
alsa-firmware alsa-firmware-loaders alsa-tools-gui cadence claudia jackd2
For .rpm users
I don't use .rpm distros so my knowledge here is limited. I know jackd2, hdspmixer, hdsploader and cadence are available as packages for RedHat-family distros. Install them and proceed to the next section.
Go to the command line and run "hdsploader." The firmware should be installed on your interface provided that the alsa-firmware package is properly installed. If there was a glowing red light on your interface it should be gone now. However, hdsploader may fail because the firmware isn't present on your system. It should tell you the directory where it expected to find the firmware and what firmware it was looking for. For example: /lib/firmware/multiface_firmware_rev11.bin is where it typically looks for Multiface firmware. If this firmware was not present, you'll need to download it directly. You can get the RME firmware by downloading this .rpm package: (link removed), unzipping it and looking in the lib/firmware directory inside the unzipoped folder.
Once your interface's firmware has been loaded, you can test whether it's available by running "hdspconf". This will bring up a simple configuration interface where you can set the interface's sample rate and some other things.
Setting up JACK
First, you need to disable PulseAudio. Open ~/.pulse/client.conf (creating the file and directory if they don't exist) and add a single line to the file:
autospawn = no
With this option set, PulseAudio will not restart itself automatically once stopped. Then, run pulseaudio --kill to stop the PulseAudio server. Run "cadence" and a window will appear with controls allowing you to start the JACK server. Try clicking on the "Start" button to see if you can start JACK with no additional configuration. In this state, it will probably be set to work with your integrated audio, not with the RME device, but that step comes later. If you can successfully start the JACK server, proceed to the next section.
If the JACK server doesn't start, you may need to start JACK for the first time using the command line. Try running "jack_control start" and then clicking the Start button in the Cadence window.
Additionally, JACK may not start or may not work properly if your system's memory is not properly set up to support realtime audio processing. This StackOverflow post may be helpful:
After changing the audio settings, you will probably need to reboot or at least log out and back in. It didn't work for me without a reboot.
Connecting JACK to the RME interface
To configure JACK to use your interface, click on the "Configure" button near the right edge of the window on Cadence's "System" tab. This will bring up Cadence's configuration window. Select your RME device in the "Input Device" and "Output Device" menus.
This point is where I had a lot of problems. I kept trying to start JACK and have it use the Multiface II, trying different configuration parameters to no avail, until I found a bug report that contained the solution:
The two important things to remember are: switch periods/buffer from 3 to 2, and set the correct number of input and output channels. Before, I was trying with just 2 or 4 channels, thinking a lower number would be more foolproof, but you need to set the exact number of channels your interface has in its current mode.
NOTE: This section is Multiface II-specific. Other interfaces have different numbers of channels, but it's probably always best to set JACK to use your interface's exact number of channels.
If you are using a frequency of 48kHz or below, you should set the number of I/O channels to 18.
If you are using a frequency over 48KHz, set the number of channels to 14.
You can set the frequency that the interface will use with the hdspconf program. Make sure the correct frequency is set with this program before trying to run the JACK server, otherwise it'll fail to start.
Whatever interface you have, you can check the number of input and output channels by running "hdspmixer". Count the number of i/o channels and configure Cadence accordingly.
If you're successful, the JACK server will boot up. If you click on "Catia" or "Claudia" on Cadence's "Tools" tab, you can bring up a GUI that will present the numerous inputs and outputs of your interface, allowing you to connect them to different sources and audio sinks. A detailed explanation of JACK and Cadence is beyond the scope of this document, but you can learn more here:
Appendix: Still want to use PulseAudio?
Many Linux apps, including unfortunately Firefox, can only play sound through PulseAudio. There's a solution: if you install the pulseaudio-module-jack package (available as both a .deb and .rpm), it'll provide the ability to use PulseAudio as a JACK source and a JACK sink. Then you can connect the JACK audio sink to the outputs of your interface, allowing you to hear PulseAudio output over your RME device.
And there you have it. Hopefully this will save others some time, when I was working on getting my Multiface II working I found the available information to be very fragmented and some resources were over 10 years old. I'd like for this post to be a current resource on making these devices run under Linux, if anyone has suggestions or things to add let me know and I'll update it.