mudkipme / awesome-minisforum-v3

Useful information for Minisforum V3 AMD Tablet users.
MIT License
95 stars 13 forks source link

Quest to get fully functional Audio #23

Open makito89 opened 2 weeks ago

makito89 commented 2 weeks ago

Hello everyone,

I'm currently using HoloISO (Arch based distribution that attempts to create Steam Deck experience as close as possible).

The patch "Workaround for global volume control with the speaker" works but creates other issues like unusable headphone jack (no sound in headphones and once headphones jack is inserted-removed there is no longer sound from speakers).

So I started to investigate alternative options and I found that the issue seems to be with the alsa card profile initialization.

Here are the steps I've done so far :

  1. Removed the "Workaround for global volume control with the speaker" patch
  2. Edited /usr/share/alsa-card-profile/mixer/paths/analog-output.conf.common and added before [Element PCM]:
    [Element Master]
    switch = mute
    volume = ignore
  3. Rebooted
  4. Sound still has 2 modes mute-max volume (in reality is 3 modes : mute when volume is 0 .. push volume up once volume is 50% .. push volume up and the volume is at max till the volume bar is filled)
  5. Jumped from Steam Gamemode to Desktop (KDE Plasma using X11 window manager) and audio is almost (see below the second behavior for reason) 100% working as it should over speakers and also when using headphone jack
  6. Jumped back to Gamemode and the audio still works as it should
  7. Reboot and I'm back to a step 4 behavior and need to repeat step 5 to get back the working audio

While playing with this I've noticed 2 different behaviors in alsamixer.

First behavior is when I reboot the system and get into Gamemode or Desktop (previous step 4 - the one where the sound has only 3 modes mute-50%-100%) - I've opened a ssh session and launched alsamixer -c 1 and while playing with the volume buttons I've noticed that only the Speaker bar is changing - the PCM is "stuck" at 100% while Master is at 50% (as expected due to changes made at previous step 2)

Second behavior is only when I've switched from Gamemode to Desktop (previous step 5 - with almost 100% working audio) - with alsamixer -c 1 still opened the volume buttons now change the PCM bar and when the PCM bar is at 0% the Speaker bar drops from 100 to 68 and then to 30 and to 0/mute. When I increase the volume the first 4 pushes of volume up button there is no sound output as the Speaker bar goes from mute to 30 then to 68 and finaly to 100 (this is the reason I said that audio is almost 100% working) before PCM bar start to move and the sound is present in speakers or headphones.

Now I'm trying to figure out what happens, what gets initialized and how when switching from Gamemode to Desktop that makes the audio to work.

Any ideas and hints on where to dig further are welcome.

makito89 commented 2 weeks ago

Update.

I've found that if I run systemctl --user restart wireplumber.service the sound is working as expected.

The output of wpctl status before service restart (when sound in mute or max)

PipeWire 'pipewire-0' [1.0.3, user@MinisforumV3, cookie:2209520748]
 └─ Clients:
        31. gamescope-generic                   [1.0.3, user@MinisforumV3, pid:1596]
        34. WirePlumber                         [1.0.3, user@MinisforumV3, pid:1638]
        42. WirePlumber [export]                [1.0.3, user@MinisforumV3, pid:1638]
        75. pipewire                            [1.0.3, user@MinisforumV3, pid:2003]
        76. Steam Voice Settings                [1.0.3, user@MinisforumV3, pid:1823]
        77. Steam                               [1.0.3, user@MinisforumV3, pid:1823]
        78. Chromium input                      [1.0.3, user@MinisforumV3, pid:2520]
        79. wpctl                               [1.0.3, user@MinisforumV3, pid:3009]

Audio
 ├─ Devices:
 │      43. Rembrandt Radeon High Definition Audio Controller [alsa]
 │      44. ACP/ACP3X/ACP6x Audio Coprocessor   [alsa]
 │      45. Family 17h/19h HD Audio Controller  [alsa]
 │  
 ├─ Sinks:
 │  *   54. Family 17h/19h HD Audio Controller Analog Stereo [vol: 0.47]
 │  
 ├─ Sources:
 │      53. ACP/ACP3X/ACP6x Audio Coprocessor Stereo [vol: 1.00]
 │  *   55. Family 17h/19h HD Audio Controller Analog Stereo [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:

Video
 ├─ Devices:
 │      56. Hy-Usb2.0-1*MIC                     [v4l2]
 │      57. Hy-Usb2.0-1*MIC                     [v4l2]
 │      58. USB2.0 FHD UVC WebCam               [v4l2]
 │      59. USB2.0 FHD UVC WebCam               [v4l2]
 │      60. USB2.0 FHD UVC WebCam               [v4l2]
 │      61. USB2.0 FHD UVC WebCam               [v4l2]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │      32. (null)                             
 │      69. Hy-Usb2.0-1*MIC (V4L2)             
 │  *   71. USB2.0 FHD UVC WebCam (V4L2)       
 │      73. USB2.0 FHD UVC WebCam (V4L2)       
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:

and this after restart (when the sound is working)

PipeWire 'pipewire-0' [1.0.3, user@MinisforumV3, cookie:2209520748]
 └─ Clients:
        31. gamescope-generic                   [1.0.3, user@MinisforumV3, pid:1596]
        61. WirePlumber                         [1.0.3, user@MinisforumV3, pid:3026]
        63. WirePlumber [export]                [1.0.3, user@MinisforumV3, pid:3026]
        75. pipewire                            [1.0.3, user@MinisforumV3, pid:2003]
        76. Steam Voice Settings                [1.0.3, user@MinisforumV3, pid:1823]
        77. Steam                               [1.0.3, user@MinisforumV3, pid:1823]
        78. Chromium input                      [1.0.3, user@MinisforumV3, pid:2520]
        79. wpctl                               [1.0.3, user@MinisforumV3, pid:3037]

Audio
 ├─ Devices:
 │      49. Rembrandt Radeon High Definition Audio Controller [alsa]
 │      50. Family 17h/19h HD Audio Controller  [alsa]
 │      51. ACP/ACP3X/ACP6x Audio Coprocessor   [alsa]
 │  
 ├─ Sinks:
 │  *   73. Family 17h/19h HD Audio Controller Analog Stereo [vol: 0.47]
 │  
 ├─ Sources:
 │      72. ACP/ACP3X/ACP6x Audio Coprocessor Stereo [vol: 1.00]
 │  *   74. Family 17h/19h HD Audio Controller Analog Stereo [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:

Video
 ├─ Devices:
 │      45. USB2.0 FHD UVC WebCam               [v4l2]
 │      46. USB2.0 FHD UVC WebCam               [v4l2]
 │      47. USB2.0 FHD UVC WebCam               [v4l2]
 │      48. USB2.0 FHD UVC WebCam               [v4l2]
 │      55. Hy-Usb2.0-1*MIC                     [v4l2]
 │      65. Hy-Usb2.0-1*MIC                     [v4l2]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │      32. (null)                             
 │      36. USB2.0 FHD UVC WebCam (V4L2)       
 │  *   38. USB2.0 FHD UVC WebCam (V4L2)       
 │      40. Hy-Usb2.0-1*MIC (V4L2)             
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:

From this I suspect that the wireplumber.service is started before the card is fully initialized by pipewire as the IDs for the Audio tree change after service restart or maybe I'm wrong as I do not have any knowledge regarding how linux audio works.