Skip to content

i3 PipeWire Sound Checks on Arch

Check and fix sound in a minimal i3 session on Arch using PipeWire, WirePlumber, pipewire-pulse, and wpctl. This workflow focuses on the common case where sound appears broken because the default sink volume is muted or set to 0.00.

On a fresh Arch install with PipeWire and WirePlumber running, sound can still appear broken when the default sink volume is simply at 0.00. Check status first before assuming anything is actually wrong.

Terminal window
wpctl status
wpctl get-volume @DEFAULT_AUDIO_SINK@

Set, raise, lower, or mute the default output device with wpctl.

Terminal window
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.5
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
  • 0.5 means 50 percent volume.
  • 5%+ raises volume by 5 percent.
  • 5%- lowers volume by 5 percent.
  • set-mute toggle toggles mute on the default output sink.

If audio services are not running, start and enable PipeWire, WirePlumber, and pipewire-pulse for the user session.

Terminal window
systemctl --user status pipewire
systemctl --user status wireplumber
systemctl --user status pipewire-pulse
systemctl --user enable --now pipewire wireplumber pipewire-pulse

Install pavucontrol when a GUI mixer is useful for per-app volume, output device switching, and quick inspection.

Terminal window
sudo pacman -S pavucontrol
pavucontrol
  • Laptop Fn volume keys usually work out of the box with PipeWire.
  • No extra i3 keybinding is needed if the hardware keys already work.
  • If sound seems gone after login, check the sink volume first with wpctl get-volume.
  • A reset to 0.00 is a common cause of silent audio.
Terminal window
# Check audio graph and default devices
wpctl status
# Check default sink volume
wpctl get-volume @DEFAULT_AUDIO_SINK@
# Check user services
systemctl --user status pipewire
systemctl --user status wireplumber
systemctl --user status pipewire-pulse
# Check recent user service logs
journalctl --user -u pipewire -b --no-pager -n 100
journalctl --user -u wireplumber -b --no-pager -n 100
journalctl --user -u pipewire-pulse -b --no-pager -n 100
  • PipeWire user service: pipewire.service
  • WirePlumber user service: wireplumber.service
  • Pulse compatibility user service: pipewire-pulse.service
  • Main command-line tool: wpctl
  • Optional GUI mixer: pavucontrol