Pipewire not recording

Hi all,

I’m having an issue with recording using pipewire. It looks like no audio data is being received.
When I run “pw-record —verbose test.wav” all values remain “0”. Is this a known issue? I don’t see any errors being logged. The audio playback with “pw-play” does work.

stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0

This issue might only affect me with this specific setup as I’m running the command in a NixOS-LXC-container using the ProxmoxVE-host as remote. My intention is to connect to the remote via the “native-protocol” over a socket mounted into the container.
Like I said no data seems to be streamed, but when I also run “pw-record” on the host I can see that data also starts to stream to the “pw-record” in the container.

After i enabled “pipewire-pulse” in the container, the recording starts to work as intended. But I’m unsure if I’m now using a pulseaudio-socket or somethjng.

Details:

  • running NixOS 24.04 in the LXC container
  • no audio data streaming to the LXC container via native-prrotocol from remote
  • audio playback from container to remote works
  • able to start audio data streaming by starting record on remote

My intention is to run Wyoming Satellite via NicOS in a LXC/container in combination with other LXC containers also having access to audio.

When recording is not working, i get this output “pw-record --verbose test.wav”:

sndfile: opened file "test.wav" format 10010002 channels:2 rate:48000
PCM: fmt:s16 rate:48000 channels:2 width:2
rate:48000 latency:0 (0.000s)
connecting record stream; target=(null)
stream state changed unconnected -> connecting
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Tag
stream param change: Spa:Enum:ParamId:Props
stream properties:
        application.name = "pw-record"
        node.name = "pw-record"
        node.rate = "1/48000"
        media.type = "Audio"
        media.category = "Capture"
        media.role = "Music"
        media.filename = "test.wav"
        media.name = "test.wav"
        stream.is-live = "true"
        node.want-driver = "true"
        node.autoconnect = "true"
        media.class = "Stream/Input/Audio"
remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Format
stream state changed paused -> streaming
stream set volume to 1.000 - success
stream node 42
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0

When recording does work, i get this output:

[system@wyomingsatellite:~]$ pw-record --verbose test.wav
sndfile: opened file "test.wav" format 10010002 channels:2 rate:48000
PCM: fmt:s16 rate:48000 channels:2 width:2
rate:48000 latency:0 (0.000s)
connecting record stream; target=(null)
stream state changed unconnected -> connecting
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Tag
stream param change: Spa:Enum:ParamId:Props
stream properties:
        application.name = "pw-record"
        node.name = "pw-record"
        node.rate = "1/48000"
        media.type = "Audio"
        media.category = "Capture"
        media.role = "Music"
        media.filename = "test.wav"
        media.name = "test.wav"
        stream.is-live = "true"
        node.want-driver = "true"
        node.autoconnect = "true"
        media.class = "Stream/Input/Audio"
remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Format
stream state changed paused -> streaming
stream set volume to 1.000 - success
stream node 42
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:85603714382469 rate:1/48000 ticks:45056 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:1024
stream time: now:85604717204772 rate:1/48000 ticks:93184 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:1024
stream time: now:85605719990988 rate:1/48000 ticks:141312 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:1024

Update: I just now noticed that the record does work the first time, but when i terminate the command (ctrl-c) then the second time the record does not work. So it seems that something gets “stuck”.

When i run pw-record on the host, i get this output:

remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Format
stream state changed paused -> streaming
stream set volume to 1.000 - success
stream node 47
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:0 avail:0
stream time: now:86084923881870 rate:1/48000 ticks:45056 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86085926613730 rate:1/48000 ticks:93184 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86086929321931 rate:1/48000 ticks:141312 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86087932054547 rate:1/48000 ticks:189440 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86088934794173 rate:1/48000 ticks:237568 delay:1024 queued:0 buffered:0 buffers:1 avail:0