PulseAudio automatically switches away from HDMI after display sleep

Bug #1895665 reported by Andrii Puhalevich
24
This bug affects 4 people
Affects Status Importance Assigned to Milestone
pulseaudio (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

I have an Nvidia based video card that has an HDMI output + a DisplayPort output.
DisplayPort output audio is listed as "Digital Stereo (HDMI)" and HDMI output is listed as "Digital Stereo (HDMI 2)".

I prefer to use "Digital Stereo (HDMI 2)".
But after each display sleep (screen lock for example) audio is switched to built in audio

ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: pulseaudio 1:13.99.1-1ubuntu3.6
ProcVersionSignature: Ubuntu 5.4.0-47.51-generic 5.4.55
Uname: Linux 5.4.0-47-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu27.8
Architecture: amd64
CasperMD5CheckResult: skip
CurrentDesktop: XFCE
Date: Tue Sep 15 14:56:58 2020
InstallationDate: Installed on 2020-06-20 (86 days ago)
InstallationMedia: Xubuntu 20.04 LTS "Focal Fossa" - Release amd64 (20200423)
SourcePackage: pulseaudio
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 11/11/2019
dmi.bios.vendor: Dell Inc.
dmi.bios.version: 1.11.1
dmi.board.name: 0CNDTP
dmi.board.vendor: Dell Inc.
dmi.board.version: A01
dmi.chassis.type: 10
dmi.chassis.vendor: Dell Inc.
dmi.modalias: dmi:bvnDellInc.:bvr1.11.1:bd11/11/2019:svnDellInc.:pnG55590:pvr:rvnDellInc.:rn0CNDTP:rvrA01:cvnDellInc.:ct10:cvr:
dmi.product.family: GSeries
dmi.product.name: G5 5590
dmi.product.sku: 08EA
dmi.sys.vendor: Dell Inc.

Revision history for this message
Andrii Puhalevich (andii-puhalevich) wrote :
Revision history for this message
Hui Wang (hui.wang) wrote :

I guess your bug is similar to this one: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1888598

Could you please do a test:

edit the /usr/share/pulseaudio/alsa-mixer/paths/hdmi-output-0.conf and hdmi-output-1.conf, change the priority in 0.conf to 58 and change the priority in 1.conf to 59, then reboot and redo the test.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Please try editing /etc/pulse/default.pa and comment out all of this:

  ### Should be after module-*-restore but before module-*-detect
  load-module module-switch-on-port-available

  ### Use hot-plugged devices like Bluetooth or USB automatically (LP: #1702794)
  .ifexists module-switch-on-connect.so
  load-module module-switch-on-connect
  .endif

Then reboot.

Changed in pulseaudio (Ubuntu):
status: New → Incomplete
Revision history for this message
Andrii Puhalevich (andii-puhalevich) wrote :

After #2 it prefers HDMI 2 when its connected, thanks @hui.wang.
But seems that anyway it prefers internal analog audio instead of digital audio.
Will observe more to understand new behavior after reboots, suspends and locks.

Revision history for this message
Hui Wang (hui.wang) wrote :

Do you mean even did the change of #2, the output device still changes to internal analog audio after sleep? Before sleep, you select the hdmi-output-2 manually?

Revision history for this message
Andrii Puhalevich (andii-puhalevich) wrote : Re: [Bug 1895665] Re: PulseAudio automatically switches from HDMI 2 after display sleep

Right. I just tested:
Selected digital device.
Selected HDMI 2 for digital device.
Disconnected HDMI 2 from laptop (digital device automatically switched to
HDMI 1, sound automatically switched to internal analog audio).
Connected HDMI 2 to laptop (digital device automatically switched to HDMI 2
- this resolves the main part of the issue, but sound still left on
internal analog audio).

On Wed, Sep 16, 2020 at 12:30 PM Hui Wang <email address hidden>
wrote:

> Do you mean even did the change of #2, the output device still changes
> to internal analog audio after sleep? Before sleep, you select the hdmi-
> output-2 manually?
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1895665
>
> Title:
> PulseAudio automatically switches from HDMI 2 after display sleep
>
> Status in pulseaudio package in Ubuntu:
> Incomplete
>
> Bug description:
> I have an Nvidia based video card that has an HDMI output + a
> DisplayPort output.
> DisplayPort output audio is listed as "Digital Stereo (HDMI)" and HDMI
> output is listed as "Digital Stereo (HDMI 2)".
>
> I prefer to use "Digital Stereo (HDMI 2)".
> But after each display sleep (screen lock for example) audio is switched
> to built in audio
>
> ProblemType: Bug
> DistroRelease: Ubuntu 20.04
> Package: pulseaudio 1:13.99.1-1ubuntu3.6
> ProcVersionSignature: Ubuntu 5.4.0-47.51-generic 5.4.55
> Uname: Linux 5.4.0-47-generic x86_64
> NonfreeKernelModules: nvidia_modeset nvidia
> ApportVersion: 2.20.11-0ubuntu27.8
> Architecture: amd64
> CasperMD5CheckResult: skip
> CurrentDesktop: XFCE
> Date: Tue Sep 15 14:56:58 2020
> InstallationDate: Installed on 2020-06-20 (86 days ago)
> InstallationMedia: Xubuntu 20.04 LTS "Focal Fossa" - Release amd64
> (20200423)
> SourcePackage: pulseaudio
> UpgradeStatus: No upgrade log present (probably fresh install)
> dmi.bios.date: 11/11/2019
> dmi.bios.vendor: Dell Inc.
> dmi.bios.version: 1.11.1
> dmi.board.name: 0CNDTP
> dmi.board.vendor: Dell Inc.
> dmi.board.version: A01
> dmi.chassis.type: 10
> dmi.chassis.vendor: Dell Inc.
> dmi.modalias:
> dmi:bvnDellInc.:bvr1.11.1:bd11/11/2019:svnDellInc.:pnG55590:pvr:rvnDellInc.:rn0CNDTP:rvrA01:cvnDellInc.:ct10:cvr:
> dmi.product.family: GSeries
> dmi.product.name: G5 5590
> dmi.product.sku: 08EA
> dmi.sys.vendor: Dell Inc.
>
> To manage notifications about this bug go to:
>
> https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1895665/+subscriptions
>

Changed in pulseaudio (Ubuntu):
status: Incomplete → New
Revision history for this message
Hui Wang (hui.wang) wrote : Re: PulseAudio automatically switches from HDMI 2 after display sleep

I did a test today, plug two monitors to Intel hdmi ports, I chose hdmi2 in the gnome-control-center, suspend and resume, the output device still on the hdmi2, I didn't reproduce the problem.

When you have time, please collect the log according to https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1888598/comments/12 and https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1888598/comments/32

Revision history for this message
Andrii Puhalevich (andii-puhalevich) wrote :

It seems that it depends on connected monitor. In my case monitor goes to power saving mode after laptop suspend or in few minutes after system lock. So ubuntu switches to analog device after resume/unlock.
But its not so critical, because device can be easily changed with tray icon.
And for HDMI 2 selecting I also had to open sound settings window.

Btw, maybe try to set priority=99 for hdmi-output-1.conf?

Revision history for this message
Hui Wang (hui.wang) wrote :

If you want the hdmi-output to be selected automatically after plugging, you need to manually select it as output once, then pulseaudio will remember uer's preference. Then unplug and replug the monitor, the system will automatically switch to hdmi-output.

summary: - PulseAudio automatically switches from HDMI 2 after display sleep
+ PulseAudio automatically switches away from HDMI after display sleep
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in pulseaudio (Ubuntu):
status: New → Confirmed
tags: added: groovy
Revision history for this message
Jean-Marc Le Peuvedic (lepeuvedic) wrote :

Hi!
Affected by this bug, but not exactly bug #1888598.
Config: Asus Extreme Omega integrated HDA Intel PCH as Card 1 + ASUS Nvidia 3090 as Card 2.
Card 0 is an USB webcam and only an audio input.

Problem occurs as described: the audio output changes when the monitor connected to a DisplayPort output goes to sleep (after locking). No need for the computer to go through a sleep/wake cycle.

Normal operation is restored by 'pulseaudio -k', then choosing the correct output using e.g. pavucontrol.

Commands 'pactl list' and 'pacmd list-cards' give different results:

pacmd list-cards:
before: HDMI output is available
 ports:
  hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: yes)
   properties:
    device.icon_name = "video-display"
    device.product.name = "Acer T272HUL

