Incorrect resolution (much higher) on older laptop

Hi everyone!

I’m trying to get an old Sony Vaio VPC115FM working with openSUSE. Everything goes rather well except for my screen resolution: it gives me a resolution of 2048x1536, when it should be 1920x1080. The video card in the machine is an Nvidia Geforece GT 330M. Since it’s such a higher resolution, only part of the desktop is displayed on screen.

I’m trying to use LXQT, but I’ve tried various DE’s as well. I’ve also tried Ubuntu, Fedora, Manjaro, and Zorin. ZorinOS is the only distro that works properly; while all the other distros have the same result as openSUSE.

I believe the issue is related to the monitor detection since that’s the only difference I can see between Zorin and the other distros: using ixni, it shows that Zorin detects the monitor, while the others do not.

I have also posted this issue on Reddit, but thought I’d try here before I accept defeat and move on to Zorin. Anyone have any ideas?

If you are using X11 instead of Wayland - you can change the resolution with this:
change eDP-1 to what the video is on you laptop - might be VGA-0, HDMI-0

xrandr will show the correct display name (and all the choices on you laptop)

/usr/bin/xrandr --newmode  "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
/usr/bin/xrandr --newmode "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync
/usr/bin/xrandr --addmode eDP-1 1920x1080_60.00
/usr/bin/xrandr --output eDP-1 --mode 1920x1080_60.00

If you want other video modes

cvt 1920 1200 will provide the newmode numbers to the script here is how I got 1920X1080:

# cvt 1920 1080
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
#

Thanks for the reply! Unfortunately, that didn’t do the trick… the resolution definitely changed; however, the full desktop is still not displayed.

This is what makes me think its more of an issue with a monitor driver or something. This is the output I receive from ixni regarding the monitor:

Monitor-1: LVDS-1 res: 2048x1536 hz: 60 size: N/A modes: max: 2048x1536 min: 640x350

The inxi output that I receive with ZorinOs is as follows:

Monitor-1: LVDS-1 model: Nvidia Defaul t Flat Panel built: 2002 res: 1920x1080 hz: 60 dpi: 135 size: 360x200mm (14.2x7.9") diag: 412mm (16.2") ratio: 16:9 modes: max: 1920x1080 min: 640x350

It’s like the system is missing a module or something? Since it’s working on ZorinOs, there’s got to be a way to get it working on openSUSE, no?

What is output from xrandr right after boot and login, without using any of its options?

djmenig@localhost:~> xrandr
Screen 0: minimum 320 x 200, current 2048 x 1536, maximum 8192 x 8192
LVDS-1 connected primary 2048x1536+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   2048x1536     59.99*+
   1920x1440     60.00  
   1856x1392     60.01  
   1792x1344     60.01  
   2048x1152     59.99    59.98    59.90    59.91  
   1920x1200     59.95    59.88    59.95  
   1920x1080     60.01    59.97    60.00    59.96    59.93  
   1600x1200     60.00    59.95  
   1680x1050     60.00    59.95    59.88  
   1400x1050     59.98    60.00  
   1600x900      59.99    59.94    59.95    59.82  
   1280x1024     59.95    60.02  
   1400x900      59.96    59.88  
   1280x960      60.00    59.99  
   1440x810      60.00    59.97  
   1368x768      59.88    59.85  
   1280x800      59.99    59.97    59.81    59.91  
   1152x864      59.97  
   1280x720      60.00    59.99    59.86    59.74  
   1024x768      60.04    60.00    59.95  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   1024x576      59.95    59.96    59.90    59.82  
   960x600       59.93    60.00  
   960x540       59.96    59.99    59.63    59.82  
   800x600       60.00    60.32    59.96    56.25  
   840x525       60.01    59.88  
   864x486       59.92    59.57  
   700x525       59.98  
   800x450       59.95    59.82  
   640x512       60.02  
   700x450       59.96    59.88  
   640x480       60.00    59.94    59.94  
   720x405       59.51    58.99  
   720x400       59.97  
   684x384       59.88    59.85  
   640x400       59.88    59.98    59.96  
   640x360       59.86    59.83    59.84    59.32  
   640x350       59.84  
   512x384       60.00  
   512x288       60.00    59.92  
   480x270       59.63    59.82  
   400x300       60.32    56.34  
   432x243       59.92    59.57  
   320x240       60.05  
   360x202       59.51    59.13  
   320x180       59.84    59.32  
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)

Before doing anything else, on freshly logging in, collect output from inxi -GSaz --za to paste here.

