HDMI monitor switches on but stays blank after suspend or screen lock

Hello everyone,
I have a HDMI monitor connected to mini PC with Celeron N4100. The monitor turns off after suspend or when screen is locked as it should be. But when a key is pressed or mouse is moved, the monitor turns on and there is nothing on the screen.

I am able to login through SSH from another PC. I did not know what to look for. The lsusb works but lspci does not return, when the screen is blank. I do not have this problem with other distributions. How do I find the root cause?

Hi, couple days ago a user also reporting same problem with Celeron N4100. May be you could check there.

But I’m not sure the solution works permanent or not. I prevent him to mark it as solved in case the problem come again in the future. Because there, on internet, some users also reporting the same problem (also happen on different distro).

I do not know if I have the same problem. The system is not going in to sleep or hibernate, as I am still able to SSH in to it. And also the monitor connected over HDMI wakes up, but there is no GUI or console.
I do not have any problems with reboot. Force power-off (holding the power button for long) and power-on brings back everything to normal.
As other distros work, I think it’s a bug with particular version of either the Kernel or GNOME.
I suspect the Kernel, as lspci command is not working during the issue.

I have dug a little bit.
I used the lspci -v before the screen lock and there is this device:

00:0e.0 Audio device: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio (rev 03)
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio
	Flags: bus master, fast devsel, latency 0, IRQ 138
	Memory at 7ffff00000 (64-bit, non-prefetchable) [size=16K]
	Memory at 7fffe00000 (64-bit, non-prefetchable) [size=1M]
	Capabilities: [50] Power Management version 3
	Capabilities: [80] Vendor Specific Information: Len=14 <?>
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel, snd_soc_skl, snd_sof_pci_intel_apl

After wake-up, if I do lspci -s 0e, the shell hangs. Every other PCI device prints info, except the above one.
I tried echo 1 > /sys/bus/pci/devices/0000\:00\:0e.0/removeand the shell hung-up

That should be expected since you said the HDMI monitor is blank after suspend or screen lock. Since the HDMI connection failed, it should also impact the sound driver that control the sound trough HDMI connection.

But I’m not sure, maybe you could try to blacklist those three modules snd_hda_intel, snd_soc_skl, snd_sof_pci_intel_apl during the boot and see what happen when you wake up from suspend.

By the way, I’m interesting with your lspci info above. It’s out of topic, but would you like to give info about your soundcard hardware aplay -l and aplay -L? Thank you.

When the snd_hda_intelis blacklisted, the blank screen issue is gone. Of course there are no sound devices available when the driver is blacklisted. Blacklisting the other two drivers didn’t change anything.

aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
aplay -L

null
    Discard all samples (playback) or generate zero samples (capture)
pipewire
    PipeWire Sound Server
default
    Default ALSA Output (currently PipeWire Media Server)
sysdefault:CARD=PCH
    HDA Intel PCH, ALC269VC Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    Front output / input
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC269VC Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=PCH,DEV=0
    HDA Intel PCH, HDMI 0
    HDMI Audio Output
hdmi:CARD=PCH,DEV=1
    HDA Intel PCH, HDMI 1
    HDMI Audio Output
hdmi:CARD=PCH,DEV=2
    HDA Intel PCH, HDMI 2
    HDMI Audio Output
hdmi:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 3
    HDMI Audio Output
hdmi:CARD=PCH,DEV=4
    HDA Intel PCH, HDMI 4
    HDMI Audio Output

Maybe you could create /etc/modprobe.d/alsa-custom.conf and add options snd-intel-dspcfg dsp_driver=1 to the file. Then blacklist only the snd_soc_skl.

If the bug still happen, please report it to https://bugzilla.redhat.com specific to alsa-sof-firmware packages.

If I’m not wrong, the sof firmware technology allowing some modules to assign to same hardware address, that’s why it happen.

Other thing, there a way to run custom systemd service to run before sleep target and after wakeup target. Maybe you could create custom script to remove the module before the system go to sleep and load again after the system back to live. Or maybe it will lot easier to disable the sleep and wait for the bugs fixed.

