Bug 488897 - Device names differ between widget and KCM
Summary: Device names differ between widget and KCM
Status: RESOLVED FIXED
Alias: None
Product: plasma-pa
Classification: Plasma
Component: applet (show other bugs)
Version: 6.1.0
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2024-06-21 14:23 UTC by Trần Nam Tuấn (Bill)
Modified: 2024-08-31 02:42 UTC (History)
13 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Audio Applet (37.26 KB, image/png)
2024-06-21 14:23 UTC, Trần Nam Tuấn (Bill)
Details
System Settings Audio Page (131.05 KB, image/png)
2024-06-21 14:24 UTC, Trần Nam Tuấn (Bill)
Details
Popup with a device name (8.85 KB, image/png)
2024-06-23 10:03 UTC, Oleg
Details
Device names as seen under macOS (203.04 KB, image/png)
2024-06-24 15:33 UTC, Szymon Łągiewka
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Trần Nam Tuấn (Bill) 2024-06-21 14:23:16 UTC
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
Comment 1 Trần Nam Tuấn (Bill) 2024-06-21 14:24:37 UTC
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.
Comment 2 Oleg 2024-06-23 10:03:14 UTC
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
Comment 3 Szymon Łągiewka 2024-06-24 15:33:51 UTC
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!
Comment 4 Szymon Łągiewka 2024-06-25 06:36:06 UTC
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
      }
```
Comment 5 burneddi 2024-07-16 04:19:31 UTC
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.
Comment 6 burneddi 2024-07-16 04:25:06 UTC
Related PipeWire issue: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4077
Comment 7 z411 2024-08-17 18:21:20 UTC
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.
Comment 8 z411 2024-08-17 18:22:09 UTC
Sorry, the related bug is Bug 487658.
Comment 9 Harald Sitter 2024-08-31 02:42:08 UTC
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