Bowers & Wilkins MM-1 no output below 50% volume

This seems to be due to some fault in the dB reporting and can be worked around by creating a configuration file that overrides this property.

File can be placed in either /etc/wireplumber/main.lua.d or ~/.config/wireplumber/main.lua.d

To find the device name either use wpctl status look for the device id and use wpctl inspect <id>
Another, and quicker, way is to check output from pw-cli ls Device

/etc/wireplumber/main.lua.d/51-Bowers_Wilkins-MM-1.lua
rule = {
  matches = {
    {
      { "device.name", "equals", "alsa_card.usb-Bowers___Wilkins_MM-1_304-00" },
    },
  },
  apply_properties = {
    ["api.alsa.ignore-dB"] = true,
  },
}
 
table.insert(alsa_monitor.rules, rule)

Then to make the changes take effect run systemctl –user restart wireplumber

MM-1 random tones problem

Finally found the solution to the random tones that would be output at a low volume from the left MM-1 speaker.

https://forums.macrumors.com/threads/random-tones-coming-from-my-left-b-w-mm-1-speaker-help-o.1704799/

# Change default.clock.rate to 44100 to fix B&W MM-1 random tones
# problem. Other settings should be at the default as in
# /usr/share/pipewire/pipewire.conf
 
context.properties = {
    ## Configure properties in the system.
    #library.name.system                   = support/libspa-support
    #context.data-loop.library.name.system = support/libspa-support
    #support.dbus                          = true
    #link.max-buffers                      = 64
    link.max-buffers                       = 16                       # version < 3 clients can't handle more
    #mem.warn-mlock                        = false
    #mem.allow-mlock                       = true
    #mem.mlock-all                         = false
    #clock.power-of-two-quantum            = true
    #log.level                             = 2
    #cpu.zero.denormals                    = false
 
    core.daemon = true              # listening for socket connections
    core.name   = pipewire-0        # core name and socket name
 
    ## Properties for the DSP configuration.
    default.clock.rate          = 44100
    #default.clock.allowed-rates = [ 48000 ]
    #default.clock.quantum       = 1024
    default.clock.min-quantum   = 16
    #default.clock.max-quantum   = 2048
    #default.clock.quantum-limit = 8192
    #default.video.width         = 640
    #default.video.height        = 480
    #default.video.rate.num      = 25
    #default.video.rate.denom    = 1
    #
    #settings.check-quantum      = false
    #settings.check-rate         = false
    #
    # These overrides are only applied when running in a vm.
    vm.overrides = {
        default.clock.min-quantum = 1024
    }
}