LIBPIPEWIRE-MODULE-NETJACK2-MANAGER(7)

πŸ’– libpipewire-module-netjack2-manager β€” the Netjack2 manager πŸ’–

okay bestie so we're talking about libpipewire-module-netjack2-manager(7) from the Miscellaneous Information Manual, and honestly? she's giving ✨ networking royalty ✨. let's get into it 🫢


🌈 NAME 🌈

libpipewire-module-netjack2-manager β€” the Netjack2 manager, periodt πŸ‘‘


πŸŽ€ DESCRIPTION πŸŽ€

so the netjack2 manager module is basically the girl at the party who's listening for new netjack2 driver messages, and the literal second she hears one, she starts a whole communication channel with them. main character behavior fr fr πŸ’…

those messages? they arrive on a (typically) multicast address. no cap.

okay so normally, the driver is the one who says how many send and receive channels it wants to set up with the manager. it's giving "here's my list bestie". BUT β€” and this is the plot twist 😭 β€” if the driver instead specifies a don't-care value of -1, then the manager just uses her own audio.ports and midi.ports configuration values. she's got a backup plan, she's prepared, iconic.

then the manager creates the corresponding streams to send and receive data to/from the drivers. usually these are sinks and sources, but if you've got the netjack2.connect property on? they become streams that get autoconnected to the default source and sink by the session manager. the session manager said "i got you" 🫢


πŸ‘‘ MODULE NAME πŸ‘‘

libpipewire-module-netjack2-manager

yes she's in the NAME section and also here. she's everywhere. she's the moment.


✨ MODULE OPTIONS ✨

okay here's the whole menu, no skips, no shortcuts, every single one πŸ“

  • local.ifname = _<str>_ β€” the interface name to use
  • net.ip = _<str>_ β€” multicast IP address, default "225.3.19.154"
  • net.port = _<int>_ β€” control port, default "19000"
  • net.mtu = _<int>_ β€” MTU to use, default 1500
  • net.ttl = _<int>_ β€” TTL to use, default 1
  • net.loop = _<bool>_ β€” loopback multicast, default false
  • netjack2.connect β€” if jack ports should be connected automatically. can also be placed per stream, default false
  • netjack2.sample-rate β€” the sample rate to use, default 48000
  • netjack2.period-size β€” the buffer size to use, default 1024
  • netjack2.encoding β€” the encoding, float|opus|int, default float
  • netjack2.kbps β€” the number of kilobits per second when encoding, default 64
  • audio.ports β€” the number of audio ports. can also be added to the stream props. this is the default suggestion for drivers that don't specify any number of audio channels 🎧
  • midi.ports β€” the number of midi ports. can also be added to the stream props. this is the default suggestion for drivers that don't specify any number of midi channels 🎹
  • audio.position β€” default channel position for the number of audio.ports
  • source.props β€” extra properties for the source filter
  • sink.props β€” extra properties for the sink filter

🌸 GENERAL OPTIONS 🌸

these are the options with well-known behavior, the classics, the icons we all know and love πŸ’œ

  • remote.name
  • audio.channels
  • audio.layout
  • audio.position
  • node.name
  • node.description
  • node.group
  • node.virtual
  • media.class
  • target.object to specify the remote node.name or serial.id to link to

πŸ¦‹ EXAMPLE CONFIGURATION OF A DUPLEX SINK/SOURCE πŸ¦‹

here's the vibe, a whole config file, ready to go πŸ’–

# ~/.config/pipewire/pipewire.conf.d/my-netjack2-manager.conf

context.modules = [
{   name = libpipewire-module-netjack2-manager
    args = {
        #netjack2.connect     = true
        #netjack2.sample-rate = 48000
        #netjack2.period-size = 1024
        #netjack2.encoding    = float # float|opus
        #netjack2.kbps        = 64
        #audio.ports          = 0
        #midi.ports           = 0
        #audio.channels       = 2
        #audio.position       = [ FL FR ]
        source.props = {
            # extra source properties
        }
        sink.props = {
            # extra sink properties
        }
    }
}
]
not me pointing out that every single line in there except the name is commented out πŸ™ˆ it's a template bestie, you un-comment what you need!

and that's the whole page πŸ’… this lil gem comes to you from PipeWire, version 1.6.11, and it lives in the Miscellaneous Information Manual β€” the page literally titled libpipew...2-manager(7). slay, stay connected, and remember: multicast loves you back πŸŽ€βœ¨

πŸ“¦ where this page comes from