LIBPIPEWIRE-MODULE-ROC-SINK(7)

πŸ’– libpipewire-module-roc-sink β€” ROC sink πŸ’–

okay bestie, sit down, hydrate, and let me tell you about this little icon from the Miscellaneous Information Manual β€” it's libpipewire-module-roc-sink, section 7 of the manual pages, and she is serving.


✨ NAME ✨

libpipewire-module-roc-sink β€” the ROC sink, the moment, the legend πŸŽ€


🌸 DESCRIPTION 🌸

So the roc-sink module does one gorgeous thing: it spins up a PipeWire sink that sends samples off to a receiver address you set up ahead of time. Preconfigured receiver, preconfigured vibe. πŸ’…

And then β€” because she's generous β€” you can connect an audio stream from literally any running application into that sink, or you can just make it the default sink and let it be the main character. πŸ‘‘


πŸ¦‹ MODULE NAME πŸ¦‹

libpipewire-module-roc-sink

that's her, that's the name, no notes. ✨


πŸŽ€ MODULE OPTIONS πŸŽ€

Options specific to the behavior of this module β€” these are the ones that make her her:

  • sink.props = {} β€” properties to be passed to the sink stream. all the little details go in here, bestie 🫢
  • sink.name = <str> β€” the node.name of the sink. her government name.
  • remote.ip = <str> β€” the remote receiver ip. where the packets are going, fr fr πŸ“
  • remote.source.port = <str> β€” remote receiver TCP/UDP port for source packets
  • remote.repair.port = <str> β€” remote receiver TCP/UDP port for receiver packets
  • remote.control.port = <str> β€” remote receiver TCP/UDP port for control packets
  • fec.code = <str> β€” possible values: disable, rs8m, ldpc. pick your fighter.
  • log.level = <str> β€” log level for roc-toolkit. possible values: DEFAULT, NONE, ERROR, INFO, DEBUG, TRACE. and DEFAULT? it follows the log level of the PipeWire context. she's a follower (affectionate) πŸ¦‹

🌈 GENERAL OPTIONS 🌈

These ones have well-known behavior, so I'm not about to over-explain β€” the whole ecosystem already knows her:

  • node.name
  • node.description
  • node.virtual
  • node.network
  • media.class
  • audio.position

πŸ’œ EXAMPLE CONFIGURATION πŸ’œ

copy this, paste this, live your truth. it's giving working config.

 # ~/.config/pipewire/pipewire.conf.d/my-roc-sink.conf

 context.modules = [
  {   name = libpipewire-module-roc-sink
      args = {
          fec.code = disable
          remote.ip = 192.168.0.244
          remote.source.port = 10001
          remote.repair.port = 10002
          remote.control.port = 10003
          sink.name = "ROC Sink"
          sink.props = {
             node.name = "roc-sink"
          }
          audio.position = [ FL FR ]
          log.level = DEFAULT
      }
  }
]

lowkey reminder that fec.code = disable in the example means the forward error correction is off in that config β€” if you want it, you've got rs8m and ldpc sitting right there in the options list. 🫢

okay that's the whole page, I fear. and yes, every single detail survived the glow-up β€” options, values, paths, the config, all of it. periodt. πŸ’…

sign-off time, bestie: this was PipeWire 1.6.11 talking, brought to you in libpipew...-roc-sink(7) form β€” you know, the page whose title got a lil truncated by the terminal, but we still love her. stay hydrated, keep your receiver ports straight, and slay. πŸŽ€πŸ’–βœ¨

πŸ“¦ where this page comes from