The attached patch provides support for the Steinberg UR44 USB Audio Interface. It’s nothing more than Clemens’ patch to support the UR22 (http://linuxaudio.org/mailarchive/lad/2013/2/23/197831), with the device ID modified for the UR44. The patch was tested with kernel versions 3.12.11 and 3.12.12 and I have primarily used it with a PREEMPT RT-patched 3.12.12-rt kernel. I would imagine there are additional features of this audio interface that aren’t supported by the patch, but basic recording and playback seems to work.
I should note that on one of the systems that I used to test the patch I was never able to achieve xrun-free JACK performance at -p256 -n3 as I would invariably see xruns roughly once every minute. But this is a new box (Intel haswell NUC) and it seems there are many possible sources of the unacceptable latency. The good news is that an older i3 box, the performance was much better. Still, at some point it would be nice to understand if the problem lies in 1) the device, 2) the ALSA drivers, 3) the USB drivers, 4) IRQ handling, 5) CPU-specific features (power saving modes, SMIs, etc…) or 6) somewhere else. In the meantime, the patch at least makes the kernel recognize and talk to the UR44.
Thanks in advance for any comments/suggestions on the patch.
Cyrus
On Mar 10, 2014, at 5:07 AM, Clemens Ladisch clemens@ladisch.de wrote:
Cyrus Harmon wrote:
Signed-off-by: Cyrus Harmon cyrus@bobobeach.com
sound/usb/quirks-table.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
What kernel version did you test this patch with?
Regards, Clemens
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index f652b10..987ca01 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -436,6 +436,36 @@ YAMAHA_DEVICE(0x105d, NULL), } } }, +{
- USB_DEVICE(0x0499, 0x150e),
- .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
/* .vendor_name = "Yamaha", */
/* .product_name = "Steinberg UR44", */
.ifnum = QUIRK_ANY_INTERFACE,
.type = QUIRK_COMPOSITE,
.data = (const struct snd_usb_audio_quirk[]) {
{
.ifnum = 1,
.type = QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.ifnum = 2,
.type = QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.ifnum = 3,
.type = QUIRK_MIDI_YAMAHA
},
{
.ifnum = 4,
.type = QUIRK_IGNORE_INTERFACE
},
{
.ifnum = -1
}
}
- }
+}, YAMAHA_DEVICE(0x2000, "DGP-7"), YAMAHA_DEVICE(0x2001, "DGP-5"), YAMAHA_DEVICE(0x2002, NULL),