Bug 1178514 - libffado cannot create realtime thread - operation not permitted
Summary: libffado cannot create realtime thread - operation not permitted
Keywords:
Status: CLOSED EOL
Alias: None
Product: Fedora
Classification: Fedora
Component: libffado
Version: 21
Hardware: x86_64
OS: Linux
unspecified
urgent
Target Milestone: ---
Assignee: Brendan Jones
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-01-04 13:32 UTC by Simon Lewis
Modified: 2015-12-02 16:57 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2015-12-02 06:52:53 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Simon Lewis 2015-01-04 13:32:31 UTC
Description of problem:

ffado / libffado packages do not install required /etc/security/limits.d security configration to run firewire devices with jackd.

libffado can not creat realtinme thread when starting jackd

Terminal output:

13:25:12.373 JACK wurde mit PID = 3182 gestartet.
no message buffer overruns
no message buffer overruns
no message buffer overruns
jackdmp 1.9.10
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2014 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK server starting in realtime mode with priority 20
self-connect-mode is "Don't restrict self connect requests"
1420287912685164:  (ffado.cpp)[  92] ffado_streaming_init: libffado 2.2.1-Unversioned directory built Aug 17 2014 10:15:13
1420287912687582: [31mError (PosixThread.cpp)[ 161] Start: Cannot create realtime thread (1: Operation not permitted)
[0m1420287912687597: [31mError (PosixThread.cpp)[ 162] Start:  priority: 25
[0mfirewire ERR: FFADO: Error creating virtual device
Cannot attach audio driver
JackServer::Open failed with -1
no message buffer overruns
Failed to open server
13:25:12.718 JACK wurde angehalten


Standard fedora kennel is running with rt-premption:

bash-4.3$ ulimit -r -l
real-time priority              (-r) 20
max locked memory       (kbytes, -l) 4194304


According to /usr/lib/udev/rules.d/60-ffado.rules all firewire devices are added to the group "audio"


My user is a menber of the group "audio" amongst others:

bash-4.3$ groups | grep audio
simon audio jackuser pulse-rt


My firewaire device is discovered and can be configured with ffado-mixer:

bash-4.3$ ffado-test ListDevices
-----------------------------------------------
FFADO test and diagnostic utility
Part of the FFADO project -- www.ffado.org
Version: 2.2.1-Unversioned directory
(C) 2008, Daniel Wagner, Pieter Palmers
This program comes with ABSOLUTELY NO WARRANTY.
-----------------------------------------------

=== 1394 PORT 0 ===
  Node id  GUID                  VendorId     ModelId   Vendor - Model
   0       0x00130e0401c07336  0x0000130E  0x00000007   Focusrite - SAFFIRE_PRO_24
no message buffer overruns
bash-4.3$ 


and 

bash-4.3$ ffado-test Discover                
-----------------------------------------------
FFADO test and diagnostic utility
Part of the FFADO project -- www.ffado.org
Version: 2.2.1-Unversioned directory
(C) 2008, Daniel Wagner, Pieter Palmers
This program comes with ABSOLUTELY NO WARRANTY.
-----------------------------------------------

03656957859: Debug (devicemanager.cpp)[ 354] discover: Starting discovery...
03657048657: Debug (Configuration.cpp)[ 163] showSetting:   Group: (null)
03657048756: Debug (Configuration.cpp)[ 185] showSetting:     vendorid = 4878 (0x0000130E)
03657048788: Debug (Configuration.cpp)[ 185] showSetting:     modelid = 7 (0x00000007)
03657048832: Debug (Configuration.cpp)[ 209] showSetting:     vendorname = Focusrite
03657048861: Debug (Configuration.cpp)[ 209] showSetting:     modelname = Saffire PRO 24
03657048894: Debug (Configuration.cpp)[ 209] showSetting:     driver = DICE
03657048945: Debug (Configuration.cpp)[ 209] showSetting:     mixer = Saffire_Dice
03657049224: Debug (Configuration.cpp)[ 163] showSetting:   Group: (null)
03657049299: Debug (Configuration.cpp)[ 185] showSetting:     vendorid = 4878 (0x0000130E)
03657049348: Debug (Configuration.cpp)[ 185] showSetting:     modelid = 7 (0x00000007)
03657049385: Debug (Configuration.cpp)[ 209] showSetting:     vendorname = Focusrite
03657049415: Debug (Configuration.cpp)[ 209] showSetting:     modelname = Saffire PRO 24
03657049439: Debug (Configuration.cpp)[ 209] showSetting:     driver = DICE
03657049469: Debug (Configuration.cpp)[ 209] showSetting:     mixer = Saffire_Dice
03657049602: Debug (Configuration.cpp)[ 163] showSetting:   Group: (null)
03657049639: Debug (Configuration.cpp)[ 185] showSetting:     vendorid = 4878 (0x0000130E)
03657049663: Debug (Configuration.cpp)[ 185] showSetting:     modelid = 7 (0x00000007)
03657049694: Debug (Configuration.cpp)[ 209] showSetting:     vendorname = Focusrite
03657049718: Debug (Configuration.cpp)[ 209] showSetting:     modelname = Saffire PRO 24
03657049748: Debug (Configuration.cpp)[ 209] showSetting:     driver = DICE
03657049771: Debug (Configuration.cpp)[ 209] showSetting:     mixer = Saffire_Dice
03657049893: Debug (Configuration.cpp)[ 163] showSetting:   Group: (null)
03657049920: Debug (Configuration.cpp)[ 185] showSetting:     vendorid = 4878 (0x0000130E)
03657049950: Debug (Configuration.cpp)[ 185] showSetting:     modelid = 7 (0x00000007)
03657049975: Debug (Configuration.cpp)[ 209] showSetting:     vendorname = Focusrite
03657050018: Debug (Configuration.cpp)[ 209] showSetting:     modelname = Saffire PRO 24
03657050045: Debug (Configuration.cpp)[ 209] showSetting:     driver = DICE
03657050081: Debug (Configuration.cpp)[ 209] showSetting:     mixer = Saffire_Dice
03657050213: Debug (Configuration.cpp)[ 163] showSetting:   Group: (null)
03657050249: Debug (Configuration.cpp)[ 185] showSetting:     vendorid = 4878 (0x0000130E)
03657050273: Debug (Configuration.cpp)[ 185] showSetting:     modelid = 7 (0x00000007)
03657050304: Debug (Configuration.cpp)[ 209] showSetting:     vendorname = Focusrite
03657050327: Debug (Configuration.cpp)[ 209] showSetting:     modelname = Saffire PRO 24
03657050357: Debug (Configuration.cpp)[ 209] showSetting:     driver = DICE
03657050380: Debug (Configuration.cpp)[ 209] showSetting:     mixer = Saffire_Dice
03657050535: Debug (devicemanager.cpp)[ 616] discover: driver found for device 0
03657050632: Debug (Configuration.cpp)[ 163] showSetting:   Group: (null)
03657050668: Debug (Configuration.cpp)[ 185] showSetting:     vendorid = 4878 (0x0000130E)
03657050693: Debug (Configuration.cpp)[ 185] showSetting:     modelid = 7 (0x00000007)
03657050723: Debug (Configuration.cpp)[ 209] showSetting:     vendorname = Focusrite
03657050747: Debug (Configuration.cpp)[ 209] showSetting:     modelname = Saffire PRO 24
03657050777: Debug (Configuration.cpp)[ 209] showSetting:     driver = DICE
03657050800: Debug (Configuration.cpp)[ 209] showSetting:     mixer = Saffire_Dice
03657155334: Debug (devicemanager.cpp)[ 653] discover: discovery of node 0 on port 0 done...
03657155354: Debug (devicemanager.cpp)[ 661] discover: Discovery finished...
03657155371: Debug (devicemanager.cpp)[1258] showDeviceInfo: ===== Device Manager =====
03657155379: Debug (Element.cpp)[ 121] show: Element DeviceManager
03657155388: Debug (devicemanager.cpp)[1266] showDeviceInfo: --- IEEE1394 Service  0 ---
Iso handler info:
Dumping IsoHandlerManager Stream handler information...
 State: 2
03657155416: Debug (devicemanager.cpp)[1276] showDeviceInfo: --- Device  0 ---
03657155427: Debug (dice_avdevice.cpp)[ 703] showDevice: Device is a DICE device
03657155765: Debug (ffadodevice.cpp)[ 215] showDevice: Attached to port.......: 0 (/dev/fw1)
03657155773: Debug (ffadodevice.cpp)[ 216] showDevice: Node...................: 0
03657155783: Debug (ffadodevice.cpp)[ 218] showDevice: Vendor name............: Focusrite
03657155789: Debug (ffadodevice.cpp)[ 220] showDevice: Model name.............: SAFFIRE_PRO_24
03657155799: Debug (ffadodevice.cpp)[ 222] showDevice: GUID...................: 00130e0401c07336
03657155809: Debug (ffadodevice.cpp)[ 227] showDevice: Assigned ID....: 00130e0401c07336
03657156136:  (dice_avdevice.cpp)[ 706] showDevice:  DICE Parameter Space info:
03657156143:  (dice_avdevice.cpp)[ 707] showDevice:   Global  : offset=0x0028 size=0360
03657156154:  (dice_avdevice.cpp)[ 708] showDevice:   TX      : offset=0x0190 size=0568
03657156158:  (dice_avdevice.cpp)[ 709] showDevice:                 nb=   1 size=0280
03657156166:  (dice_avdevice.cpp)[ 710] showDevice:   RX      : offset=0x03C8 size=1128
03657156170:  (dice_avdevice.cpp)[ 711] showDevice:                 nb=   1 size=0280
03657156181:  (dice_avdevice.cpp)[ 712] showDevice:   UNUSED1 : offset=0x0830 size=0016
03657156187:  (dice_avdevice.cpp)[ 713] showDevice:   UNUSED2 : offset=0x0000 size=0000
03657156202:  (dice_avdevice.cpp)[ 715] showDevice:  Global param space:
03657157964:  (dice_avdevice.cpp)[ 718] showDevice:   Owner            : 0x00000000FFFF0000
03657159418:  (dice_avdevice.cpp)[ 721] showDevice:   Notification     : 0x00000000
03657162674:  (dice_avdevice.cpp)[ 724] showDevice:   Nick name        : Pro24-007336
03657164175:  (dice_avdevice.cpp)[ 728] showDevice:   Clock Select     : 0x02 0x0C
03657165563:  (dice_avdevice.cpp)[ 732] showDevice:   Enable           : false
03657167146:  (dice_avdevice.cpp)[ 736] showDevice:   Clock Status     : locked 0x02
03657168644:  (dice_avdevice.cpp)[ 739] showDevice:   Extended Status  : 0x00000000
03657170222:  (dice_avdevice.cpp)[ 742] showDevice:   Samplerate       : 0x0000BB80 (48000)
03657172472:  (dice_avdevice.cpp)[ 745] showDevice:   Version          : 0x01000400
03657173975:  (dice_avdevice.cpp)[ 754] showDevice:   Version          : 0x01000400 (1.0.4.0)
03657175462:  (dice_avdevice.cpp)[ 757] showDevice:   Clock caps       : 0x112C001E
03657177334:  (dice_avdevice.cpp)[ 760] showDevice:   Clock sources    :
03657177358:  (dice_avdevice.cpp)[ 766] showDevice:     AES1
03657177381:  (dice_avdevice.cpp)[ 766] showDevice:     AES2
03657177386:  (dice_avdevice.cpp)[ 766] showDevice:     SPDIF-OPT
03657177393:  (dice_avdevice.cpp)[ 766] showDevice:     SPDIF
03657177397:  (dice_avdevice.cpp)[ 766] showDevice:     AES_ANY
03657177405:  (dice_avdevice.cpp)[ 766] showDevice:     ADAT
03657177409:  (dice_avdevice.cpp)[ 766] showDevice:     ADAT_AUX
03657177416:  (dice_avdevice.cpp)[ 766] showDevice:     Word Clock
03657177419:  (dice_avdevice.cpp)[ 766] showDevice:     Unused
03657177426:  (dice_avdevice.cpp)[ 766] showDevice:     Unused
03657177430:  (dice_avdevice.cpp)[ 766] showDevice:     Unused
03657177437:  (dice_avdevice.cpp)[ 766] showDevice:     Unused
03657177441:  (dice_avdevice.cpp)[ 766] showDevice:     Internal
03657177456:  (dice_avdevice.cpp)[ 769] showDevice:  TX param space:
03657177461:  (dice_avdevice.cpp)[ 770] showDevice:   Nb of xmit        : 1
03657177471:  (dice_avdevice.cpp)[ 772] showDevice:   Transmitter 0:
03657178953:  (dice_avdevice.cpp)[ 775] showDevice:    ISO channel       :  -1
03657180310:  (dice_avdevice.cpp)[ 777] showDevice:    ISO speed         :   2
03657182246:  (dice_avdevice.cpp)[ 780] showDevice:    Nb audio channels :  16
03657184023:  (dice_avdevice.cpp)[ 782] showDevice:    Nb midi channels  :   1
03657185339:  (dice_avdevice.cpp)[ 785] showDevice:    AC3 caps          : 0x00000000
03657186995:  (dice_avdevice.cpp)[ 787] showDevice:    AC3 enable        : 0x00000000
03657188547:  (dice_avdevice.cpp)[ 790] showDevice:    Channel names     :
03657188591:  (dice_avdevice.cpp)[ 795] showDevice:      IP 1
03657188613:  (dice_avdevice.cpp)[ 795] showDevice:      IP 2
03657188641:  (dice_avdevice.cpp)[ 795] showDevice:      IP 3
03657188662:  (dice_avdevice.cpp)[ 795] showDevice:      IP 4
03657188689:  (dice_avdevice.cpp)[ 795] showDevice:      SPDIF L
03657188709:  (dice_avdevice.cpp)[ 795] showDevice:      SPDIF R
03657188827:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 1
03657188849:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 2
03657188876:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 3
03657188895:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 4
03657188922:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 5
03657188942:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 6
03657188968:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 7
03657188988:  (dice_avdevice.cpp)[ 795] showDevice:      ADAT 8
03657189049:  (dice_avdevice.cpp)[ 795] showDevice:      Loop 1
03657189071:  (dice_avdevice.cpp)[ 795] showDevice:      Loop 2
03657189100:  (dice_avdevice.cpp)[ 799] showDevice:  RX param space:
03657189121:  (dice_avdevice.cpp)[ 800] showDevice:   Nb of recv        : 1
03657189148:  (dice_avdevice.cpp)[ 802] showDevice:   Receiver 0:
03657190449:  (dice_avdevice.cpp)[ 805] showDevice:    ISO channel       :  -1
03657192636:  (dice_avdevice.cpp)[ 807] showDevice:    Sequence start    :   0
03657194236:  (dice_avdevice.cpp)[ 810] showDevice:    Nb audio channels :   8
03657195654:  (dice_avdevice.cpp)[ 812] showDevice:    Nb midi channels  :   1
03657197181:  (dice_avdevice.cpp)[ 815] showDevice:    AC3 caps          : 0x00000000
03657198561:  (dice_avdevice.cpp)[ 817] showDevice:    AC3 enable        : 0x00000000
03657200318:  (dice_avdevice.cpp)[ 820] showDevice:    Channel names     :
03657200355:  (dice_avdevice.cpp)[ 825] showDevice:      Mon 1
03657200377:  (dice_avdevice.cpp)[ 825] showDevice:      Mon 2
03657200626:  (dice_avdevice.cpp)[ 825] showDevice:      Line 3
03657200648:  (dice_avdevice.cpp)[ 825] showDevice:      Line 4
03657200676:  (dice_avdevice.cpp)[ 825] showDevice:      Line 5
03657200696:  (dice_avdevice.cpp)[ 825] showDevice:      Line 6
03657200723:  (dice_avdevice.cpp)[ 825] showDevice:      SPDIF L
03657200743:  (dice_avdevice.cpp)[ 825] showDevice:      SPDIF R
03657200774: Debug (devicemanager.cpp)[1279] showDeviceInfo: Clock sync sources:
03657212212: Debug (devicemanager.cpp)[1288] showDeviceInfo:  Type: AES               , Id:  2, Valid: 1, Active: 0, Locked 0, Slipping: 0, Description: SPDIF-OPT
03657212265: Debug (devicemanager.cpp)[1288] showDeviceInfo:  Type: AES               , Id:  3, Valid: 1, Active: 0, Locked 0, Slipping: 0, Description: SPDIF
03657212269: Debug (devicemanager.cpp)[1288] showDeviceInfo:  Type: ADAT              , Id:  5, Valid: 1, Active: 0, Locked 0, Slipping: 0, Description: ADAT
03657212277: Debug (devicemanager.cpp)[1288] showDeviceInfo:  Type: Compound Syt Match, Id:  8, Valid: 1, Active: 0, Locked 0, Slipping: 0, Description: Unused
03657212280: Debug (devicemanager.cpp)[1288] showDeviceInfo:  Type: Internal          , Id: 12, Valid: 1, Active: 1, Locked 1, Slipping: 0, Description: Internal
no message buffer overruns
bash-4.3$

Comment 1 Brendan Jones 2015-01-04 16:40:46 UTC
Obvious question first, I guess you logged out of X and logged in again after making any limits changes?

Are you able to use the card at all?

Comment 2 Simon Lewis 2015-01-05 13:31:21 UTC
(In reply to Brendan Jones from comment #1)
> Obvious question first, I guess you logged out of X and logged in again
> after making any limits changes?

Yes, I completely rebooted - this is unavoidable as the firewire devices are only detected on boot (at least on my installation). Isn't 1394 supposed to be plug and play?.


> 
> Are you able to use the card at all?

Yes, after changing 95-jack.conf to allow all and everything to use rtprio with unlimited memlock. It is not sufficient to allow @audio / @jackuser / @pulse-rt to use kernek preemption.

As a foot note: After a couple of hours of using the saffire with ardour the KDE desktop became very unstable and now my laptop just keeps freezing. It is going to be quicker to completey reinstall from scratch rather than sort the mess out.

My only conclusion is that no one is using firewire devces with fedora.

Comment 3 Fedora End Of Life 2015-11-04 14:24:35 UTC
This message is a reminder that Fedora 21 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 21. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora  'version'
of '21'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 21 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 4 Fedora End Of Life 2015-12-02 06:52:56 UTC
Fedora 21 changed to end-of-life (EOL) status on 2015-12-01. Fedora 21 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release. If you experience problems, please add a comment to this
bug.

Thank you for reporting this bug and we are sorry it could not be fixed.


Note You need to log in before you can comment on or make changes to this bug.