[linux-audio-user] 2x RME Multifaces, ALSA, JACK & Ardour -> XRUNS?

Edwin Peer edwin at peer.co.za
Fri Jul 8 08:41:28 EDT 2005


Hello LAU,

I've been battling with this problem for about a week now, have searched all 
over the place and have still not found a solution. I'm hoping somebody on 
this list can help me out...

Hardware is as follows:
Dell PE1800 Dual 2.8GHz EM64T w/1GB RAM
PERC4/SC RAID5 (configured with write-back caching - bonnie++ reports 50MB/s 
block writes)
2x RME Multifaces (configured with Word clock sync/ADAT fiber cable for sync)

OS Specifics:
Gentoo Linux (fairly conservative CFLAGS=" -march=k8 -O3 -pipe")
Kernel version 2.6.12
XFS / filesystem

Goal:
Record 16 tracks using the 8 analogue inputs of the each of the two cards 
simultaneously in ardour without any XRUNs.

Symptoms:
qjackctl reports hundreds of XRUNs when the system is sitting idle with 
nothing more than the window manager (KDE 3.4.1) and Jack running. I can get 
ardour to record if I tell it to ignore XRUNs, but that's obviously not what 
I want. Strange thing is that jackd -v doesn't always report XRUNs that 
ardour and qjackctl seem to complain about. 

The different things I've tried:

1) Ingo Molnar's realtime-preempt-2.6.12-final-V0.7.51-06 patch (could only 
get it to compile with full preempt on x86_64). I've tried this as well as 
the standard Gentoo sources kernel without the patch - no apparent 
difference.

2) With and without realtime-lsm (I tried using rtlimits too, but I'm not sure 
that I had it setup correctly). The problem still occurs even if I run 
everything as root - so I don't think it's a permissions/capabilities 
problem. I've also tried various chrt -f priority levels for everything, 
including using chrt -f -p 99 on the sound card IRQs. Strange thing is that 
half of the KDE stuff (like kicker) also shows up with PR = RT in top, but 
chrt reports SCHED_OTHER, priority 0 for all of these.

3) Synchronising the two multifaces with Word clock (at 48kHz) as well as ADAT 
in (at both 48 and 96kHz). The problem is worse at 96kHz but it happens at 
48kHz too - ultimately I would like to run a 96kHz configuration, but I 
thought I'd try 48 too.

4) Various jackd settings (including various -R -P ? optional as well as all 
-p options). Problem still occurs with -p 8192.

5) Various configurations in /etc/asound.conf for binding the two cards 
together, but I must admit I don't really know what I'm doing here and 
everything has been pieced together from examples on the web. I've attached 
the current version of the file which has options for the 48 and 96kHz 
configurations of the multifaces. I've also tried leaving the ADAT and SPDIF 
channels out of  the configuration, since I'm only interested in the analogue 
inputs.

6) Tried jack and ardour without KDE running (under TWM) - no funny processes 
with RT Priority in top, but problem still persists. I suspect it may only be 
a bug in top tho', since chrt still shows sensible stuff.

7) I couldn't install Gentoo's media-sound/alsa-driver package against the 
Ingo Molnar patched sources, but the problem is still there when I compile 
alsa-driver separately (version 1.0.8 and 1.0.9b) using the standard gentoo 
kernel sources.

8) With and without NPTL (I had NTPL enabled glibc installed until I read 
about possible problems with it). I tried the LD_ASSUME_KERNEL work around 
first and eventually even recompiled glibc with USE=-nptl.

9) Tried taking qjackctl out of the loop - running jackd manually - same 
problem with ardour.

10) Recording all 18 channels with only one of the two multifaces configured 
(tested both of them) works fine in all of the above configurations that I 
tried it with - including without Ingo's RT patches. 

I'm now totally lost. I've eliminated everything I can think of and don't know 
what to try next. Any help would be greatly appreciated.

Thanks.

- Edwin

-- 
#include http://www.peer.co.za/~espeer/disclaimer.html
-------------- next part --------------
pcm.hdsp_0 {
        type hw;
        card 0;
}

ctl.hdsp_0 {
        type hw;
        card 0;
}

pcm.hdsp_1 {
	type hw;
	card 1;
}

ctl.hdsp_1 {
	type hw;
	card 1;
}

# merged card - 96Hkz channel configuration
pcm.hdsp_96k {
	type multi;

	#analogue channels
	slaves.a.pcm hdsp_0;
	slaves.a.channels 14;
	slaves.b.pcm hdsp_1;
	slaves.b.channels 14;
	bindings.0.slave a;
	bindings.0.channel 0;
	bindings.1.slave a;
	bindings.1.channel 1;
	bindings.2.slave a;
	bindings.2.channel 2;
	bindings.3.slave a;
	bindings.3.channel 3;
	bindings.4.slave a;
	bindings.4.channel 4;
	bindings.5.slave a;
	bindings.5.channel 5;
	bindings.6.slave a;
	bindings.6.channel 6;
	bindings.7.slave a;
	bindings.7.channel 7;
	bindings.8.slave b;
	bindings.8.channel 0;
	bindings.9.slave b;
	bindings.9.channel 1;
	bindings.10.slave b;
	bindings.10.channel 2;
	bindings.11.slave b;
	bindings.11.channel 3;
	bindings.12.slave b;
	bindings.12.channel 4;
	bindings.13.slave b;
	bindings.13.channel 5;
	bindings.14.slave b;
	bindings.14.channel 6;
	bindings.15.slave b;
	bindings.15.channel 7;

	#ADAT channels
	bindings.16.slave a;
	bindings.16.channel 8;
	bindings.17.slave a;
	bindings.17.channel 9;
	bindings.18.slave a;
	bindings.18.channel 10;
	bindings.19.slave a;
	bindings.19.channel 11;
	bindings.20.slave b;
	bindings.20.channel 8;
	bindings.21.slave b;
	bindings.21.channel 9;
	bindings.22.slave b;
	bindings.22.channel 10;
	bindings.23.slave b;
	bindings.23.channel 11;
			
	#SPDIF channels
	bindings.24.slave a;
        bindings.24.channel 12;
       	bindings.25.slave a;
        bindings.25.channel 13;
       	bindings.26.slave b;
        bindings.26.channel 12;
       	bindings.27.slave b;
        bindings.27.channel 13;  
}

