Commit e534a059 by PLN (Algolia)

audio: the default sink is an HDMI port with no monitor on it

Measured, not inferred: every ELD on the NVIDIA card reads monitor_present 0
and every one of its DP connectors is disconnected — the connected display is
on the Intel iGPU. The default sink is therefore a transmitter with no
receiver, which is why 'no audio card' is an accurate description rather than
a preference complaint.

Records what it does and does not threaten. The gig's own path is the UMC202HD,
which is unpinned and currently unplugged, so it is untouched. What this blocks
is TODAY's rehearsal, whose monitor route is Jack Out on the card that is off —
and that rehearsal is the last unrun gate.
parent a74949b4
......@@ -187,3 +187,91 @@ explicit flag, and the gate never passes the flag:
- **--fix cannot restore HiFi on the SOF card**, because that needs a device
re-probe. The tool must say so in words rather than pretend, and must never
restart WirePlumber on its own during a set.
---
# Addendum, Wed 2026-09-23 09:4x — "still see no audio card, explain?"
Measured live this morning. The answer is worse and simpler than the pin story
above: **the default sink is a socket with nothing plugged into it.**
```
$ pactl get-default-sink
alsa_output.pci-0000_01_00.1.pro-output-9 # 01:00.1 = NVIDIA RTX 4080 HDMI audio
$ grep -H . /proc/asound/card0/eld* | grep monitor_present
monitor_present 0 # every one of them
monitor_present 0
monitor_present 0
monitor_present 0
monitor_present 0
$ for f in /sys/class/drm/*/status; do ...
card2-DP-5..8: disconnected # card2 -> 0000:01:00.0, the NVIDIA
card1-DP-1: connected # card1 -> 0000:00:02.0, the Intel iGPU
card1-eDP-1: connected # the laptop panel
```
The external display is on the **Intel** GPU. The default sink is on the
**NVIDIA** GPU, whose every connector is disconnected and whose every ELD reads
`monitor_present 0`. So system audio is routed to an HDMI transmitter with no
receiver. Not muted, not misrouted — *terminated*. "No audio card" is an
accurate report of what the box can do.
Meanwhile the card that carries real transducers is switched off and cannot be
switched on:
```
$ pactl list cards | awk '/sof_sdw/,0' | grep -A3 Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
pro-audio: Pro Audio (sinks: 5, sources: 2, priority: 1, available: yes)
Active Profile: off
$ alsaucm -c sof-soundwire list _verbs
0: HiFi
$ aplay -l | grep sofsoundwire
card 1: sofsoundwire, device 0: Jack Out (*) <- the PA cable's socket
card 1: sofsoundwire, device 2: Speaker (*)
card 1: sofsoundwire, device 5: HDMI 1 (*)
```
ALSA has the hardware and the `HiFi` verb. PipeWire's profile list for that card
does not contain `HiFi` at all. A card's profile list is built **once**, at
device creation, so nothing short of a device re-probe can add it — and
`findBestProfile` skips `pro-audio` by name, so clearing the pin on its own
would make WirePlumber choose `off` again, correctly, from a list of one.
**Clearing the pin is necessary and not sufficient. Both halves or neither.**
## What this does and does not threaten
- **The gig itself: not on this path.** Master goes out through the
**Behringer UMC202HD**, which is not on the USB bus right now
(`lsusb | grep -i behringer` empty; `/proc/asound/cards` has no `U192k`).
`tools/check-audio-graph.sh` already treats an absent UMC as absent rather
than broken, and WirePlumber has no pin for it, so it will take its own best
profile the moment it is plugged in. Nothing here touches that.
- **Today's rehearsal: entirely on this path.** The 2h arc is the one gate that
has never been run, and the monitor route for it is the laptop headphone jack
— `Jack Out` on the card that is off. Right now the box cannot make a sound
he can hear. So this is not a preference to tidy up after the gig; it is the
thing standing in front of the last remaining check.
- Corroboration that `HiFi` is the intended state and `off` the anomaly:
`tools/fold-orbits.py:85` documents the expected sink by name as
`alsa_output.pci-0000_00_1f.3-platform-sof_sdw.HiFi__hw_sofsoundwire__sink`.
The rig's own tooling was written against a card in HiFi.
## The window is now
The five-step repair above wants a calm moment because a WirePlumber restart
drops every link in the graph (`project_travel-rig-headphones`: "any wireplumber
restart kills those links"). As of 09:4x today: `parvagues-sc` inactive, no
scsynth, no sclang, Ardour closed, 36 nodes in the graph, the only sinks are the
four dead NVIDIA ones. There is nothing to break. That will not be true again
before the gig.
**Still unanswered, and it changes the reading:** did PLN pin the laptop card
`off` himself? If he set it *because* Speaker and Headphones had already
vanished, then `off` is a symptom, the missing `HiFi` is the disease, and step 5
will not stick until the re-probe is proven to have worked.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment