ThinkPad X1 Carbon Gen 9 having random screen shifts

Recently installed EndeavourOS with i3wm and XFCE+GNOME on my ThinkPad X1 Carbon Gen 9.
I faced a bunch of issues which i seem to have fixed; but here’s the backdrop;;

  • Laptop screen resolution is 4k (3840x2400) and things don’t scale well at all in XFCE/i3wm. This seems to be an X11 problem as GNOME+Wayland works pretty smooth.

  • Unable to change laptop screen resolution from 3840x2400 to 1920x1200 on XFCE/i3wm. xrandr can’t seem to detect the laptop’s supported resolutions and everything is fixed at 3840x2400. I was able to get the desired supported resolution using this.

  • This would have been sufficient but I now notice random screen flickering and jittering on the laptop screen. It happens around 6-7 times a minute and the screen seems to shift to the right and overlap back to the left side. Not sure how to explain this.

Output of inxi -Faz:

System:
  Kernel: 6.1.5-arch2-1 arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
    parameters: BOOT_IMAGE=/boot/vmlinuz-linux
    root=UUID=0f950e4e-70c1-4295-b72f-a9aed0c6d4aa rw nowatchdog
    nvme_load=YES resume=UUID=58115998-a24c-473d-920a-50e8d9e5c66d loglevel=3
  Desktop: i3 v: 4.22 info: polybar vt: 2 dm: 1: GDM v: 43.0 2: LightDM
    v: 1.32.0 note: stopped Distro: EndeavourOS base: Arch Linux
Machine:
  Type: Laptop System: LENOVO product: 20XWCTO1WW v: ThinkPad X1 Carbon Gen 9
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: LENOVO model: 20XWCTO1WW serial: <superuser required> UEFI: LENOVO
    v: N32ET76W (1.52 ) date: 04/08/2022
Battery:
  ID-1: BAT0 charge: 31.0 Wh (81.8%) condition: 37.9/57.0 Wh (66.5%)
    volts: 16.4 min: 15.4 model: SMP 5B10W13973 type: Li-poly serial: <filter>
    status: discharging cycles: 67
