Arnold Krille wrote:
> Hi all,
> I tried to discuss this with pieter today, but time was short on my side.
> I am unsatisfied with the way the ports visible in jack are named(*).
> I have the following setup: A firepod as the main device that is also connected
> to the speakers and a saffire for development of the dice things. Sometimes both
> devices are used, sometimes only the firepod.
> The problem is that the firepod alone is of course device 0, when the saffire is
> connected and used too, the firepod becomes device 1.
> As I don't want to redo all the connections every time, jconvolver (used for
> the digital room correction) is told to connect to system:playback, could
> also be "firewire_pcm:P_dev0_Output [LR]", that is the first two outputs
> when only the firepod is there.
> But as the port names aren't device dependant, when I use both devices, the
> auto-connection from above connects to the wrong device.
> I think there are two possible solutions for that:
> 1) Provide a way to specify the order ffado should use for the devices. This
> most probably means dealing with GUID on the command-line without a simple way
> (apart from the debug-output which should be deactivated by distributions) to
> get this number. And as far as my tests go, the -dgui:0x... option of the
> firewire backend allows which device to use, the syntax to specify multiple
> devices and their order seems to be not existing or _very_ obscure.
just for the record:
jackd -d firewire "-dguid:0x1;guid:0x2"
jackd -d firewire "-dguid:0x1;guid:0x2;hw:1;hw:2"
The semicolon might not be the best choice here, maybe a comma is
better. This particular piece of functionality is undocumented and
rarely used, so we could change this. (DeviceStringParser.cpp:259)
> 2) Include the GUID in the port name. This makes port names rather long. But
> it is a very good way of making them unique. People using graphical tools will
> not care about the length of the name, people using text-only know ways of
> copy'n'paste on the commandline. And in jack1 there is still the alias of
> In case you haven't guessed it, I prefer #2.
> The order in which the devices are found on the bus should not matter at all,
> which makes any manual ordering superfluous.
> The nickname could also be used for this, but nickname-changing doesn't work
> that well with all the devices. My firepod doesn't allow a change and the saffire
> forgets these changes when powered down. And by default both include part of
> the GUID to make them unique. So using the GUID is easier...
When no order is explicitly specified, the devices are ordered by GUID
to ensure that identical multi-device setups always result in identical
The obvious thing to do would be to change the _dev0_ with _GUID_.
ffadodevice.cpp:173 already hints to the fact that something has to be
I think that using the GUID while we don't have a decent alternative is ok.
One alternative would be to save every device used with ffado to a
config file and save a unique id number for that. This number can be a
bit less long. Also, this would allow to implement a nickname fallback
for devices that don't support storing it to the device.
> What do you think?
I need more coffee...
> Have fun,
> (*) Doesn't matter whether its jack1 or jack2, the names in jack2 are
> available as aliases in jack1 too.
> BTW: Why are the system:-aliases not available in jack2 anymore? They are so
> much easier when it comes to running an ardour session on different
I have no idea.