ctl.hdsp_96k {
	type hw
	card 0
}

# merged card - 48Hkz channel configuration
pcm.hdsp_48k {
	type multi;

	#analogue channels
	slaves.a.pcm hdsp_0;
	slaves.a.channels 18;
	slaves.b.pcm hdsp_1;
	slaves.b.channels 18;
	bindings.0.slave a;
	bindings.0.channel 0;
	bindings.1.slave a;
	bindings.1.channel 1;
	bindings.2.slave a;
	bindings.2.channel 2;
	bindings.3.slave a;
	bindings.3.channel 3;
	bindings.4.slave a;
	bindings.4.channel 4;
	bindings.5.slave a;
	bindings.5.channel 5;
	bindings.6.slave a;
	bindings.6.channel 6;
	bindings.7.slave a;
	bindings.7.channel 7;
	bindings.8.slave b;
	bindings.8.channel 0;
	bindings.9.slave b;
	bindings.9.channel 1;
	bindings.10.slave b;
	bindings.10.channel 2;
	bindings.11.slave b;
	bindings.11.channel 3;
	bindings.12.slave b;
	bindings.12.channel 4;
	bindings.13.slave b;
	bindings.13.channel 5;
	bindings.14.slave b;
	bindings.14.channel 6;
	bindings.15.slave b;
	bindings.15.channel 7;

	#ADAT channels
	bindings.16.slave a;
	bindings.16.channel 8;
	bindings.17.slave a;
	bindings.17.channel 9;
	bindings.18.slave a;
	bindings.18.channel 10;
	bindings.19.slave a;
	bindings.19.channel 11;
	bindings.20.slave a;
	bindings.20.channel 12;
	bindings.21.slave a;
	bindings.21.channel 13;
	bindings.22.slave a;
	bindings.22.channel 14;
	bindings.23.slave a;
	bindings.23.channel 15;
        bindings.24.slave b;
	bindings.24.channel 8;
	bindings.25.slave b;
	bindings.25.channel 9;
	bindings.26.slave b;
	bindings.26.channel 10;
	bindings.27.slave b;
	bindings.27.channel 11;
        bindings.28.slave b;
	bindings.28.channel 12;
	bindings.29.slave b;
	bindings.29.channel 13;
	bindings.30.slave b;
	bindings.30.channel 14;
	bindings.31.slave b;
	bindings.31.channel 15;
				
	#SPDIF channels
	bindings.32.slave a;
        bindings.32.channel 16;
       	bindings.33.slave a;
        bindings.33.channel 17;
       	bindings.34.slave b;
        bindings.34.channel 16;
       	bindings.35.slave b;
        bindings.35.channel 17;  
}

ctl.hdsp_48k {
	type hw
	card 0
}

pcm.ttable_96k {
	type route;
    	slave.pcm "hdsp_96k";
    	ttable.0.0 1;
    	ttable.1.1 1;
    	ttable.2.2 1;
    	ttable.3.3 1;
    	ttable.4.4 1;
    	ttable.5.5 1;
    	ttable.6.6 1;
    	ttable.7.7 1;
    	ttable.8.8 1;
    	ttable.9.9 1;
    	ttable.10.10 1;
    	ttable.11.11 1;
    	ttable.12.12 1;
    	ttable.13.13 1;
    	ttable.14.14 1;
    	ttable.15.15 1;
    	ttable.16.16 1;
    	ttable.17.17 1;
    	ttable.18.18 1;
    	ttable.19.19 1;
    	ttable.20.20 1;
    	ttable.21.21 1;
    	ttable.22.22 1;
    	ttable.23.23 1;
    	ttable.24.24 1;
    	ttable.25.25 1;
    	ttable.26.26 1;
    	ttable.27.27 1;
}

ctl.ttable_96k {
    	type hw;
    	card = 0;
}

pcm.ttable_48k {
    	type route;
    	slave.pcm "hdsp_48k";
    	ttable.0.0 1;
    	ttable.1.1 1;
    	ttable.2.2 1;
    	ttable.3.3 1;
    	ttable.4.4 1;
    	ttable.5.5 1;
    	ttable.6.6 1;
    	ttable.7.7 1;
    	ttable.8.8 1;
    	ttable.9.9 1;
    	ttable.10.10 1;
    	ttable.11.11 1;
    	ttable.12.12 1;
    	ttable.13.13 1;
    	ttable.14.14 1;
    	ttable.15.15 1;
    	ttable.16.16 1;
    	ttable.17.17 1;
    	ttable.18.18 1;
    	ttable.19.19 1;
    	ttable.20.20 1;
    	ttable.21.21 1;
    	ttable.22.22 1;
    	ttable.23.23 1;
    	ttable.24.24 1;
    	ttable.25.25 1;
    	ttable.26.26 1;
    	ttable.27.27 1;
    	ttable.28.28 1;
    	ttable.29.29 1;
    	ttable.30.30 1;
    	ttable.31.31 1;
    	ttable.32.32 1;
    	ttable.33.33 1;
    	ttable.34.34 1;
    	ttable.35.35 1;
}

ctl.ttable_48k {
    	type hw;
    	card = 0;
}


More information about the Linux-audio-user mailing list