Page MenuHomePureOS Tracker

HDMI output limited to 1080p
Open, NormalPublic

Description

Hardware: Librem 13 v2
Software: PureOS 8.0 with the latest kernel and updates
Desktop: Default Gnome with Wayland (also tested with Gnome + X11)

Problem: When I connect an external 4k monitor over HDMI, the GUI display configuration tool maxes out at 1920x1080--the same resolution as my laptop display. This would make sense if I were mirroring displays but in this case I'm selecting "Join Displays".

I also logged out and tried this with Gnome and X11 with the same result. When using X11, xrandr will not show any monitor modes higher than 1920x1080 for the HDMI display.

Reproduction Steps:

  • Connect external display with a native resolution greater than 1920x1080.
  • Launch Gnome Display configuration tool.
  • Select Join Displays.
  • Select the connected monitor instead of "Built-in Display"
  • Note the available resolutions in the "Resolution" drop-down menu. You should see no resolutions higher than 1920x1080.

Event Timeline

I've tested this so far with a few other Live disks including Tails (4.14.12-2 kernel), Fedora 27 (4.13.9-300.fc27.x86_64), Ubuntu 17.10 (4.13.0-21) and Ubuntu 16.04 (4.10.0-28-generic). All of those live disks had the same 1080p limitation.

I was able to get a higher resolution out of HDMI in Qubes 3.2 which uses an older Fedora userspace. I will continue to test older live CDs and see if I can find one that works like Qubes 3.2.

The Ubuntu 14.04 Live disk was able to see the full suite of resolutions from my external monitor up to 3840x2160 @ 30hz and 2560x1440 @ 60hz. It uses the 3.19.0-25-generic kernel so perhaps we are seeing some regression with Skylake on more recent 4.x kernels.

I noticed someone else complaining about a similar issue with Skylake on a Dell XPS: https://www.reddit.com/r/Dell/comments/4sjcyk/dell_xps_skylake_with_da200_only_1080p/

I was able to get a Librem 13v2 to output at 2560x1440 by switching to GNOME on Xorg at the GDM login prompt for my user and using the steps from here to generate a custom modeline.

In particular what I did to add the ideal resolution for my monitor was:

$ cvt -r 2560 1440
# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
Modeline "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
$ xrandr --newmode "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
$ xrandr --addmode HDMI-1 2560x1440R
$ xrandr --output HDMI-1 --mode 2560x1440R

At this point the new mode shows up in GNOME's GUI "Displays" setting window. I also was able to follow the process in the above link to make it permanent by creating an /etc/X11/xorg.conf.d/ directory:

$ sudo mkdir /etc/X11/xorg.conf.d

and then creating an /etc/X11/xorg.conf.d/10-monitor.conf file with the following contents:

Section "Monitor"
        Identifier "HDMI-1"
        # 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
        Modeline "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
        Option "PreferredMode" "2560x1440R"
EndSection

Again, note that this is only a workaround if you are using Xorg and not Wayland (xrandr is read-only in Wayland).

From what I've read on https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/EDID/HOWTO.txt the kernel only includes EDIDs up to 1920x1080:

