loopback module works for sinks but not sources
- PipeWire version (
pipewire --version
): 0.3.53 - Distribution and distribution version (
PRETTY_NAME
from/etc/os-release
): Fedora Linux 35 (Workstation Edition) - Desktop Environment: GNOME
- Kernel version (
uname -r
): 5.18.9-100.fc35.x86_64
Description of Problem:
I have a config with several loopback devices, designed to remap the channels of my Focusrite USB interface. The virtual devices created by this for sound output work (albeit with some unreliability that I haven't pinned down) but pipewire creates nothing for the input devices. The config for both is adapted from the wiki.
How Reproducible:
Always
Steps to Reproduce:
- Place 10-scarlett.conf in /etc/pipewire/pipewire.conf.d/10-scarlett.conf
- Execute
systemctl --user restart pipewire pipewire-pulse
- Check devices (or pipewire dumps)
Actual Results:
Virtual output devices are created and connected correctly. No virtual input devices, nodes or links for them are created. Nothing suggesting a config error is produced in the logs except:
mod.loopback: error id:3 seq:27 res:-2 (No such file or directory): no node available
mod.loopback: error id:3 seq:27 res:-2 (No such file or directory): no node available
mod.loopback: error id:3 seq:27 res:-2 (No such file or directory): no node available
mod.loopback: error id:3 seq:27 res:-2 (No such file or directory): no node available
mod.loopback: error id:3 seq:27 res:-2 (No such file or directory): no node available
mod.loopback: error id:3 seq:27 res:-2 (No such file or directory): no node available
which doesn't tell me what's wrong (if something is) and in any case also appears if I delete the loopback modules for input.
Expected Results:
All virtual devices, nodes and links are created. If there is an error in the config, I am warned in such a way that I know what the problem is and how to fix it.
Extra comment:
The documentation on the wiki is very hard to follow and incomplete. There are three separate methods for creating loopback devices documented, with no information about the differences or which is preferable. There is no information about what is required to get pipewire to read the new config. The information about how to adapt the old default.pa
file for use with pipewire doesn't really tell you how to actually do it.
The documentation of "single nodes" versus "coupled streams" still does not make sense to me. "Capture and playback" streams sounds like I'm connecting my microphone bidirectionally, so that I can both capture audio from it and play audio to it. Why would I want that? I think you want to point out that the loopback module creates two nodes: in the case of sink remapping the first one is a sink and pipes its audio to the second stream, which pipes its audio to the underlying device. But I actually don't know, because I don't know why it's necessary to create two nodes to do this. Presumably there is some underlying reason in pipewire - but this at the moment is the nearest to user documentation you have, and users should not have to care about that level of detail. The documentation should be clearer without depending on, or delving into, any understanding of the underlying architecture. I just want to be able to capture mono audio from my separate XLR inputs. The documentation of the properties is extremely vague. dont-remix
- how will the streams be remixed if you leave this false
? What happens if you set media.class = Audio/Source
in the capture.props
, or to Sink in playback.props
? Would it not make more sense to set the directionality of the loopback one level up?
Additional Info (as attachments):
-
pw-dump > pw-dump.log
: pw-dump.log