This article show you how easy is to connect your laptop to an external monitor through an HDMI cable on any Linux distro if you want to use a second screen for gaming or whatnot, which fixes the notorious “no signal” issue.
I have recently replaced my old laptop with a new one that’s also great for gaming, so if I want to connect it to an external monitor via HDMI it doesn’t work out-of-the-box with any Linux distro that I’ve tried so far, and if you search the Web for an answer you’ll find numerous reports from users having a so-called “No Signal” issue.
The issue: HDMI “No Signal”
I spent many hours reading these reports and the solutions offered by other users, but with no success. So if you’re like me, you’ve arrived at right place. In the next paragraphs, I’m gonna show you how to properly connect your laptop to an external monitor, and the instructions should work on any Linux distro.
First, let me tell you that this should not happen at all. Every Linux distro out there should work out of the box when connecting it to an external monitor. The fact is that it actually works, sort of. I mean, the external monitor is recognized correctly and all that, but it says there’s “no signal” from the HDMI cable.
The issue appears to happen on hybrid laptops that have an integrated graphics card, either from AMD or Intel, and a dedicated GPU, usually from NVIDIA. This is the case for me, as my laptop comes with AMD Renoir and NVIDIA GeForce GTX 1650 Ti graphics.
The solution is quite very simple, enabling the dedicated GPU as the primary graphics card. So if your laptop’s dedicated GPU is an NVIDIA GPU, make sure you have the NVIDIA proprietary graphics drivers installed (you probably already have them, but just to be sure).
Now, take a look to see what GPU is your laptop using by default. For that, you’ll need to run the
glxinfo | egrep "OpenGL vendor|OpenGL renderer" in a terminal emulator.
As you can see, mine shows that the AMD Renoir is used as primary GPU, and the NVIDIA GPU will activate automatically or on-demand whenever I run a game or another GPU-intensive app.
To set the NVIDIA GPU as your primary graphics card, you have to copy the automatically generated nvidia.conf configuration file from the /usr/share/X11/xorg.conf.d/ folder to the /etc/X11/ one with the following command.
sudo cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf
Now, you have to edit the nvidia.conf file and add the
Option "PrimaryGPU" "yes" option to each section of that file. To do that, run the
sudo gedit /etc/X11/xorg.conf.d/nvidia.conf command in a terminal emulator.
If you don’t use Gedit, you can use GNU nano or Vim, so replace “gedit” with your favorite editor in the command. In the end, your nvidia.conf file should look like this.
Save the nvidia.conf file and reboot your laptop. That’s it! The NVIDIA GPU is now the primary graphics card.
You can now see your laptop’s screen on the external monitor. All three options in your Setting’s Display panel should work properly, mirroring your laptop’s display, joining both displays if want to extend your laptop’s screen, and set as primary display (useful when playing games).