Bug 473685 - Audio-only HDMI soundbar inappropriately shows up as a display, with all the consequences that entails
Summary: Audio-only HDMI soundbar inappropriately shows up as a display, with all the ...
Status: CONFIRMED
Alias: None
Product: KScreen
Classification: Plasma
Component: common (show other bugs)
Version: 5.27.7
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: kscreen-bugs-null@kde.org
URL:
Keywords:
: 474012 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-08-23 14:12 UTC by Dragoon Aethis
Modified: 2023-09-19 18:34 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dragoon Aethis 2023-08-23 14:12:27 UTC
This is a weird feature request, since the use case is fairly niche but annoying to work around.

I have a desktop PC with AMD Radeon RX 6800 with 3 outputs connected to it:
- 2x 1440p 144Hz displays connected over DisplayPort,
- A Samsung soundbar connected over HDMI. This is a problem, because...

HDMI is the only way to get uncompressed, low-latency-ish PCM 7.1 audio sent to the soundbar from a PC. (It can also accept uncompressed 2.1 or compressed 5.1 over Toslink, but not full-range 7.1 it's capable of dealing with. It can also accept 2.1 audio over Bluetooth with significant latency penalty.)

The soundbar shows up in the system as a normal display and has to be enabled in order to make it possible to play audio on it (if disabled, PipeWire/PulseAudio can't configure the audio output profile on the respective HDMI Audio device). This requires the user to place that display somewhere in the workspace and it's annoying that you can move the cursor off-screen with no visual indication or Win+Left/Right random windows into the void.

The feature request I have is to make it possible to enable a given output as a "dummy" display - enable a device, set resolution as requested in the display configuration panel etc, but just render the entire display contents black and don't let the desktop user interact with that display output in any way. This allows using that device as an audio output without extra annoyances. Mirroring a display is not a solution, since other displays run at 1440p144Hz which the soundbar can't handle.

This is all on the Wayland session.

KDE Plasma Version: 5.27.7
KDE Frameworks Version: 5.109.0
Qt Version: 5.15.10

---

What `kscreen-console outputs` sees for that soundbar HDMI output:

Id:  2
Name:  "HDMI-A-1"
Type:  "HDMI"
Connected:  true
Enabled:  true
Priority:  2
Rotation:  KScreen::Output::None
Pos:  QPoint(2560,480)
MMSize:  QSize(1150, 650)
FollowPreferredMode:  false
Size:  QSize(640, 480)
Scale:  1
Clones:  None
Mode:  "16"
Preferred Mode:  "0"
Preferred modes:  ("0")

Modes:
"0"    "1280x720@60"   QSize(1280, 720)   60
"1"    "1920x1080@60"   QSize(1920, 1080)   60
"10"    "720x576@50"   QSize(720, 576)   50
"11"    "720x480@60"   QSize(720, 480)   60
"12"    "720x480@60"   QSize(720, 480)   60
"13"    "720x480@60"   QSize(720, 480)   59.94
"14"    "720x480@60"   QSize(720, 480)   59.94
"15"    "720x480@60"   QSize(720, 480)   59.94
"16"    "640x480@60"   QSize(640, 480)   60
"17"    "640x480@60"   QSize(640, 480)   59.94
"18"    "640x480@60"   QSize(640, 480)   59.94
"2"    "1920x1080@60"   QSize(1920, 1080)   59.94
"3"    "1280x720@60"   QSize(1280, 720)   60
"4"    "1280x720@60"   QSize(1280, 720)   59.94
"5"    "1280x720@50"   QSize(1280, 720)   50
"6"    "1280x720@50"   QSize(1280, 720)   50
"7"    "1024x768@60"   QSize(1024, 768)   60.004
"8"    "800x600@60"   QSize(800, 600)   60.317
"9"    "720x576@50"   QSize(720, 576)   50

EDID Info:
Device ID:  "xrandr-Data Export Corporation-EP-HDMI-RX-1"
Name:  "EP-HDMI-RX"
Vendor:  "Data Export Corporation"
Serial:  "1"
EISA ID:  ""
Hash:  "6f454a2eafcd6df2a93f7879cea59fd9"
Width:  115
Height:  65
Gamma:  2.2
Red:  QQuaternion(scalar:1, vector:(0.618164, 0.347656, 0))
Green:  QQuaternion(scalar:1, vector:(0.280273, 0.605469, 0))
Blue:  QQuaternion(scalar:1, vector:(0.152344, 0.0634766, 0))
White:  QQuaternion(scalar:1, vector:(0.3125, 0.329102, 0))
Comment 1 Nate Graham 2023-08-23 16:41:35 UTC
It's an interesting problem for sure. I'll rename the bug report to describe the problem, not one potential solution for it, because the problem is valid but we might find a different solution.

Maybe we can detect when there's no video signal and not create a screen for it?
Comment 2 Dragoon Aethis 2023-08-23 17:48:39 UTC
(In reply to Nate Graham from comment #1)
> Maybe we can detect when there's no video signal and not create a screen for it?

The thing is, since it's HDMI, there *is* video going through. The soundbar has two HDMI IN/OUT ports and is capable of video passthrough for playback with TVs that can't do HDMI eARC - this way you can connect devices like old BD players or game consoles to the soundbar's HDMI IN (which plays high quality audio only), and soundbar's HDMI OUT to the TV HDMI IN (and that gets the video + audio stream with some extra latency sprinkled on top).
Comment 3 Zamundaaa 2023-08-23 18:07:38 UTC
That case would be fine, if we could detect that something's connected to the OUT port. Sadly, like with seemingly every other display-related annoyance, there isn't any information about this in the EDID (at least not with the soundbar that I have).

We can make such a special mode in KWin that "enables" the output without creating an actual user facing output that you can put windows on etc, but that special mode would still have to be manually enabled by the user.
Comment 4 Nate Graham 2023-09-05 21:38:11 UTC
*** Bug 474012 has been marked as a duplicate of this bug. ***