According to your xrandr output, xrandr --output eDP-1 --mode 1920x1080 should be sufficient to employ the mode switch. This can be made automatic upon GUI login by creating a file, using root authority, in /etc/X11/xinit/xinitrc.d/ containing it. Indeed, this file might be necessary to avoid the missing desktop sections, until the problem’s cause is found and corrected.

The question is why your GPU reports to TW it supports those high 4:3 modes. According to xrandr, your display reports 2048x1536 is its optimal mode, indicated by the "+ on the 2048x1536 line. Do you have a file /etc/X11/xorg.conf, or any files that obviously would impact graphics in /etc/X11/xorg.conf.d/? Does your Zorin have such files?

the correct command is:
xrandr --output LVDS-1 --mode 1920x1080
the display is not eDP-1 it is LVDS-1

Linux always default to the highest resolution that the display responds with.

I remember copying and pasting a portion of comment 2 to save typing when I replied. Obviously I did not verify the appropriate output name. :stuck_out_tongue:

Right, but a 16:9 display reporting support for elevated 4:3 modes only to most distros is puzzling. I don’t remember ever seeing it before, and neither a 16:9 display reporting a 4:3 aspect mode as native.

Sorry for the delayed response. I very much appreciate the replies!

No xorg configuration files. I’ve played around with the configuration files a bunch to try and replicate Zorin’s result to no avail; the resolution will change and/or the size of the fonts and what not, but the display still shows the same amount of screen real estate.

I might add that ZorinOS works straight out of the box from live usb. All other distros give me the same result: 2048x1536 with ~50% of the desktop not being displayed (i.e., it seems like just the top left quadrant is being displayed).

Here’s my inxi output:

djmenig@localhost:~> inxi -GSaz --za
System:
  Kernel: 6.10.3-1-default arch: x86_64 bits: 64 compiler: gcc v: 13.3.0
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.10.3-1-default root=UUID=<filter>
    splash=silent quiet security=apparmor mitigations=auto
  Desktop: LXQt v: 2.0.1 tk: Qt v: 6.7.2 wm: Openbox v: 3.6.1
    with: lxqt-panel tools: xscreensaver,xscreensaver-systemd vt: 2 dm: SDDM
    Distro: openSUSE Tumbleweed 20240810
