Bug: PipeWire 1.4.8 sets wrong "periods_mins" on SB Audigy-alike cards

I am affected by the same problem as this reddit user

my E-mu 1010 PCIe card (similar~ish to SB Audigy, relies on the same emu10k2 driver) cannot record audio since updating to PipeWire 1.4.8 (reddit poster confirmed downgrading to 1.4.7).
Log is spammed with messages like:

sep 22 17:53:41 saturn pipewire[146501]: spa.alsa: set_periods_min: Invalid argument
sep 22 17:53:41 saturn pipewire[146501]: pw.node: (alsa_input.pci-0000_05_04.0.analog-stereo-46) suspended -> error ((null))

Only that card is affected (I can record audio if I switch to my webcam’s built-in mic).

Current work-around is to use a custom configuration file in WirePlumber that will overwrite this number of periods to exactly 2. In .config/wireplumber/wireplumber.conf.d/alsa-periods.conf:

# ALSA node property overrides for inputs

monitor.alsa.rules = [
  # Generic PCI cards               
  {
    matches = [
      {
        node.name = "~alsa_input.pci.*"
        # if there are multiple PCI cards and you specifically want to target the EMU 10k1 based one
        alsa.driver_name = "snd_emu10k1"      }
    ]
    actions = {
      update-props = {
        api.alsa.period-num = 2
      }
    }
  }
]

I’ll try to open a bug issue with WirePlumber

Issue opened at PipeWire:

There is a pull-request that could fix this.

Patch confirmed to work.

Test with:

Patch has been merged, should show up in a new release soon.

Bugzilla to request updating PipeWire as soon as the merged patch hits an official version:
https://bugzilla.opensuse.org/show_bug.cgi?id=1250381

Update:

@alarrosa has made an updated package that includes the fix: version 1.4.8+git68.636cbae9b now properly works on emu10k1 (Tested and confirmed on my Emu 1010 PCIe card).

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.