Secondary monitor via HDMI issue

Hello,

i have a laptop Lenovo IdeaPad L340-15IRH running Arch Linux. Laptop has Nvidia 1650 GPU. By installing Prime and Nvidia proprietary drives and by blacklisting Nouveau i can use prime-run to run games on dedicated GPU. Yaaay, and it works very nice, 10 points to Nvidia! :)

The only remaining issue is my secondary monitor. I connect it via HDMI and even thou nvidia-settings immediately recognizes the monitor but it never even activates and when i try switching between monitors using “external display” button on my laptop, only choice i have is primary laptop monitor.
External monitor is ok, works properly when i switch to Windows.

What am i doing wrong? Xorg.conf file attached below
xorg.txt (1.3 KB)

Hello,

Same issue here (Manjaro, 440.59 driver version).
Looks like external monitors are not supported yet in proprietary drivers.
Unfortunately, I don’t see a workaround for this issue yet. We need to wait for NVIDIA to fix this in the future release.

Regards,
KD.

Hi,

Could you please send nvidia bug report in repro state.

Hello. Not sure what “repro state” means, here is the nvidia-bug-report i generated. Sorry for not including it in the original post :(

After research i did online i’m very confident my laptop HDMI port is attached to NVIDIA card and only solutions i could find for those scenarios were like “run entire session on Nvidia always” but power-wise it’s not very reasonable so if possible i would avoid it :)
nvidia-bug-report.log.gz (277 KB)

Hello,

I would like to share a solution that I am currently sticking to.
While we are waiting for NVIDIA to fix HDMI support, I believe that following workaround is the best way to handle the issue.

The idea is to switch whole X session to NVIDIA but not all the time.
My point was to switch only when HDMI output is being used.
Unfortunately switching to NVIDIA requires X-Server to be restarted.
Also, the switch needs to be triggered manually.
It’s not a perfect solution, but at least it allows me to use external monitor when I need it.

If you are interested in such solution, please follow these steps:

  1. Create new config file (note “.disabled” suffix, we will need this settings to be disabled by default):
nano '/etc/X11/xorg.conf.d/999-zzz_custom_nv_multiscreen.conf.disabled'
### @KD Custom ###
# dGPU only, fixes nvidia HDMI support, breaks dGPU powersaving
# NOTE: more tweaks required at: /usr/share/sddm/scripts/Xsetup

Section "Module"
    Load "modesetting"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"

    # NOTE: verify your BusID with command: `lspci | grep -E "VGA|3D"`
    BusID "PCI:1:0:0"

    Option "AllowEmptyInitialConfiguration"
EndSection
  1. Edit SDDM config file (if you don’t use SDDM it will be a different file):
nano '/usr/share/sddm/scripts/Xsetup'
#!/bin/sh
# Xsetup - run as root before the login dialog appears

### @KD Custom ###
if [[ -f '/etc/X11/xorg.conf.d/999-zzz_custom_nv_multiscreen.conf' ]]; then
    # NOTE: verify provider names with command: `xrandr --listproviders`
    xrandr --setprovideroutputsource modesetting NVIDIA-G0

    xrandr --auto
    xrandr --dpi 96
fi
  1. Then you can use following commands to switch:
  • from Intel to NVIDIA (enable HDMI, disable power-saving):
ln -s '/etc/X11/xorg.conf.d/999-zzz_custom_nv_multiscreen.conf.disabled' '/etc/X11/xorg.conf.d/999-zzz_custom_nv_multiscreen.conf' && systemctl restart sddm
  • from NVIDIA to Intel (disable HDMI, enable power-saving):
  • rm '/etc/X11/xorg.conf.d/999-zzz_custom_nv_multiscreen.conf' && systemctl restart sddm
    

    Basically that’s all.
    You might want to save above commands as scripts.

    By the way - I think that similar behavior might be achieved with optimus-manager:

    https://github.com/Askannz/optimus-manager/wiki
    

    However I am not sure about this one. I have never used it. And for the current issue - I wanted to avoid installing external software.

    Regards,
    KD.

    dziamilapps thank you so much for the reply. Unfortunately this method didn’t work for me :( I followed the steps, very easy. Instead of sddm i edited /etc/lxdm/PreLogin as i’m using LXDM but anyway i couldn’t achieve any result :(

    Regarding the drivers - this is actually somethinf Nvidia is expected to integrate into their driver? Is there a timeline for that? Because seems like a very important feature :)