Graphics:
  Device-1: NVIDIA GT216M [GeForce GT 330M] vendor: Sony driver: nouveau
    v: kernel non-free: series: 340.xx status: legacy (EOL~2019-12-xx) last:
    release: 340.108 kernel: 5.4 xorg: 1.20 arch: Tesla process: 40-80nm
    built: 2006-2013 pcie: gen: 2 speed: 5 GT/s lanes: 16 ports:
    active: LVDS-1 empty: HDMI-A-1,VGA-1 bus-ID: 01:00.0 chip-ID: 10de:0a29
    class-ID: 0300 temp: 38.0 C
  Device-2: Suyin Sony Visual Communication Camera driver: uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-1.2:3
    chip-ID: 064e:2100 class-ID: 0e02 serial: <filter>
  Display: x11 server: X.Org v: 21.1.12 driver: X: loaded: modesetting
    unloaded: fbdev,vesa alternate: nouveau,nv,nvidia dri: nouveau gpu: nouveau
    display-ID: :0 screens: 1
  Screen-1: 0 s-res: 2048x1536 s-dpi: 96 s-size: 541x406mm (21.30x15.98")
    s-diag: 676mm (26.63")
  Monitor-1: LVDS-1 res: 2048x1536 hz: 60 size: N/A modes: max: 2048x1536
    min: 640x350
  API: OpenGL v: 3.3 vendor: mesa v: 24.1.3 glx-v: 1.4 es-v: 3.1
    direct-render: yes renderer: NVA5 device-ID: 10de:0a29 memory: 987.3 MiB
    unified: no

Inxi reports you’re running on the default modesetting DIX display driver. You could try the nouveau DDX display driver provided by installing xf86-video-nouveau to see if it makes a difference. By simply installing the package, it should automatically be used on next startup, but if it does not, you may force it by creating as root /etc/X11/xorg.conf.d/15-nouveau.conf containing:

Section "Device"
    Identifier "DefaultDevice"
#	Driver	"modesetting"
	Driver	"nouveau"
EndSection

and restarting. If it doesn’t help, switching back can be done by moving the comment in the file to the other driver line, or removing the file and the package. It’s possible there’s another file already in /etc/X11/xorg.conf.d/ (or buried in /usr/ somewhere) forcing modesetting, and/or xf86-video-nouveau is already installed. If it is already installed, you’d need to edit the any existing file to specify nouveau instead of modesetting, or replace the existing file with your own creation. Files in /etc/X11/xorg.conf.d/ are normally optional, but openSUSE does on occasion populate it some. All files in /etc/X11/xorg.conf.d/ that do not end in .conf are ignored by the system.

There could be clues readily available for us to see:

cat /var/log/Xorg.0.log | susepaste

should, assuming that file exists, pastebin the log for us to peruse once you’ve shared the resulting URL here. If it doesn’t exist, check for it in ~/.local/share/xorg/. Journal and dmesg also could possibly provide clues why this is happening to you.

First time using susepaste… pretty cool tool!

Here’s the url: openSUSE Paste

Unfortunately xf86-video-nouveau has no effect. Since there is no effect, should I be using one over the other?

Had to create another susepaste due to the default expiration time:

https://paste.opensuse.org/pastes/47741d562fad

I’ve also added dmesg and journalctl:
dmesg log
journalctl

While perusing your susepastes I remember something that often works when xrandr won’t, the old-fashioned method of configuring Xorg. Create file /etc/X11/xorg.conf.d/50-output.conf containing:

Section "Device"
    Identifier "DefaultDevice"
	Option	"monitor-LVDS-1"	"DefaultMonitor"
EndSection

Section "Monitor"
    Identifier "DefaultMonitor"
	Option	"PreferredMode"	"1920x1080"
EndSection

Try first including only the latter 4 line section. If it works, you’re done. If not, try adding the upper 4 line section.

Now I’m going back to looking at those susepastes… :stuck_out_tongue:

Thanks for perusing! :grin:

Adding the monitor section didn’t do anything, but including them both did change the resolution; however, the issue persists. It’s as if the monitor is being mistaken for a much larger monitor with a different aspect ratio.

I wasn’t able to find a lot of time to play around with it today; hopefully tomorrow will be different. I’m thinking of grabbing the logs from Zorin and compare them to tumbleweed… hopefully that’ll turn up something.

I don’t know any details regarding how, as I’ve never had the need, but there is such a thing as loading an alternative EDID from disk to override that which X gets from the display. I would check to see if possibly Zorin managed to employ this because of some Zorin developer at some point running directly into your exact problem, knowing what to do about it, fixing it for Zorin, but not sending the fix upstream.

Something else to try is adding a third section to /etc/X11/xorg.conf.d/50-output.conf:

Section "Screen"
  Identifier   "DefaultScreen"
  Device       "DefaultDevice"
  Monitor      "DefaultMonitor"
  DefaultDepth 24
  SubSection "Display"
    Depth      24
    Modes      "1920x1080" "1600x900" "1366x768"
    Virtual    1920 1080
  EndSubSection
EndSection

If it helps, but only partially, you might try monkeying with the Virtual numbers, such as 540 instead of 1080, to halve the height X wants to paint.

A quick examination of the Xorg log shows that the physical display size (as reported by EDID) is wrong…
Setting screen physical size to 541 x 406
That would be massive (for a laptop) and a 4:3 ratio. Instead, the specs I found for the “Sony Vaio VPC115FM” is more like 16.4" diagonal, which translates to a 363mm(w) x 204mm(h) or similar display size.

Xorg also uses 96 DPI (as expected)…

modeset(0): DPI set to (96, 96)

Maybe worthwhile trying to set the physical display size to reflect reality? That might help Xorg to calculate the real DPI value and accommodate the desktop properly?

DisplaySize <width> <height> in ‘Section “Monitor”’ in /etc/X11/xorg.conf.d/<whatever>.conf can be expected to be applied to achieve whatever the desired DPI result. Before discovering xrandr many moons ago, it was my method to globally control DPI. I have a 15k lookup table for the purpose. If 120 DPI @ 1920x1080 is desired, ‘Section “Monitor”’ needs

DisplaySize	406 228

Also, for 1920x1080, 507 285 produces 96 DPI, 369 208 = 132, and 338 190 = 144.

Xorg picks whatever horizontal and vertical numbers it needs out of thin air in order that its DPI is reported to be (96, 96), unless a configured DisplaySize overrides it. I suspect OP using it on this errant laptop will not solve his problem this way, but it’s worth trying.

Yes, worth reviewing the following reference
https://wiki.archlinux.org/title/Xorg#Display_size_and_DPI
including the notes re NVIDIA if applicable.

BTW, one of many screen size calculators

1 Like