LIBPIPEWIRE-MODULE-FFADO-DRIVER(7)

πŸ’– libpipewire-module-ffado-driver β€” the FFADO firewire audio driver πŸ’–

okay bestie, this is a page from the Miscellaneous Information Manual, and it's all about the libpipewire-module-ffado-driver situation. let's get into it πŸŽ€


✨ NAME ✨

libpipewire-module-ffado-driver β€” FFADO firewire audio driver πŸ¦‹


🌸 DESCRIPTION 🌸

so the ffado-driver module? it hands you a source or a sink, and it does that by using the libffado library to read from and write to firewire audio devices. that's it, that's the vibe. literally the whole point. πŸ’…


πŸ‘‘ MODULE NAME πŸ‘‘

libpipewire-module-ffado-driver

(yes, that's the name. remember it, iykyk ✨)


πŸ”₯ MODULE OPTIONS πŸ”₯

okay so this is the good part, the options. every single one. no skipping, no cap. 🫢

  • driver.mode β€” the driver mode. your choices are sink source duplex, and the default is duplex.
  • ffado.devices β€” an array of devices to open. default is "hw:0".
  • ffado.period-size β€” the period size. default is 1024. if you set it to 0, it'll use the graph duration instead.
  • ffado.period-num β€” the period number. default is 3.
  • ffado.sample-rate β€” the sample-rate. default is 48000. and if you set it to 0, it'll use the graph rate. cute, right?
  • ffado.slave-mode β€” slave mode.
  • ffado.snoop-mode β€” snoop mode.
  • ffado.verbose β€” the ffado verbose level.
  • ffado.rtprio β€” the ffado realtime priority. by default this is the PipeWire server priority + 5.
  • ffado.realtime β€” the ffado realtime mode. heads up bestie: this one requires correctly configured rlimits so it can acquire FIFO scheduling at the ffado.rtprio priority.
  • latency.internal.input β€” extra input latency in frames.
  • latency.internal.output β€” extra output latency in frames.
  • 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. you already know them, they're iconic, they don't need an introduction. 🌟

  • remote.name
  • 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 a whole config file, main character energy, copy it and make it yours:

# ~/.config/pipewire/pipewire.conf.d/my-ffado-driver.conf

context.modules = [
{   name = libpipewire-module-ffado-driver
    args = {
        #driver.mode       = duplex
        #ffado.devices     = [ "hw:0" ]
        #ffado.period-size = 1024
        #ffado.period-num  = 3
        #ffado.sample-rate = 48000
        #ffado.slave-mode  = false
        #ffado.snoop-mode  = false
        #ffado.verbose     = 0
        #ffado.rtprio      = 65
        #ffado.realtime    = true
        #latency.internal.input  = 0
        #latency.internal.output = 0
        #audio.position    = [ FL FR ]
        source.props = {
            # extra sink properties
        }
        sink.props = {
            # extra sink properties
        }
    }
}
]
πŸ’€ reminder: everything in there is commented out in the example, so uncomment what you actually want. don't come for me when the defaults do default things.

and that's the whole page, bestie!! this one's from PipeWire, version 1.6.11, and it lives in the libpipewire-module-ffado-driver (7) section of the Miscellaneous Information Manual. go plug in a firewire device and slay πŸ’œβœ¨πŸŽ€

πŸ“¦ where this page comes from