Btw thank you for sharing the aplay -l and aplay -L. I need this references related to sof firmware if other user here have a problem.

@oprizal , thanks a lot for your help. I have found the solution. According to your advice I wanted to file a bug report and ended up finding the solution.

Steps:

Enabled debug messages for the drivers:

options snd_hda_intel dyndbg==pmf
options snd_soc_skl dyndbg==pmf
options snd_sof_pci_intel_apl dyndbg==pmf

Error in dmesg:

[    6.472194] snd_hda_intel:check_position_fix: snd_hda_intel 0000:00:0e.0: Using SKL position fix
[    6.511465] snd_hda_intel 0000:00:0e.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    6.516354] snd_hda_intel:azx_first_init: snd_hda_intel 0000:00:0e.0: chipset global capabilities = 0x6701
[    6.516384] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[    6.516393] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[    6.571862] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC269VC: line_outs=1 (0x15/0x0/0x0/0x0/0x0) type:hp
[    6.571872] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    6.571875] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    6.571877] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    6.571879] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    6.571881] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
[    6.571883] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
[    6.696135] snd_hda_codec_hdmi hdaudioC0D2: Monitor plugged-in, Failed to power up codec ret=[-13]

Solution is to add the following Kernel boot argument:

snd_hda_codec_hdmi.enable_silent_stream=0

New dmesg output:

[    0.000000] Command line: BOOT_IMAGE=(hd0,gpt2)/ostree/fedora-2b55d82dc9169c7132dfb90581df8de5dd7e486cfadf9d9dd67d53f36f28cb49/vmlinuz-5.15.11-200.fc35.x86_64 rhgb quiet root=UUID=080834bc-e7ef-483e-879c-11e04b460498 rootflags=subvol=root snd_hda_codec_hdmi.enable_silent_stream=0 ostree=/ostree/boot.0/fedora/2b55d82dc9169c7132dfb90581df8de5dd7e486cfadf9d9dd67d53f36f28cb49/0
[    0.102007] Kernel command line: BOOT_IMAGE=(hd0,gpt2)/ostree/fedora-2b55d82dc9169c7132dfb90581df8de5dd7e486cfadf9d9dd67d53f36f28cb49/vmlinuz-5.15.11-200.fc35.x86_64 rhgb quiet root=UUID=080834bc-e7ef-483e-879c-11e04b460498 rootflags=subvol=root snd_hda_codec_hdmi.enable_silent_stream=0 ostree=/ostree/boot.0/fedora/2b55d82dc9169c7132dfb90581df8de5dd7e486cfadf9d9dd67d53f36f28cb49/0
[    6.406512] snd_hda_intel:check_position_fix: snd_hda_intel 0000:00:0e.0: Using SKL position fix
[    6.406601] snd_hda_intel 0000:00:0e.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    6.411036] snd_hda_intel:azx_first_init: snd_hda_intel 0000:00:0e.0: chipset global capabilities = 0x6701
[    6.411069] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[    6.411078] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[    6.476911] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC269VC: line_outs=1 (0x15/0x0/0x0/0x0/0x0) type:hp
[    6.476923] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    6.476926] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    6.476929] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    6.476931] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    6.476933] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
[    6.476935] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
[   14.392417] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[   14.392442] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[   24.854977] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[   24.854993] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[   77.353145] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[   77.353173] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[   82.699115] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[   82.699155] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[  629.214008] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[  629.214036] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[  788.406110] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[  788.406143] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[  800.555061] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[  800.555091] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled
[  811.946006] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: Clearing TCSEL
[  811.946035] snd_hda_intel:azx_init_pci: snd_hda_intel 0000:00:0e.0: SCH snoop: Enabled

My Kernel version is 5.15.11-200.fc35.x86_64. I will try to find out why this version still has the bug.

1 Like

Awesome!

Bug report: [BUG] HDMI monitor doesn't wake up after suspend or screen lock · Issue #227 · fedora-silverblue/issue-tracker · GitHub

1 Like