after:
 ports:
  hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
   properties:
    device.icon_name = "video-display"

pactl list:
before:
 Ports :
  hdmi-output-0: HDMI / DisplayPort (priority: 5900, latency offset: 0 usec, available)
   Propriétés :
    device.icon_name = "video-display"
    device.product.name = "Acer T272HUL
"
   Partie du(des) profil(s) : output:hdmi-stereo
after:
        Ports :
                hdmi-output-0: HDMI / DisplayPort (priority: 5900, latency offset: 0 usec, not available)
                        Propriétés :
                                device.icon_name = "video-display"
                        Partie du(des) profil(s) : output:hdmi-stereo

Revision history for this message
Jean-Marc Le Peuvedic (lepeuvedic) wrote :

Here is what happens as seen by pulseaudio -vvvv during the monitor sleep/wake cycle leading to disappearance of the HDMI output:

D: [pulseaudio] alsa-util.c: ELD info empty (for device=3)
D: [pulseaudio] module-alsa-card.c: Jack 'HDMI/DP,pcm=3 Jack' is now unplugged
D: [pulseaudio] device-port.c: Setting port hdmi-output-0 to status no
D: [pulseaudio] core-subscribe.c: Dropped redundant event due to change event.
D: [pulseaudio] module-switch-on-port-available.c: Trying to switch away from port hdmi-output-0, found no better option
I: [pulseaudio] core.c: default_sink: alsa_output.pci-0000_65_00.1.hdmi-stereo -> alsa_output.pci-0000_00_1f.3.iec958-stereo
D: [pulseaudio] card.c: Setting card alsa_card.pci-0000_65_00.1 profile output:hdmi-stereo to availability status no
D: [pulseaudio] core-subscribe.c: Dropped redundant event due to change event.
D: [pulseaudio] module-switch-on-port-available.c: Active profile output:hdmi-stereo on card alsa_card.pci-0000_65_00.1 became unavailable, switching to another profile
D: [pulseaudio] sink.c: alsa_output.pci-0000_65_00.1.hdmi-stereo: state: SUSPENDED -> UNLINKED
D: [pulseaudio] source.c: alsa_output.pci-0000_65_00.1.hdmi-stereo.monitor: state: SUSPENDED -> UNLINKED
D: [alsa-sink-HDMI 0] alsa-sink.c: Thread shutting down
I: [pulseaudio] sink.c: Freeing sink 1 "alsa_output.pci-0000_65_00.1.hdmi-stereo"
I: [pulseaudio] source.c: Freeing source 2 "alsa_output.pci-0000_65_00.1.hdmi-stereo.monitor"
D: [pulseaudio] card.c: alsa_card.pci-0000_65_00.1: active_profile: output:hdmi-stereo -> off
D: [pulseaudio] core-subscribe.c: Dropped redundant event due to change event.
D: [pulseaudio] alsa-util.c: ELD info empty (for device=3)
D: [pulseaudio] module-alsa-card.c: Jack 'HDMI/DP,pcm=3 Jack' is now unplugged
D: [pulseaudio] alsa-util.c: ELD info empty (for device=3)

Although slightly redundant, it looks all right.
Part of the problem seems to come from blacklisting HDMI monitors by default (not switching to them when they are plugged in). But that's the second part of the problem.

I: [pulseaudio] module-switch-on-connect.c: Refusing to switch to blacklisted sink alsa_output.pci-0000_65_00.1.hdmi-stereo

The first and major issue is the absence of any event detection when the DP monitor wakes up.

"pulseaudio -k" restarts the daemon, and probing at startup seems to find it again.

Revision history for this message
Jean-Marc Le Peuvedic (lepeuvedic) wrote :

if I add blacklist= to load-module module-switch-on-connect, switching to HDMI is no longer inhibited, and the HDMI output is listed first in pavucontrol, but the output still disappears for good when the monitor goes to sleep.

Revision history for this message
Vasilis Lemonidis (vaslemonidis) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.