As a remedy for such situations, the kernel configuration item CONFIG_DRM_LOAD_EDID_FIRMWARE was introduced. It allows to provide an individually prepared or corrected EDID data set in the /lib/firmware directory from where it is loaded via the firmware interface. The code (see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for commonly used screen resolutions (800x600, 1024x768, 1280x1024, 1600x1200, 1680x1050, 1920x1080) as binary blobs, but the kernel source tree does not contain code to create these data. In order to elucidate the origin of the built-in binary EDID blobs and to facilitate the creation of individual data for a specific misbehaving monitor, commented sources and a Makefile environment are given here.

Since we maintain our own kernel for PureOS, I'm wondering whether we could add modes for 2560x1440, 2880x1800 and 3840x2160 within the kernel since clearly the kernel is too picky about EDIDs it is getting about higher resolutions from monitors.

I have tried several 4k monitors and and 3 OS's (pureos qubes and even windows 10) trying go get 4k on my new machine (it just arrived 5 days ago) and was getting concerned without having any positive results. I am anxiously looking for a way to achieve the 3840x2160 and 2560x1440 resolutions from this machine.

@netnut404 If you are willing to use X instead of Wayland, you can switch to that and follow my steps above to generate modelines for the resolutions you want.

@kyle.rankin Thanks using xorg is a good work around for now. Just picking that at login is simple enough I thought it was going to require a more substantial and permanent tweak / swap between wayland / xorg

jonkri added a subscriber: jonkri.EditedMar 12 2018, 16:10

I tried to use cvt -r 3840 2160 in order to produce a modeline for my system, and while I can see the resolution in the XFCE Display settings (after having configured xorg), I can't switch to it.

The modeline is:

Modeline "3840x2160R"  533.00 3840 3888 3920 4000  2160 2163 2168 2222 +hsync -vsync

If I'm trying to switch to the mode with xrandr --output HDMI-1 --mode 3840x2160R, I'm getting this error:

xrandr: Configure crtc 0 failed

I'm using Linux 4.14.18-1 with Qubes OS.

Any hints would be appreciated!

I have now tried using both Arch Linux and the latest Ubuntu installer in addition to Qubes OS, but I still have not been able to get a 4K resolution on a Librem13 laptop (ordered in January 2018).

Here's my 10-montors.conf file:

Section "Monitor"
        Identifier "HDMI-1"
        Modeline "3840x2160R"  533.00  3840 3888 3920 4000  2160 2163 2168 2222 +hsync -vsync
        Option "PreferredMode" "3840x2160R"
EndSection

I can see the resolution in XFCE's and GNOME's display utilities, but I can't activate it.

Trying to active the resolution using xrandr --output HDMI-1 --mode 3840x2160R produces the following error:

xrandr: Configure crtc 0 failed

If someone could provide me with a working modeline, or any other hints on how to get this working, I would really appreciate it.

A quick update:

I managed to find a working modeline for 4K output running at 25.99 Hz using cvt 3840 2160 26.

max4 added a subscriber: max4.Feb 6 2019, 02:43

Any news on how to get proper Hz rate on the Librem 13v2?

I can, like @jonkri , only get 26Hz.

Sincerely
Max

jeremiah.foster closed this task as Resolved.Feb 12 2019, 07:58

@jonkri Is it possible that there is a typo in the file name that prevents your window manager from picking it up? I ask that because you posted the contents of '10-montors.conf' and if that is the actual name of the file perhaps that is not getting read properly?

While I'm using a Librem, it is a 13v3 which is a version later than yours and don't have access to a v2 at the moment. I have no problem with higher resolutions however using GNOME Settings in the manner you specify;

jeremiah.foster reopened this task as Open.Feb 12 2019, 08:30
jeremiah.foster triaged this task as Normal priority.

As I believe kyle.rankin was suggesting, it would be nice to add EDID data sets to the pureos standard kernel for resolutions beyond what's already in there, especially the common "named" resolutions (like the one I need "WQXGA" aka 2560 × 1600). The named resolutions are described here: https://en.wikipedia.org/wiki/Graphics_display_resolution

I think it's not a solved problem if users have to switch from wayland to xorg or if we have to add boot parameters to make a monitor work.

If it's acceptable in this tracker I'd like to put a $50 bounty on this bug.

@actualben Thanks for your comment, this helps me. I'll try and read up a bit to understand exactly what we're bringing in and see what is required.

hansolo added a subscriber: hansolo.Feb 13 2019, 01:16
mladen added a subscriber: mladen.Apr 10 2019, 13:24

cvt 3840 2160 26 also works for me:

10-monitor.conf

Section "Monitor"
        Identifier "HDMI1"
        # 3840x2160 25.99 Hz (CVT) hsync: 57.05 kHz; pclk: 290.25 MHz
        Modeline "3840x2160_26.00"  290.25  3840 4064 4464 5088  2160 2163 2168 2195 -hsync +vsync
EndSection
richard.kolla added a subscriber: richard.kolla.EditedAug 22 2019, 10:49

E-mail below from customer having issues outputting more the 1080p on his Librem 13v4. Not running PureOS but similar issues. E-mailed back and forth a bit and he ended up running his monitor at 1080p and is no longer having issues.

Between this and the subtask added by Jeremiah, is this a hardware issue or software issue?

For the last couples of weeks I have had my Librem hooked up to an external monitor (UP2516D) by HDMI and experience some odd screen flickering. Maybe “flickering” is the wrong word, what happens is that the screen blanks at random intervals for about a second once every few minutes. I have struggled to establish any pattern, my best current guess is that it is correlated with CPU load as it becomes much more frequent once the fan starts spinning. It should also be emphasised that the laptop screen never flickers, I have confirmed this by observing flickering on the external monitor while the laptop monitored remained stable when I mirrored the output. I have investigated this issue on and off for about a week now, with no success, thus I am reaching out to you.
I run NixOS 19.03.173298.1f22d5b6f87 (Koi) – the latest stable version – and I believe [drm] Initialized i915 1.6.0 20180719 is the relevant line from the journalctl output. Based on [1,2] I believe that the latest upstream code available is running. Apologies for not running PureOS, running the same OS across my devices makes configuration easier – I am sure as heck going to run PureOS on my Librem 5 when it arrives.
[1]: https://github.com/NixOS/nixpkgs/blob/972ae117c6797e55ca4ba2f373f86683ae5dbe8c/pkgs/servers/x11/xorg/default.nix#L1966-L1977
[2]: https://cgit.freedesktop.org/xorg/driver/xf86-video-intel
There are multiple venues that I have explored to debug the issue, the first being what was mentioned about screen flickering on the PureOS wiki [3]. I have also browsed the PureOS source to see if there was anything unorthodox about the i915 setup, but I saw nothing – I could have missed something though, I am not intimately familiar with the source tree. Based on reading the Purism mailing lists, I did find a few flags to play with the i915 module, enable_rc6 and enable_psr, but both seem to have no effect on the issue. I have ruled out there being a port or cable issue on the part of the monitor as a second device works just fine with the same cable and monitor port.
[3]: https://tracker.pureos.net/w/troubleshooting/screen_flickering

Between this and the subtask added by Jeremiah, is this a hardware issue or software issue?

You're asking four questions here;

  1. Is this issue a hardware issue?
  2. Is this issue a software issue?
  3. Is the sub-issue a hardware issue?
  4. Is the sub-issue a software issue?

Each one is hard to answer on their own. :-)

