Bug 273476 - audio/kmix: 23.08.{0,1,2,3,4} can't detect mixers [regression]
Summary: audio/kmix: 23.08.{0,1,2,3,4} can't detect mixers [regression]
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: --- Affects Some People
Assignee: freebsd-kde (group)
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2023-08-31 13:28 UTC by Vladimir Druzenko
Modified: 2024-01-10 04:28 UTC (History)
8 users (show)

See Also:
jhale: maintainer-feedback+


Attachments
Port patch (685 bytes, patch)
2023-10-26 16:25 UTC, Alex Dupre
ale: maintainer-approval? (kde)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Druzenko freebsd_committer freebsd_triage 2023-08-31 13:28:45 UTC
13.2 amd64.
Previous version work fine, but 23.08.0 can't detect mixers:
============================================================
$ kmix --multidriver
percent 5 -> divisor 20
org.kde.kmix: Backends from settings = ()
org.kde.kmix: Multi driver mode from settings = false
org.kde.kmix: Multi driver mode from command line = true
org.kde.kmix: true
org.kde.kmix: 
org.kde.kmix: Starting KMix using keepvisibility= false , failsafe= false , sessionRestore= false
org.kde.kmix: Creating new KMix window
org.kde.kmix: card "OSS::Realtek_ALC883_(Rear_Analog_7.1:1" control "0" preferred? true
org.kde.kmix: multiDriverMode = MULTI
org.kde.kmix: Sound drivers supported = ALSA,OSS4,MPRIS2
org.kde.kmix: Looking for mixers with the "ALSA" driver
org.kde.kmix: "Trying ALSA Device 'hw:0': " not found: snd_ctl_open err= No such file or directory
org.kde.kmix: Looking for mixers with the "OSS4" driver
org.kde.kmix: Looking for mixers with the "MPRIS2" driver
org.kde.kmix: cardBaseName= "Application Streams" cardDiscriminator= 1
org.kde.kmix: Get control of busDestination= "org.mpris.MediaPlayer2.smplayer" id= "smplayer"
org.kde.kmix: MPRIS2: Attached media player on busDestination= "org.mpris.MediaPlayer2.smplayer"
org.kde.kmix: opened "Application Streams" count 0 dynamic? true needsPolling? false
org.kde.kmix: No master detected but dynamic
org.kde.kmix: Create QDBusConnection for object  "/Mixers/MPRIS2__Playback_Streams_1"
org.kde.kmix: Added mixer "MPRIS2::Playback_Streams:1"
org.kde.kmix: Accepted mixer "MPRIS2::Playback_Streams:1" for the "MPRIS2" driver
org.kde.kmix: Sound drivers detected = MPRIS2
org.kde.kmix: Sound drivers used = ALSA,MPRIS2
org.kde.kmix: Hotplug events accepted = ALSA
org.kde.kmix: Total detected mixers 1
org.kde.kmix: Connecting to Solid
QKqueueFileSystemWatcherEngine::addPaths: open: No such file or directory
org.kde.kmix: Searching for GUI profile "MPRIS2.default"
org.kde.kmix: reading "/usr/local/share/kmix/profiles/MPRIS2.default.xml"
org.kde.kmix: "Application Streams MPRIS2.default"
org.kde.kmix: I have added "MPRIS2.default" ; Number of profiles is now  1
org.kde.kmix: Add  "MPRIS2.default"
org.kde.kmix: id "MPRIS2.default" flags QFlags(0x1|0x2)
org.kde.kmix: "MPRIS2.default" orientation Qt::Vertical
org.kde.kmix: KMixToolBox::loadView() grp= "View.MPRIS2.default"
org.kde.kmix:  No global master, returning the first device
org.kde.kmix: id "dockArea" flags QFlags()
org.kde.kmix: "dockArea" orientation Qt::Vertical
adding 1 mixers
mixer "MPRIS2::Playback_Streams:1" "Application Streams"
org.kde.kmix:  No global master, returning the first device
org.kde.kmix:  No global master, returning the first device
org.kde.kmix:  No global master, returning the first device
org.kde.kmix:  No global master, returning the first device
org.kde.kmix: Checking KDED "kmixd" module
org.kde.kmix: KDED module checks done
org.kde.kmix: Plugging id= "smplayer" , busDestination "org.mpris.MediaPlayer2.smplayer" , name=  "smplayer"
org.kde.kmix: no desktop file or known icon for "smplayer"
got icon "smplayer" for application "SMPlayer"
for "SMPlayer" icon "smplayer"
org.kde.kmix: no desktop file or known icon for "smplayer"
org.kde.kmix: "MPRIS2.default" orientation Qt::Vertical
org.kde.kmix: "dockArea" orientation Qt::Vertical
adding 1 mixers
mixer "MPRIS2::Playback_Streams:1" "Application Streams"
org.kde.kmix:  No global master, returning the first device
org.kde.kmix:  No global master, returning the first device
============================================================

