Changeset 2596

Show
Ignore:
Timestamp:
11/21/15 23:51:58 (8 years ago)
Author:
jwoithe
Message:

From Stefan Richter.

The DICE protocol involves "owner lock" register at the audio interface.
The snd-dice kernel driver takes this lock as soon as the DICE device is
being probed by the kernel (i.e. even before any application actually
opens the ALSA device for streaming). Thus, the FFADO streaming driver
fails to start when snd-dice is present on the system.

So far this was only made known by a cryptic -v3 debug message. Reform it
into a message which is always logged even without -v# command line
parameter, and which proposes solutions to the problem in highlevel terms.

Note, the condition which is triggering the message can have other causes,
like a previous jackd+ffado session having crashed without locking out, or
even another initiator PC being present on the bus. However, now that more
and more distributions ship snd-dice, presence of the kernel driver is the
far likelier reason.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/dice/dice_avdevice.cpp

    r2590 r2596  
    11921192     
    11931193        if (result != DICE_OWNER_NO_OWNER && result != swap_value) { 
    1194             debugWarning("Could not register ourselves as device owner, unexpected register value: 0x%016"PRIX64"\n", result); 
     1194            debugWarning("Unexpected GLOBAL_OWNER register value: 0x%016"PRIX64"\n", result); 
     1195            fprintf(stderr, "Could not register ourselves as owner of %s.\n", getNickname().c_str()); 
     1196            fprintf(stderr, "If the snd-dice kernel driver is present, " 
     1197                            "either use the device via ALSA instead of FFADO, " 
     1198                            "or unload snd-dice before using FFADO.\n"); 
    11951199            return false; 
    11961200        }