Summary: | Device names differ between widget and KCM | ||
---|---|---|---|
Product: | [Plasma] plasma-pa | Reporter: | Trần Nam Tuấn (Bill) <tuantran1632001> |
Component: | applet | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | anael, bugs-kde, burneddi, isma.af, kapsh, me, nate, oleg, postix, prettyvanilla, skeleton0199, tuantran1632001, z411 |
Priority: | NOR | Keywords: | regression |
Version: | 6.1.0 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
See Also: | https://bugs.kde.org/show_bug.cgi?id=487658 | ||
Latest Commit: | https://invent.kde.org/plasma/plasma-pa/-/commit/eae94ed4f1eb62276fd27c4477347efe17127d90 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: |
Audio Applet
System Settings Audio Page Popup with a device name Device names as seen under macOS |
Created attachment 170754 [details]
System Settings Audio Page
This is the Audio Page in System Settings where the names are the same as previous Plasma version and are different from what are shown in the applet.
Created attachment 170850 [details]
Popup with a device name
I can confirm this issue. Device name in a popup is also wrong.
Operating System: Arch Linux
KDE Plasma Version: 6.1.0
KDE Frameworks Version: 6.3.0
Qt Version: 6.7.1
Kernel Version: 6.9.6-2-cachyos (64-bit)
Graphics Platform: Wayland
Processors: 8 × Intel® Core™ i7-7700K CPU @ 4.20GHz
Memory: 15.6 ГиБ of RAM
Graphics Processor: AMD Radeon RX 6700 XT
Created attachment 170914 [details]
Device names as seen under macOS
I'm attaching how macOS sees the same input devices (Arctis headphones with chat+game mode)
I'm glad that I finally see devices' more natural names. "USB Audio Codec" is in place of "Analog Output (PCM2902 Audio Codec Analog Stereo)" which never made any sense to me. Now it matches what macOS was always reporting.
However, the Arctis case makes it seem unpolished. Looking forward to more updates!
I knew this change was coming to the applet, so I checked the MR behind it. It seems to use `node.nick` property to display prettier names. https://invent.kde.org/plasma/plasma-pa/-/merge_requests/239 However, it's seems to be the audio stack PipeWire (or it's PulseAudio/ALSA compatibility) that provides the weird data. Here's output of `pw-dump` props for a device that shows us "USB Device #1" ``` "props": { "alsa.card": 0, "alsa.card_name": "SteelSeries Arctis 5", "alsa.class": "generic", "alsa.components": "USB1038:12aa", "alsa.device": 1, "alsa.driver_name": "snd_usb_audio", "alsa.id": "S5", "alsa.long_card_name": "SteelSeries SteelSeries Arctis 5 at usb-0000:0c:00.3-3, full speed", "alsa.mixer_name": "USB Mixer", "alsa.name": "USB Audio #1", "alsa.resolution_bits": 16, "alsa.subclass": "generic-mix", "alsa.subdevice": 0, "alsa.subdevice_name": "subdevice #0", "api.alsa.card.longname": "SteelSeries SteelSeries Arctis 5 at usb-0000:0c:00.3-3, full speed", "api.alsa.card.name": "SteelSeries Arctis 5", "api.alsa.path": "hw:0,1,0", "api.alsa.pcm.card": 0, "api.alsa.pcm.stream": "playback", "audio.adapt.follower": "", "audio.channels": 2, "audio.position": "FL,FR", "card.profile.device": 1, "client.id": 48, "clock.quantum-limit": 8192, "device.api": "alsa", "device.class": "sound", "device.id": 72, "device.profile.description": "Game", "device.profile.name": "analog-game", "device.routes": 1, "factory.id": 18, "factory.mode": "merge", "factory.name": "api.alsa.pcm.sink", "library.name": "audioconvert/libspa-audioconvert", "media.class": "Audio/Sink", "node.description": "SteelSeries Arctis 5 Game", "node.driver": true, "node.name": "alsa_output.usb-SteelSeries_SteelSeries_Arctis_5_00000000-00.analog-game", "node.nick": "USB Audio #1", "node.pause-on-idle": false, "object.id": 78, "object.path": "alsa:pcm:0:hw:0,1,0:playback", "object.serial": 585, "priority.driver": 737, "priority.session": 737 } ``` The established convention in PipeWire seems to be to use node.description and not node.nick. This can also be seen in Szymon's example, where node.description is much more descriptive than node.nick. Human-readable node names as defined by ALSA UCM configuration (examples: https://github.com/alsa-project/alsa-ucm-conf/blob/e4277a204cd61f8f68f616df0d8c42e5bdeb1475/ucm2/USB-Audio/Behringer/UMC204HD-HiFi.conf#L76 https://github.com/alsa-project/alsa-ucm-conf/blob/e4277a204cd61f8f68f616df0d8c42e5bdeb1475/ucm2/Rockchip/rk3588-es8316/HiFi.conf#L2) are populated into the node.description field (seemingly with node.nick prepended to them), rather than node.nick, by PipeWire. Perhaps the issue here is that PipeWire's node.nick is unhelpful. Related PipeWire issue: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4077 Related issue: Bug 488897 This is a big problem because some devices look exactly the same. Please change it to use node.description, not node.nick. Sorry, the related bug is Bug 487658. Git commit eae94ed4f1eb62276fd27c4477347efe17127d90 by Harald Sitter. Committed on 31/08/2024 at 02:40. Pushed by sitter into branch 'master'. allow user to rename devices and select a preferred name source # Name Source Allows choosing the name out of a set number of sources. Names have been unified across applet and kcm now. Changes here are instantly applied throughout the stack. # Overrides Additionally, overrides may be set. These override all supported name fields so it doesn't matter which name source is chosen at the time the change is made. The override installs a wireplumber json file and restarts the stack to apply the change. Related: bug 487658, bug 491205 M +6 -1 applet/contents/ui/main.qml M +3 -0 src/CMakeLists.txt A +66 -0 src/devicenamesourcemodel.cpp [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)] A +27 -0 src/devicenamesourcemodel.h [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)] A +141 -0 src/devicerenamemodel.cpp [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)] A +30 -0 src/devicerenamemodel.h [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)] A +320 -0 src/devicerenamesaver.cpp [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)] A +49 -0 src/devicerenamesaver.h [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)] M +10 -0 src/globalconfig.kcfg M +1 -0 src/globalconfig.kcfgc M +17 -1 src/kcm/ui/DeviceListItem.qml A +267 -0 src/kcm/ui/RenameDevices.qml [License: GPL(3+eV) GPL(v3.0) GPL(v2.0)] M +10 -0 src/kcm/ui/main.qml M +14 -0 src/qml/plugin.cpp https://invent.kde.org/plasma/plasma-pa/-/commit/eae94ed4f1eb62276fd27c4477347efe17127d90 |
Created attachment 170753 [details] Audio Applet The devices' names in the audio volume applet changed from what it was with Plasma 6.0 and are different from what are shown in System Settings. Currently, I have a USB headphone device, SteelSeries Arctis 7, that has two output: Stereo (for normal audios) and Mono (for voice chat). For Plasma 6.0 and previous, the device shows up as two outputs in the applet, which match what are shown in System Settings: - Headphones Mono Output (SteelSeries Arctis 7 Chat) - Headphones (SteelSeries Arctis 7 Game) For Plasma 6.1, recently updated on Arch Linux, the outputs are shown as: - SteelSeries Arctis 7 - USB Audio #1 The names in System Settings are unchanged. SOFTWARE/OS VERSIONS Linux/KDE Plasma: Arch Linux (available in About System) KDE Plasma Version: 6.1.0 KDE Frameworks Version: 6.3.0 Qt Version: 6.7.1