very frequent FFADO Xrun with Saffire Pro 26

Optimize your system for ultimate performance.

Moderators: MattKingUSA, khz

Post Reply
User avatar
Boorhin
Posts: 2
Joined: Fri May 25, 2018 3:56 pm
Contact:

very frequent FFADO Xrun with Saffire Pro 26

Post by Boorhin »

Dear all,
I recently acquired a Saffire pro 26. I used to have a simple Behringer usb interface whuch was working like a charm. However with the fancy saffire, I have an incredible number of Xrun (every few seconds) on what I believe is a fairly good configuration (dual 6 core xeon with 96Gb ram). After having read plenty on the subject I cannot find any reason why these happen.
Some details:
Ubuntu 16.04.03 LTS
Kernel 4.4.0-21-lowlatency
User in audiogroup
I use pulseaudio jack sink.
The kind of messages I get:
Fri May 25 20:21:25 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
20:21:28.418 XRUN callback (109).
Jack: JackClient::ClientNotify ref = 3 name = qjackctl notify = 3
Jack: JackClient::kXRunCallback
Fri May 25 20:21:28 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:21:28 2018: Jack: JackRequest::Notification
Fri May 25 20:21:28 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:28 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:28 2018: Jack: JackClient::ClientNotify ref = 2 name = dbusapi notify = 3
Fri May 25 20:21:28 2018: Jack: JackClient::kXRunCallback
Fri May 25 20:21:28 2018: Jack: JackExternalClient::ClientNotify ref = 3 client = qjackctl name = qjackctl notify = 3
Fri May 25 20:21:28 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:28 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:28 2018: Jack: FFADO XRun
Fri May 25 20:21:28 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:21:28 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:21:28 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
20:21:29.726 XRUN callback (110).
Jack: JackClient::ClientNotify ref = 3 name = qjackctl notify = 3
Jack: JackClient::kXRunCallback
Fri May 25 20:21:29 2018: Jack: FFADO XRun
Fri May 25 20:21:29 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:21:29 2018: Jack: JackRequest::Notification
Fri May 25 20:21:29 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:29 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:29 2018: Jack: JackClient::ClientNotify ref = 2 name = dbusapi notify = 3
Fri May 25 20:21:29 2018: Jack: JackClient::kXRunCallback
Fri May 25 20:21:29 2018: Jack: JackExternalClient::ClientNotify ref = 3 client = qjackctl name = qjackctl notify = 3
Fri May 25 20:21:29 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:29 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:29 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:21:29 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:21:29 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
20:21:30.945 XRUN callback (111).
Jack: JackClient::ClientNotify ref = 3 name = qjackctl notify = 3
Jack: JackClient::kXRunCallback
Fri May 25 20:21:30 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:21:30 2018: Jack: FFADO XRun
Fri May 25 20:21:30 2018: Jack: JackRequest::Notification
Fri May 25 20:21:30 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:30 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:30 2018: Jack: JackClient::ClientNotify ref = 2 name = dbusapi notify = 3
Fri May 25 20:21:30 2018: Jack: JackClient::kXRunCallback
Fri May 25 20:21:30 2018: Jack: JackExternalClient::ClientNotify ref = 3 client = qjackctl name = qjackctl notify = 3
Fri May 25 20:21:30 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:30 2018: Jack: JackEngine::ClientNotify: no callback for notification = 3
Fri May 25 20:21:30 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:21:30 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:21:30 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
20:21:31.041 XRUN callback (1 skipped).
Fri May 25 20:21:40 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:21:40 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:21:40 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:21:40 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
Fri May 25 20:21:50 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:21:50 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:21:50 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:21:50 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
Fri May 25 20:22:00 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:22:00 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:22:00 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:22:00 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
Fri May 25 20:22:10 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:22:10 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:22:10 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:22:10 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
Fri May 25 20:22:20 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 57
Fri May 25 20:22:20 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 2 fd = 58
Fri May 25 20:22:20 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 3 fd = 63
Fri May 25 20:22:20 2018: Jack: JackSocketServerChannel::Execute : fPollTable i = 4 fd = 71
I share the IRQ of the firewire with a USB bus which is not in use (I actually have deactivated it from the Bios at some point)

Any suggestion?

Thanks in advance

Edit: I am adding some more information about the config of jack
Driver is set on firewire
Sampling 48 KHz
512 frames
3 cycles
priority 70
rest is by default.
I have the script to get the bridge with pulseaudio working with Qjackctl

Nothing in dmesg that shows anything abnormal.
ffado diagnostics gives these outdated outputs. I don't find up to date info on PKG_CONFIG_PATH
$ ffado-diag

