EDIT: Originally this thread was meant to refer only to when using an external display but, according to Monster_user, this issue impacts the internal display as well.
Disclaimer: I’m quite the Linux beginner.
Basically, with an external display, just try the following terminal command (replacing “HDMI-1” with presumably “DP-1” I’m guessing?) and see if xrandr complains or not (be sure to include the quotes):
xrandr --output HDMI-1 --mode 800x600 --set "scaling mode" "Full aspect"
I do not (yet!) have a Framework laptop but, at least on older Intel graphics (Haswell 4th gen as well as 965GMA from the Core 2 Duo era), I’ve been able to verify that the aforementioned xrandr “bug” still exists on multiple OSes (including a daily build of Xubuntu 22.04 built 2022-02-05).
Yet the terminal command “just works” if you try it on an internal laptop display, or if you try it on an external display connected to AMD graphics. It similarly doesn’t error-out on external displays connected to Intel graphics if you remove the “–set” argument and the text after it.
Considering that the git issue was closed over 2 years ago under the premise of it no longer being an issue, my hypothesis is that the issue was only solved for newer Intel graphics (e.g. Broadwell 5th gen and newer), but I’ve been unable to verify this.
What are you trying to accomplish?
I was able to get what appears to be normal scaling by using:
xrandr --output DP-1 --mode 800x600 --scale 2x2
I tried that on a 1080p Television from which I could adjust the aspect ratio using a remote control. The result was 800x600 with a 4:3 aspect ratio and black bars on the sides, at 100% scaling, with the Framework showing 125% scaling on the internal display.
On Kubuntu 21.04, the Television connected to the Framework HDMI expansion card was detected as DP-1.
The internal display is detected as eDP-1. The Git you linked indicates that the “scaling mode” feature only works on High DPI displays detected as eDP-1 or LVDS1, presumably to make resolutions higher than 1080p more legible.
I don’t have a 2k or 4k external display or Thunderbolt Video Output adapter to see if an external display is ever detected as eDP or LVDS.
What is the native resolution of your external display?
Are you wanting to increase the scale, or decrease the scale of the external display?
Are you wanting the display to show black bars, or fill the entire screen of the external display? Is it a 4:3, 16:9, 16:10, or other aspect ratio for your external display?
--scale xrandr argument is not the same as
--set "scaling mode" as I can get
--scale working without issue on my existing older Intel graphics.
Maybe it’d help you understand what’s going on if I link you to a somewhat wordy thread about the issue on the Linux Mint forums:
The tl;dr is that, on a bog-standard monitor (read: one that does not let you change the aspect ratio), the output resolution always just stretches across the entire screen. The
--set "scaling mode" "Full aspect" xrandr argument is supposed to solve this, but from all of my tests, it does not work on Intel graphics specifically for external displays despite the git issue claiming it to supposedly not be something that should still be a problem.
Also, even on TVs, you can still confirm if
--set "scaling mode" "Full aspect" works if you simply look at your TV’s on-screen display and confirm if it’s still receiving a 1080p video signal despite xrandr and/or your OS being set to 800x600 (and it visually looking like 800x600)
I’m not sure where you read that as, when doing a ctrl+f, “dpi” (without quotes) is not mentioned anywhere…
Also, as mentioned in the Linux Mint forum thread, I was able to get
--set "scaling mode" "Full aspect" working without issue on AMD graphics when using a basic 1280x1024 DVI monitor.
Not mentioned in that thread is that I’ve since also gotten the exact same xrandr argument working on a 1280x800 internal laptop display even with Intel graphics (albeit ancient 965GMA graphics from 2007) and yet, on the very same laptop, it errored-out when trying to do
--set "scaling mode" "Preserve aspect" on an external display.
The one combination that isn’t working though is Intel graphics + external monitor, and that’d be a major problem for me if the Framework laptop also has this issue since I really, really, really like how it its mainboard can be used by itself with an external display (something I’ve already done twice in the past with traditional laptops after disconnecting their internal display).
An error on my part. I was inferring that from what I had understood at the time. Scaling is a feature I associate most with High DPI displays which are difficult to use at 100% scaling.
Kubuntu 21.04, xrandr 1.5.0, RandR 1.6.
The command is not passing through to the external display as described in the Git bug. The error indicates that “Full” is not a valid “scaling mode” option.
The bug was closed multiple times with a “Won’t Fix” resolution, and has been marked as low priority. I don’t think the bug has actually been fixed, it was just closed due to inactivity.
That at least sounds like a different error than what I get, even if the end non-result is basically the same.
I don’t suppose you’d be willing to quickly see if
--set "scaling mode" "Center" gives the same non-result? (remember to include the quotes)
Nope, not even working on the internal display.
xrandr: unrecognized option ‘"Full’
xrandr: unrecognized option ‘“Center”’
not even working on the internal display.
Wait, wha? Now that’s a different result and a half… and not a good result at that.
If I weren’t the Linux beginner here I’d ask if you could copy and paste the terminal command and its output in full but I don’t see why the command I described wouldn’t have “just worked” when directly copied-and-pasted even on the internal panel (taking into account changing “HDMI-1” to “eDP-1” and the like of course…)
Well, uh, I’m kind of at a loss as to where to go from here then. Unless someone else has any other insight, I think this might make the Framework laptop a bit of a non-starter for me, and even more-so if it’s not even working for the internal panel, let alone on external displays.
(at least unless Framework offers an AMD option, but Ryzen 6000’s embedded Microsoft Pluton “security” chip makes me wary of that)
EDIT: Wait that’s right - if newer Intel graphics use a different driver, then maybe the scaling mode values themselves are different?
According to the git issue, the following should list the available scaling modes:
What does the Framework laptop list as its available scaling modes in the “supported” field (if any)?