In GUI it show Applications only, but not any channels.

Sound work as before - input and output, in firefox, smplayer and etc.
All ports build locally withput pulseaudio.

$ ls -l /dev/dsp* /dev/sndstat /dev/mixer*
crw-rw-rw-  1 root  wheel  0x104 31 авг.  14:18 /dev/dsp0.0
crw-rw-rw-  1 root  wheel   0xfd 30 авг.  19:23 /dev/dsp1.0
crw-rw-rw-  1 root  wheel   0xfe 30 авг.  19:23 /dev/dsp2.0
crw-rw-rw-  1 root  wheel  0x100 30 авг.  19:23 /dev/dsp3.0
crw-rw-rw-  1 root  wheel   0xff 30 авг.  19:23 /dev/dsp4.0
crw-rw-rw-  1 root  wheel   0x43 30 авг.  19:19 /dev/mixer0
crw-rw-rw-  1 root  wheel   0x5b 30 авг.  19:19 /dev/mixer1
crw-rw-rw-  1 root  wheel   0x5c 30 авг.  19:19 /dev/mixer2
crw-rw-rw-  1 root  wheel   0x5d 30 авг.  19:19 /dev/mixer3
crw-rw-rw-  1 root  wheel   0x96 30 авг.  19:19 /dev/mixer4
crw-r--r--  1 root  wheel    0xa 30 авг.  19:19 /dev/sndstat

$ cat /dev/sndstat
Installed devices:
pcm0: <Creative CT5880-C> (play/rec) default
pcm1: <Realtek ALC883 (Rear Analog 7.1/2.0)> (play/rec)
pcm2: <Realtek ALC883 (Front Analog)> (play/rec)
pcm3: <Realtek ALC883 (Rear Digital)> (play)
pcm4: <USB audio> (rec)
No devices installed from userspace.

$ pkg info | grep phonon
phonon-gstreamer-qt5-4.10.0_5  GStreamer backend for Phonon
phonon-qt5-4.11.1_3            KDE multimedia framework

KMix:
https://ibb.co/fSTck76
https://ibb.co/Fb8nxQf
https://ibb.co/JCfBcjG
phononsettings:
https://ibb.co/DfkhCK9
systemsettings:
https://ibb.co/MGYBW97
Comment 1 Denis Shaposhnikov 2023-09-03 14:01:26 UTC
Same problem here. In the tray it shows a tooltip with "No mixer devices available".
Comment 2 Martin Birgmeier 2023-09-17 06:37:47 UTC
Same here.

In addition, I use a setup without pulseaudio: x11/plasma5-plasma has PULSEAUDIO=off.

-- Martin
Comment 3 Martin Birgmeier 2023-09-17 07:17:16 UTC
This is probably interesting: https://invent.kde.org/multimedia/kmix/-/blob/master/README.oss4?ref_type=heads
Comment 4 Martin Birgmeier 2023-09-17 09:07:02 UTC
If I just copy the following to /tmp