Let's start with the issue that you just posted. You write that "he ended up running his monitor at 1080p and is no longer having issues." Do we need to investigate this further then? Or is this solved?

I would investigate further because we quote 4k 30Hz output on the v4 Librem Laptops and we can't if they seem to be tied down to 1920x1080p output.

It seems to be a hardware issue since in both cases users tried running in and/or editing X11 files but still can't output more than 1920x1080. Also used different distros like PureOS (GNOME, Wayland default but tried X11) and NixOS (Plasma 5, X11 default) and seemed to get the same result.

In this case;

For the last couples of weeks I have had my Librem hooked up to an external monitor (UP2516D) by HDMI and experience some odd screen flickering. Maybe “flickering” is the wrong word, what happens is that the screen blanks at random intervals for about a second once every few minutes. I have struggled to establish any pattern, my best current guess is that it is correlated with CPU load as it becomes much more frequent once the fan starts spinning. It should also be emphasised that the laptop screen never flickers, I have confirmed this by observing flickering on the external monitor while the laptop monitored remained stable when I mirrored the output. I have investigated this issue on and off for about a week now, with no success, thus I am reaching out to you.

I don't think it is a Librem 13v4 hardware issue. I have a Librem 13v3 (which runs the same graphics chipset) and I don't experience the issues he sees and I'm running at 3440x1440 (21:9). It *may* be his monitor but I can't tell and I can't debug the Nix OS issues. Nix is a great OS, but we work on PureOS of course and have to limit ourselves to that because it is complex enough.

I don't know what the next steps are for this particular case. Either he moves back to PureOS to debug the software or he tests the setup with a different monitor?