CPU:
  Info: model: 11th Gen Intel Core i7-1165G7 bits: 64 type: MT MCP
    arch: Tiger Lake gen: core 11 level: v4 note: check built: 2020
    process: Intel 10nm family: 6 model-id: 0x8C (140) stepping: 1
    microcode: 0xA6
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 320 KiB desc: d-4x48 KiB; i-4x32 KiB L2: 5 MiB desc: 4x1.2 MiB
    L3: 12 MiB desc: 1x12 MiB
  Speed (MHz): avg: 1774 high: 2800 min/max: 400/4700 scaling:
    driver: intel_pstate governor: powersave cores: 1: 1026 2: 1706 3: 2800
    4: 1007 5: 990 6: 2800 7: 2800 8: 1069 bogomips: 44864
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Enhanced IBRS, IBPB: conditional, RSB
    filling, PBRSB-eIBRS: SW sequence
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel TigerLake-LP GT2 [Iris Xe Graphics] vendor: Lenovo
    driver: i915 v: kernel arch: Gen-12.1 process: Intel 10nm built: 2020-21
    ports: active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4, HDMI-A-1, HDMI-A-2,
    HDMI-A-3 bus-ID: 00:02.0 chip-ID: 8086:9a49 class-ID: 0300
  Device-2: Syntek Integrated Camera type: USB driver: uvcvideo
    bus-ID: 3-4:3 chip-ID: 174f:2454 class-ID: 0e02
  Display: x11 server: X.Org v: 21.1.6 with: Xwayland v: 22.1.7
    compositor: Picom v: git-b700a driver: X: loaded: intel dri: i965 gpu: i915
    display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1920x1200 s-dpi: 96 s-size: 508x317mm (20.00x12.48")
    s-diag: 599mm (23.57")
  Monitor-1: eDP-1 mapped: eDP1 model: AU Optronics 0xc693 built: 2020
    res: 1920x1200 hz: 60 dpi: 163 gamma: 1.2 size: 300x190mm (11.81x7.48")
    diag: 355mm (14") ratio: 16:10 modes: 3840x2400
  API: OpenGL v: 4.6 Mesa 22.3.3 renderer: Mesa Intel Xe Graphics (TGL GT2)
    direct render: Yes
Audio:
  Device-1: Intel Tiger Lake-LP Smart Sound Audio vendor: Lenovo
    driver: sof-audio-pci-intel-tgl
    alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 00:1f.3
    chip-ID: 8086:a0c8 class-ID: 0403
  Sound API: ALSA v: k6.1.5-arch2-1 running: yes
  Sound Server-1: PulseAudio v: 16.1 running: no
  Sound Server-2: PipeWire v: 0.3.64 running: yes
Network:
  Device-1: Intel Wi-Fi 6 AX201 driver: iwlwifi v: kernel bus-ID: 00:14.3
    chip-ID: 8086:a0f0 class-ID: 0280
  IF: wlan0 state: up mac: <filter>
Bluetooth:
  Device-1: Intel AX201 Bluetooth type: USB driver: btusb v: 0.8
    bus-ID: 3-10:4 chip-ID: 8087:0026 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 2 state: up address: see --recommends
Drives:
  Local Storage: total: 953.87 GiB used: 8.04 GiB (0.8%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung
    model: MZVL21T0HCLR-00BL7 size: 953.87 GiB block-size: physical: 512 B
    logical: 512 B speed: 63.2 Gb/s lanes: 4 type: SSD serial: <filter>
    rev: AL2QGXA7 temp: 37.9 C scheme: GPT
Partition:
  ID-1: / raw-size: 918.7 GiB size: 903.2 GiB (98.31%) used: 8.04 GiB (0.9%)
    fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-2: /boot/efi raw-size: 1000 MiB size: 998 MiB (99.80%)
    used: 312 KiB (0.0%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: partition size: 34.19 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3
Sensors:
  Src: /sys System Temperatures: cpu: 51.0 C mobo: N/A
  Fan Speeds (RPM): cpu: 4587 fan-2: 4578
Info:
  Processes: 226 Uptime: 16m wakeups: 28811 Memory: 31.08 GiB
  used: 2.5 GiB (8.0%) Init: systemd v: 252 default: graphical tool: systemctl
  Compilers: gcc: 12.2.0 Packages: pm: pacman pkgs: 999 libs: 251 tools: yay
  Shell: Zsh v: 5.9 running-in: alacritty inxi: 3.3.24

Output of /etc/X11/xorg.conf.d/10-monitor.conf

Section "Monitor"
	Identifier "eDP1"
	Modeline "1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync
	Option "PreferredMode" "1920x1200_60.00"
EndSection

Section "Screen"
	Identifier "Screen0"
	Monitor "eDP1"
	DefaultDepth 24
	SubSection "Display"
		Modes "1920x1200_60.00"
	EndSubSection
EndSection

Section "Device"
	Identifier "Device0"
	Driver "intel"
EndSection

I’d greatly appreciate any and all help here, since I really don’t wish to go back to GNOME after getting used to i3. (and sway seems to have a sleuth of problems on it’s own)

EDIT: It seems to me that picom may be the culprit here. (https://bbs.archlinux.org/viewtopic.php?id=269553). Will have to research more .
++ I reinstalled eos and don’t have picom yet. I think it is my picom configuration.

Have you tried the --scale option of xrandr ?

That’s definitely odd. I have a Lenovo carbon X1 9 gen and used gnome, none of these problems in neither X11 or Wayland. Right now using a new install of kde and i3wm. Works like a charm.

My hardware.

https://0x0.st/o7AE.txt

Could be some conflict of installing multiple desktops (gnome+xfce) at once. Else you could try using lts kernel.

Edit: you mentioned you had some issues that you “fixed”. Maybe good to step back and post about any of these system changes tried. Else a solution may be difficult to find.

When I saw fixed, I meant that at first I was unable to change the resolution at all. Then I followed the arch linux guide… which then led to the screen flickering problem.

Edit: EndeavourOS booted through a LiveUSB isn’t able to change the resolution either.

For clarity:
I am only able to change my resolution to 1920x1200 on GNOME.

I did try to use the --scale option. However that leads to blurry text, icons etc…

Give Sway a shot. Install Sway:

sudo pacman -S sway swaybg swayidle swaylock

log out and choose Sway from display manager. Sway should pick up your i3 configuration.

I am not sure I want to switch to Wayland.

I am just wondering why you want to scale so badly. If you just adjust OTHER things, you might not need to do so. That said, I have never had a problem with xfce scaling when I use it. Mostly I leave the hi-res in action, use larger screen features, and pump the font size up to readable and find that OK…

I think I did a wiki entry (OUR Wiki) on handling hi-res in XFCE, but it’s a long time ago… Oh, and that was/is in X still…

Hello,

Can you post your Xorg.0.log ?

Also, have you tried with the modesetting driver instead of intel?

So sorry for the late response.
Yes I’ve shifted to modesetting driver but the problem still persists. However, the problem of not detecting resolutions has been fixed.

Xorg.0.log: https://0x0.st/oFCn.txt

Hi,
I took a quick look at the log file

[     6.453] (WW) modeset(0): Option "TearFree" is not used

This option will not work for modesetting driver, its for intel only. Anyway, external driver config is not needed, so I would remove all custom driver configs first.

[    23.223] (II) modeset(0): Allocate new frame buffer 1920x1200 stride
[    24.120] (II) modeset(0): EDID vendor "AUO", prod id 50835
[    24.120] (II) modeset(0): Using hsync ranges from config file
[    24.120] (II) modeset(0): Using vrefresh ranges from config file

You don’t need custom xorg configs for setting the resolution, let the DE set the resolution from modelines, so I would remove 10-monitor.conf, too.

What I would try to do next, after removing all custom xorg configs:

  • try to use native resolution with proper scaling (in your case it is ideal to use 3840x2400 with 200% scale to match actual 1920x1200). You mentioned you tried something with --scale, but it looks blurry, which should not be the case for integer scaling at least, though it might depend on the compositor used. Try to set scaling thru GUI, i.e for XFCE HiDPI scalling, look here (don’t forget to adjust the text scaling also), or try this with xrandr
xrandr --dpi 192 --fb 3840x2400 # set 200% scaled DPI (2 * 96) and max size of the whole framebuffer
xrandr --output eDP-1 --scale 1x1 --pos 0x0 --mode 3840x2400 # use display's native resolution
  • disable PSR (panel self refresh) - this is known to cause flickering issues, so its worth a try

With all that said, for completely tear free experience and custom DPI settings that work oob, wayland is the best option for modern intel graphics.

Here’s the fix for me based on @jake99’s response:

  • Use modesetting driver: Using this driver, i was able to view and switch to the desired supported resolution. This also eliminates all screen tearing.
  • Disable PSR: This eliminates the random screen flickering too.

Thank you!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.