Quick answer
Run xrandr --output HDMI-1 --auto (replace with your monitor's name) in a terminal. If that works, the issue is your display manager or driver config. If not, read on.
Why this happens
You plug in an external monitor. Your system detects it — you see it in Settings > Displays or in xrandr output. But the screen stays black. On Linux, this usually happens because the display manager (like GDM, LightDM, SDDM) or the graphics driver (NVIDIA, AMD, Intel) isn't setting the correct mode or output for that monitor. I've seen this on Ubuntu 22.04 with NVIDIA drivers, on Fedora 38 with Wayland, and on Debian 12 with Intel integrated graphics. The monitor gets detected but the GPU doesn't send a signal to it. Or the signal is on a different port (like HDMI vs DisplayPort) and the cable is loose. Don't panic — it's fixable in most cases.
Step-by-step fixes
- Identify your monitor's output name. Open a terminal and type
xrandr | grep connected. You'll see something likeHDMI-1 connectedorDP-1 connected. Write down the name. If nothing shows, the monitor isn't detected at all — that's a different problem (bad cable, port, or driver). - Force the monitor on. Run
xrandr --output HDMI-1 --auto. After hitting Enter, you should see the monitor light up. If it does, great — but it's a temporary fix. If it's still black, go to step 3. - Set the correct resolution. Sometimes
--autopicks a wrong resolution. Doxrandr --output HDMI-1 --mode 1920x1080. Replace the resolution with your monitor's native one. Check available modes withxrandr(look under the monitor name). - Check your graphics driver. If you have an NVIDIA GPU, run
nvidia-smi. If it shows errors or nothing, your driver is broken. Reinstall it:sudo ubuntu-drivers autoinstallon Ubuntu, orsudo dnf install akmod-nvidiaon Fedora. For AMD,sudo apt install mesa-utilsorsudo dnf install mesa-dri-drivers. Reboot after installing. - Switch from Wayland to Xorg. Wayland on NVIDIA and some AMD cards can cause black external screens. At the login screen (GDM), click your username, then click the gear icon or the little circle next to the sign-in button. Choose “Ubuntu on Xorg” or “GNOME on Xorg”. Log in. The monitor should work now.
- Restart the display manager. If the monitor works after a reboot but fails after suspend, restart the display manager:
sudo systemctl restart gdm(orlightdm,sddmdepending on your setup). This forces it to re-enumerate outputs.
Alternative fixes if the main ones don't work
- Check the cable and port. Swap cables. Try a different HDMI or DisplayPort port on both the laptop and monitor. I've wasted hours on a bad cable.
- Use the kernel's
nomodesetoption. At boot, edit the GRUB entry (presseat the GRUB menu) and addnomodesetto the line starting withlinux. Then pressCtrl+Xto boot. This disables kernel mode-setting and often fixes black screens on NVIDIA and AMD cards. If it works, make it permanent by editing/etc/default/gruband addingnomodesettoGRUB_CMDLINE_LINUX_DEFAULT, then runsudo update-grub. - Set the monitor as primary. Try
xrandr --output HDMI-1 --primary. Some desktop environments (like GNOME) only mirror the primary output. If the external is not primary, it stays blank. - Disable and re-enable the monitor. Run
xrandr --output HDMI-1 --offthenxrandr --output HDMI-1 --auto. Wait 5 seconds between commands.
Prevention tip
Once you get the monitor working, save the xrandr configuration. Create a script in ~/.config/monitor-setup.sh with the exact xrandr command that worked (like xrandr --output HDMI-1 --mode 1920x1080 --rate 60). Then add it as a startup application in your desktop environment. That way, after every login or resume, the monitor gets set up right. Also, keep your system updated — kernel and driver updates often fix these black screen issues. But don't upgrade on a Friday if you need the monitor for work.