# Firefox / YouTube no-audio on CachyOS: remote audit pattern

Use this when the user reports that Firefox/YouTube has no sound on a KDE + PipeWire desktop and you can SSH into the machine.

## What to prove first

1. Is PipeWire actually installed and running?
2. Which sink is the default right now?
3. Does Firefox have an active sink-input stream?
4. Is that Firefox stream muted even though the stack is healthy?
5. Did PipeWire/WirePlumber restart or crash near the failure time?

## Minimal command set

```bash
pacman -Q pipewire pipewire-pulse pipewire-alsa wireplumber alsa-utils
systemctl --user --no-pager --full status pipewire.service pipewire-pulse.service wireplumber.service
pactl info
pactl list short sinks
wpctl status
pactl list sink-inputs
journalctl --user --since "2 hours ago" --no-pager | grep -Ei '(firefox|pipewire|wireplumber|mute|volume|sink-input|stream|cubeb)'
```

## Positive evidence for "stack is fine, Firefox stream is muted"

Look for all of these together:

- `Server Name: PulseAudio (on PipeWire ...)`
- Firefox appears under PipeWire streams
- stream is attached to the expected sink (e.g. LG TV HDMI)
- `Mute: yes` on the Firefox sink-input

Example shape:

```text
Sink Input #258
    Sink: 58
    Mute: yes
    Volume: ... 100%
    application.name = "Firefox"
    media.name = "... - YouTube"
```

That means the old "install pipewire/alsa" diagnosis is wrong.

## Immediate fix

```bash
pactl set-sink-input-mute <sink_input_id> 0
```

## Likely root-cause pattern

A PipeWire or WirePlumber disruption can leave per-app stream state bad even after audio services come back.

Evidence pattern:

```text
Stopping PipeWire PulseAudio...
firefox ... AudioIPC / cubeb error
wireplumber.service: Main process exited, code=dumped, status=6/ABRT
Started PipeWire Multimedia Service.
Started PipeWire PulseAudio.
```

## Conclusion template

- Not missing packages
- Not necessarily a Firefox-pref issue
- First-class suspect: per-app mute on the Firefox stream after PipeWire/WirePlumber restart/crash
- Keep the sink unchanged if the user confirms the current output target is correct