FFADO diagnostic utility 2.3.9999
============================
(C) 2008 Pieter Palmers
2009-2010 Arnold Krille


=== CHECK ===
Base system...
kernel version............ 4.4.0-21-lowlatency
Preempt (low latency)... True
RT patched.............. False
old 1394 stack present.... False
old 1394 stack loaded..... False
old 1394 stack active..... False
new 1394 stack present.... True
new 1394 stack loaded..... True
new 1394 stack active..... True
/dev/raw1394 node present. False
/dev/fw* permissions:
crw------- 1 root root 246, 0 May 25 17:57 /dev/fw0
crw-rw----+ 1 root audio 246, 1 May 25 17:57 /dev/fw1
User IDs:
uid=1000(julien) gid=1000(julien) groups=1000(julien),4(adm),24(cdrom),27(sudo),29(audio),30(dip),46(plugdev),112(lpadmin),124(sambashare)
Prerequisites (dynamic at run-time)...
gcc ............... gcc (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609
g++ ............... g++ (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609
PyQt4 (by pyuic4) . sh: 1: pyuic4: not found
jackd ............. jackdmp version 1.9.12 tmpdir /dev/shm protocol 8
path ............ /usr/bin/jackd
flags ........... Package jack was not found in the pkg-config search path.
Perhaps you should add the directory containing `jack.pc'
to the PKG_CONFIG_PATH environment variable
No package 'jack' found
libraw1394 ........ Package libraw1394 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libraw1394.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libraw1394' found
flags ........... Package libraw1394 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libraw1394.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libraw1394' found
libavc1394 ........ Package libavc1394 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libavc1394.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libavc1394' found
flags ........... Package libavc1394 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libavc1394.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libavc1394' found
libiec61883 ....... Package libiec61883 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libiec61883.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libiec61883' found
flags ........... Package libiec61883 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libiec61883.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libiec61883' found
libxml++-2.6 ...... Package libxml++-2.6 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libxml++-2.6.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libxml++-2.6' found
flags ........... Package libxml++-2.6 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libxml++-2.6.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libxml++-2.6' found
dbus-1 ............ Package dbus-1 was not found in the pkg-config search path.
Perhaps you should add the directory containing `dbus-1.pc'
to the PKG_CONFIG_PATH environment variable
No package 'dbus-1' found
flags ........... Package dbus-1 was not found in the pkg-config search path.
Perhaps you should add the directory containing `dbus-1.pc'
to the PKG_CONFIG_PATH environment variable
No package 'dbus-1' found
Prerequisites (static at compile-time)...
gcc ............... gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
g++ ............... g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
PyQt4 (by pyuic4) . Python User Interface Compiler 4.11.4 for Qt version 4.8.7
jackd ............. sh: 1: jackd: not found
path ............
flags ........... Package jack was not found in the pkg-config search path.
libraw1394 ........ 2.1.1
flags ........... -lraw1394
libavc1394 ........ Package libavc1394 was not found in the pkg-config search path.
flags ........... Package libavc1394 was not found in the pkg-config search path.
libiec61883 ....... 1.2.0
flags ........... -liec61883 -lraw1394
libxml++-2.6 ...... 2.40.1
flags ........... -std=c++11 -I/usr/include/libxml++-2.6 -I/usr/lib/x86_64-linux-gnu/libxml++-2.6/include -I/usr/include/libxml2 -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -lxml++-2.6 -lxml2 -lglibmm-2.4 -lgobject-2.0 -lglib-2.0 -lsigc-2.0
dbus-1 ............ 1.10.6
flags ........... -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -ldbus-1
uname -a...
Linux Chalk-Geophysics 4.4.0-21-lowlatency #37-Ubuntu SMP PREEMPT Mon Apr 18 20:20:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Hardware...
Host controllers:
07:0a.0 FireWire (IEEE 1394) [0c00]: Texas Instruments TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] [104c:8023] (prog-if 10 [OHCI])
Subsystem: Dell TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] [1028:026d]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 1000ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 18
Region 0: Memory at f3afb000 (32-bit, non-prefetchable) [size=2K]
Region 1: Memory at f3afc000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: firewire_ohci
Kernel modules: firewire_ohci

CPU info:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 24
On-line CPU(s) list: 0-23
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Model name: Intel(R) Xeon(R) CPU E5645 @ 2.40GHz
Stepping: 2
CPU MHz: 1596.000
CPU max MHz: 2395.0000
CPU min MHz: 1596.0000
BogoMIPS: 4787.80
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0-5,12-17
NUMA node1 CPU(s): 6-11,18-23
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
Configuration...
IRQ information
Hardware Interrupts:
--------------------
IRQ 0: PID: None, count: [266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['2-edge timer']
IRQ 1: PID: None, count: [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['1-edge i8042']
IRQ 8: PID: None, count: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['8-edge rtc0']
IRQ 9: PID: None, count: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['9-fasteoi acpi']
IRQ 12: PID: None, count: [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['12-edge i8042']
IRQ 16: PID: None, count: [17944, 0, 0, 0, 0, 0, 97235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['16-fasteoi uhci_hcd:usb3', 'ioc0']
IRQ 17: PID: None, count: [715, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['17-fasteoi uhci_hcd:usb4', 'uhci_hcd:usb7']
IRQ 18: PID: None, count: [85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6825270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['18-fasteoi uhci_hcd:usb8', 'firewire_ohci']
IRQ 22: PID: None, count: [139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['22-fasteoi ehci_hcd:usb1', 'uhci_hcd:usb5']
IRQ 23: PID: None, count: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['23-fasteoi ehci_hcd:usb2', 'uhci_hcd:usb6']
IRQ 26: PID: None, count: [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6450, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['512000-edge ahci0']
IRQ 27: PID: None, count: [115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0], Sched None (priority None), drivers: ['512001-edge ahci1']
IRQ 28: PID: None, count: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['512002-edge ahci2']
IRQ 31: PID: None, count: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['512005-edge ahci5']
IRQ 43: PID: None, count: [565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['442368-edge snd_hda_intel']
IRQ 44: PID: None, count: [475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['10-fasteoi snd_hda_intel']
IRQ 45: PID: None, count: [116, 0, 0, 0, 0, 0, 0, 0, 0, 54610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['3145728-edge enp6s0']
IRQ 46: PID: None, count: [90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 836456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['1572864-edge nvidia']
IRQ 72: PID: None, count: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['0-edge dmar0']
IRQ 73: PID: None, count: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Sched None (priority None), drivers: ['1-edge dmar1']

Software Interrupts:
--------------------


=== REPORT ===
FireWire kernel drivers:

The new FireWire kernel stack is loaded.
If running a kernel earlier than 2.6.37 and problems are experienced, either
try with the old Firewire kernel stack or upgrade to a newer kernel
(preferrably 2.6.37 or later).
Boorhin
Fuzz-powered
dijksterhuis
Posts: 2
Joined: Mon Mar 01, 2021 3:35 pm

Re: very frequent FFADO Xrun with Saffire Pro 26

Post by dijksterhuis »

Heya, I was having the same issues with my saffire pro 40 over firewire. When using Jack + firewire (FFADO) was getting XRuns every few seconds causing Reaper transport to halt (basically unusable). Using ALSA in Reaper transport was fine, but instead introduced audible glitches every few seconds on recording audio tracks -- so probably XRuns again, just being handled slightly differently.

HOWEVER. I've just applied a few settings from linuxaudio.com -- system configuration and now I'm getting zero Xruns in jack with reaper.

Here's the set up:

Kernel: 4.15.0-136-lowlatency
OS: Ubuntu 18.04.5 LTS.

Reaper: 6.14
FFADO: 2.4.4 (installed from source)
Qjackctl: 0.4.5

Device Name: Pro40-00de11


Not changed:

Code: Select all

$ cat /boot/config-4.15.0-135-lowlatency  | grep PREEMPT
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_PREEMPTIRQ_EVENTS is not set
# CONFIG_PREEMPT_TRACER is not set
I would have thought I would need the performance CPU flags, but apparently not!

Code: Select all

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
powersave
powersave
powersave
powersave
powersave
powersave

Code: Select all

$ groups dijksterhuis
dijksterhuis : dijksterhuis adm cdrom sudo audio dip plugdev lpadmin sambashare docker vboxusers

Code: Select all

$ cat .jackdrc 
/usr/bin/jackd -v -P75 -dfirewire -r44100 -p256 -n3
Jack Config:
- Enable D-Bus interface: YES
- Enable JACK D-Bus interface: YES
- Enable ALSA Sequencer Support: NO
- Pulse audio JACK sink/source module is installed and correctly auto detects.

Changed:

Code: Select all

$ cat /etc/security/limits.conf | grep audio
@audio - rtprio 90
@audio - memlock 500000

Code: Select all

$ cat /etc/default/grub.conf
...
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs"
GRUB_CMDLINE_LINUX=""
...
mitigations=off   # ===> this will turn off spectre / meltdown mitigations and affects system security, consider yourself warned!
So, for me, it looked like one of:
- Spectre/Meltdown mitigation turned off
- setting security limits
- adding `threadirqs` to kernel

Previous `grub.conf`:

Code: Select all

$ cat /etc/default/grub.conf.bak
...
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
...

Also... looks like you haven't fully installed all the dependencies for FFADO?
Soft: Ubuntu 18.04 w/ Reaper 6.
Hard: Focusrite Saffire Pro 40, MS200R, Elektron Octatrack Mk I, Elektron Analog Four Mk I, Waldorf Pulse 2, Korg ER-1, Esoniq ESQ-1, Volca Keys, Alesis Quadraverb, M-Audio Code 61.

whoami.dijksterhuis.co.uk
User avatar
autostatic
Established Member
Posts: 1994
Joined: Wed Dec 09, 2009 5:26 pm
Location: Beverwijk, The Netherlands
Has thanked: 32 times
Been thanked: 104 times
Contact:

Re: very frequent FFADO Xrun with Saffire Pro 26

Post by autostatic »

dijksterhuis wrote: Mon Mar 01, 2021 7:06 pm Kernel: 4.15.0-136-lowlatency

Code: Select all

$ cat /etc/default/grub.conf
...
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs"
GRUB_CMDLINE_LINUX=""
...
mitigations=off   # ===> this will turn off spectre / meltdown mitigations and affects system security, consider yourself warned!
I've updated https://wiki.linuxaudio.org/wiki/system ... itigations and added where the mitigations=off line has to be put as in your case it won't do anything. Thanks for posting though, it made me spot the error so I could fix it in the wiki!
dijksterhuis wrote: Mon Mar 01, 2021 7:06 pm- adding `threadirqs` to kernel
You're using a lowlatency kernel so threadirqs shouldn't be needed. You can check with the grep command from the wiki though if you need it or not.

When it comes to the Saffire Pro, I've had a Pro 10 and a Pro 40 and in my case I had to free the firewire interrupt completely otherwise they wouldn't work properly. I made notes about that in the linuxaudio.org System Configuration wiki too.
dijksterhuis
Posts: 2
Joined: Mon Mar 01, 2021 3:35 pm

Re: very frequent FFADO Xrun with Saffire Pro 26

Post by dijksterhuis »

autostatic wrote: Mon Mar 01, 2021 7:35 pm
dijksterhuis wrote: Mon Mar 01, 2021 7:06 pm

Code: Select all

$ cat /etc/default/grub.conf
...
mitigations=off   # ===> this will turn off spectre / meltdown mitigations and affects system security, consider yourself warned!
I've updated https://wiki.linuxaudio.org/wiki/system ... itigations and added where the mitigations=off line has to be put as in your case it won't do anything. Thanks for posting though, it made me spot the error so I could fix it in the wiki!
Ah, fair enough! Seemed a bit weird having a lowercase flag when everything else was upper. I should probably have spotted that!
autostatic wrote: Mon Mar 01, 2021 7:35 pm
dijksterhuis wrote: Mon Mar 01, 2021 7:06 pm- adding `threadirqs` to kernel
You're using a lowlatency kernel so threadirqs shouldn't be needed. You can check with the grep command from the wiki though if you need it or not.
On IRQ threading, the guide says:
If it returns CONFIG_IRQ_FORCED_THREADING=y and CONFIG_PREEMPT_RT=y then your kernel is using IRQ threading and you don't have to proceed with the following steps. If it only returns CONFIG_IRQ_FORCED_THREADING=y you can add the threadirqs boot option as described below. If the command returns nothing you have a kernel that cannot use threaded IRQs.
And I got:

Code: Select all

$ grep -e "CONFIG_IRQ_FORCED_THREADING=y" -e "CONFIG_PREEMPT_RT=y" /boot/config-`uname -r`
CONFIG_IRQ_FORCED_THREADING=y
Although after applying that change it doesn't add the `"CONFIG_PREEMPT_RT=y "` flag. So guess it wasn't that and makes sense it doesn't enable as I guess that's dependent on the RT kernel.
autostatic wrote: Mon Mar 01, 2021 7:35 pm When it comes to the Saffire Pro, I've had a Pro 10 and a Pro 40 and in my case I had to free the firewire interrupt completely otherwise they wouldn't work properly. I made notes about that in the linuxaudio.org System Configuration wiki too.
Didn't notice that. Any chance you could hard link?

----

Based on all that @Boorhin, seems that my issue was probably solved with the `/etc/security/limits.conf` changes.
Soft: Ubuntu 18.04 w/ Reaper 6.
Hard: Focusrite Saffire Pro 40, MS200R, Elektron Octatrack Mk I, Elektron Analog Four Mk I, Waldorf Pulse 2, Korg ER-1, Esoniq ESQ-1, Volca Keys, Alesis Quadraverb, M-Audio Code 61.

whoami.dijksterhuis.co.uk
User avatar
autostatic
Established Member
Posts: 1994
Joined: Wed Dec 09, 2009 5:26 pm
Location: Beverwijk, The Netherlands
Has thanked: 32 times
Been thanked: 104 times
Contact:

Re: very frequent FFADO Xrun with Saffire Pro 26

Post by autostatic »

@Boorhin Sorry for hijacking your thread a bit :shock: But it partly applies to your situation too so I'm allowed hopefully :roll:
dijksterhuis wrote: Mon Mar 01, 2021 8:01 pm On IRQ threading, the guide says:
If it returns CONFIG_IRQ_FORCED_THREADING=y and CONFIG_PREEMPT_RT=y then your kernel is using IRQ threading and you don't have to proceed with the following steps. If it only returns CONFIG_IRQ_FORCED_THREADING=y you can add the threadirqs boot option as described below. If the command returns nothing you have a kernel that cannot use threaded IRQs.
And I got:

Code: Select all

$ grep -e "CONFIG_IRQ_FORCED_THREADING=y" -e "CONFIG_PREEMPT_RT=y" /boot/config-`uname -r`
CONFIG_IRQ_FORCED_THREADING=y
Although after applying that change it doesn't add the `"CONFIG_PREEMPT_RT=y "` flag. So guess it wasn't that and makes sense it doesn't enable as I guess that's dependent on the RT kernel.
That might be another error you've spotted there, I'll double check that part of the wiki!
dijksterhuis wrote: Mon Mar 01, 2021 8:01 pm
autostatic wrote: Mon Mar 01, 2021 7:35 pm When it comes to the Saffire Pro, I've had a Pro 10 and a Pro 40 and in my case I had to free the firewire interrupt completely otherwise they wouldn't work properly. I made notes about that in the linuxaudio.org System Configuration wiki too.
Didn't notice that. Any chance you could hard link?
It's here: https://wiki.linuxaudio.org/wiki/system ... _use_rtirq
I thought I had to completely isolate it by unbinding stuff but apparently rtirq (or rtirq-init) did the trick.
User avatar
sunrat
Established Member
Posts: 915
Joined: Wed Jul 22, 2020 2:08 pm
Has thanked: 151 times
Been thanked: 242 times

Re: very frequent FFADO Xrun with Saffire Pro 26

Post by sunrat »

dijksterhuis wrote: Mon Mar 01, 2021 8:01 pm

Code: Select all

$ grep -e "CONFIG_IRQ_FORCED_THREADING=y" -e "CONFIG_PREEMPT_RT=y" /boot/config-`uname -r`
CONFIG_IRQ_FORCED_THREADING=y
Although after applying that change it doesn't add the `"CONFIG_PREEMPT_RT=y "` flag. So guess it wasn't that and makes sense it doesn't enable as I guess that's dependent on the RT kernel.
You'd need a different kernel or recompile that one to add CONFIG_PREEMPT_RT=y . Your old low-latency kernel would not be RT . Have you tried an RT kernel? Might make a difference, or might not.
Based on all that @Boorhin, seems that my issue was probably solved with the `/etc/security/limits.conf` changes.
You still might get an improvement with performance governor, and again maybe not. Did you run the RealtimeConfigQuickScan?

I too just realised I'm not replying to OP @Boorhin but still valid points and maybe some disambiguation.
fizzlepop
Established Member
Posts: 24
Joined: Sat Oct 29, 2016 12:56 pm

Re: very frequent FFADO Xrun with Saffire Pro 26

Post by fizzlepop »

I'm curious to see how this works out for Boorhin.

I don't mean to hijack. I just saw firewire in the thread title, and I'm wondering how important the firewire controller and chipset is for firewire performance with linux. I know that with windows systems it was always recommended not to use the onboard firewire controller and to get a firewire controller card with a texas instruments chipset for firewire audio performance. I did that on my desktop under windows and performance still wasn't that great, although better than using the onboard firewire controller. I ended up using my profire 2626 as an adat front end with an RME card and performance was excellent under windows and very good under linux. I was thinking of picking up a firewire expresscard so that I can use my old 2626 with a laptop and maybe get better latency performance. I'm currently using the onboard firewire controller. It works but I have to use too big of a buffer to make latency performance low enough to be comfortable for real-time use. Maybe someone here has worked through this stuff under linux and can recommend how to go.
Post Reply