[0]% ll /tmp/*mix*
-rwxr-xr-x  1 root  wheel  412368 17 Sep. 10:59 /tmp/kmix
-rwxr-xr-x  1 root  wheel  287648  7 Aug. 20:02 /tmp/libkmixcore.so.23.04.3
lrwxr-xr-x  1 root  wheel      22 17 Sep. 11:01 /tmp/libkmixcore.so.5 -> libkmixcore.so.23.04.3
[0]% 

then I can start a functioning kmix using

LD_LIBRARY_PATH=/tmp /tmp/kmix                        

All the rest is KDE Gear 23.08.1 and latest ports, in general.

Therefore, not much else besides kmix itself seems to be wrong.

-- Martin
Comment 5 Martin Birgmeier 2023-09-17 09:10:31 UTC
Starting the old and the new kmix with stdout and stderr redirected to logfiles, and then diffing the logfiles, yields only a very small difference:

2,6d1
< org.kde.kmix: Mixer id was empty when creating DBUS path. Emergency code created the id= "OSS:::1"
< org.kde.kmix: Mixer id was empty when creating DBUS path. Emergency code created the id= "OSS:::1"
< org.kde.kmix: Mixer id was empty when creating DBUS path. Emergency code created the id= "OSS:::1"
< org.kde.kmix: Mixer id was empty when creating DBUS path. Emergency code created the id= "OSS:::1"
< org.kde.kmix: Mixer id was empty when creating DBUS path. Emergency code created the id= "OSS:::1"
7a3,4
> adding 1 mixers
> mixer "MPRIS2::Playback_Streams:1" "Flux pour applications"

-- Martin
Comment 6 Martin Birgmeier 2023-09-17 09:23:43 UTC
(In reply to Martin Birgmeier from comment #4)

To clarify the /tmp/kmix shown, it is the 23.04.3 version. Forgot to specify -p when copying it from the backup.

-- Martin
Comment 7 Vladimir Druzenko freebsd_committer freebsd_triage 2023-09-17 14:53:34 UTC
(In reply to Martin Birgmeier from comment #6)
After read commit https://invent.kde.org/multimedia/kmix/-/commit/dbf2ddad I created this "hack" and it fixed (partially?) the issue:
--- CMakeLists.txt.orig
+++ CMakeLists.txt
@@ -126,7 +126,7 @@

   if (${TEST_COMPILE_RESULT} AND (${TEST_RUN_RESULT} EQUAL 0))
     message(STATUS "Detected OSS version ${TEST_RESULT_VERSION}")
-    if (${TEST_RESULT_VERSION} GREATER_EQUAL 0x040000)
+    if (${TEST_RESULT_VERSION} GREATER_EQUAL 0x050000)
       message(STATUS "Building with OSS 4 support")
       set(HAVE_OSS_4 true)
       add_definitions(-DHAVE_OSS_4)

So it detects OSS4, but it isn't compatible with OSS in FreeBSD and fallback to OSS3 is a possible temporary workaround.
Comment 8 Vladimir Druzenko freebsd_committer freebsd_triage 2023-10-14 15:55:05 UTC
Same for 23.08.2 and my workaround work too.
Comment 9 Alex Dupre freebsd_committer freebsd_triage 2023-10-26 16:25:08 UTC
Created attachment 245894 [details]
Port patch

The OSS4 backend doesn't work on FreeBSD, it uses many IOCTL that are not supported, I don't think it can be patched to make it working, using OSS3 seems the right thing.

kmix tries to use other backends first (ALSA for sure, PulseAudio optionally), but fallback to OSS if it cannot find a working mixer, that is what's happening.

Jonathan Marten <jonathan.marten@kdemail.net> should be alerted about it: https://invent.kde.org/multimedia/kmix/-/blob/da4dff77f9db4fac5c8157472c45126751825a04/README.oss4

Anyway, my patch simply revert to the previous situation, disabling OSS4 unconditionally and enabling OSS3.
Comment 10 Vladimir Druzenko freebsd_committer freebsd_triage 2023-11-09 19:58:07 UTC
Same for 23.08.3.
Comment 11 Vladimir Druzenko freebsd_committer freebsd_triage 2023-12-09 12:46:56 UTC
Same for 23.08.4.
Comment 12 Vladimir Druzenko freebsd_committer freebsd_triage 2023-12-22 19:13:18 UTC
ping
Comment 13 commit-hook freebsd_committer freebsd_triage 2024-01-10 00:19:12 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=35b5dec477c73d1f3c81d00cdabd027c78040637

commit 35b5dec477c73d1f3c81d00cdabd027c78040637
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2024-01-10 00:11:27 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2024-01-10 00:18:22 +0000

    audio/kmix: Fix OSS backend support

    PR:             273476
    Reported by:    vvd
    MFH:            2024Q1

 audio/kmix/Makefile                         |  1 +
 audio/kmix/files/patch-CMakeLists.txt (new) | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)
Comment 14 commit-hook freebsd_committer freebsd_triage 2024-01-10 00:20:14 UTC
A commit in branch 2024Q1 references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=17292fe162db8385371feb6a5686db6882846d2d

commit 17292fe162db8385371feb6a5686db6882846d2d
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2024-01-10 00:11:27 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2024-01-10 00:19:24 +0000

    audio/kmix: Fix OSS backend support

    PR:             273476
    Reported by:    vvd
    MFH:            2024Q1

    (cherry picked from commit 35b5dec477c73d1f3c81d00cdabd027c78040637)

 audio/kmix/Makefile                         |  1 +
 audio/kmix/files/patch-CMakeLists.txt (new) | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)
Comment 15 Jason E. Hale freebsd_committer freebsd_triage 2024-01-10 00:24:17 UTC
Should be fixed now.
Comment 16 Vladimir Druzenko freebsd_committer freebsd_triage 2024-01-10 04:28:27 UTC
(In reply to Jason E. Hale from comment #15)
Thanks!
Can you send patch to upstream?