2

Abstract: After setting up Linux on my new ThinkPad I am unable to set the recommended resolution for my monitor.

Some details:

anon@anon:~$ uname -a
Linux debian12 6.11.4-zabbly+ #debian12 SMP PREEMPT_DYNAMIC Fri Oct 18 06:50:10 UTC 2024 x86_64 GNU/Linux
anon@anon:~$ inxi -Fnn
System:
  Host: debian12 Kernel: 6.11.4-zabbly+ arch: x86_64 bits: 64 Desktop: i3
    v: 4.22 Distro: Debian GNU/Linux 12 (bookworm)
Machine:
  Type: Laptop System: LENOVO product: 21MA003RGE v: ThinkPad E16 Gen 2
    serial: <superuser required>
  Mobo: LENOVO model: 21MA003RGE v: SDK0T76530 WIN
    serial: <superuser required> UEFI: LENOVO v: R2JET29W(1.06) date: 02/29/2024
Battery:
  ID-1: BAT0 charge: 43.5 Wh (71.8%) condition: 60.6/57.0 Wh (106.4%)
CPU:
  Info: 16-core (6-mt/10-st) model: Intel Core Ultra 7 155H bits: 64
    type: MST AMCP cache: 24 MiB note: check
  Speed (MHz): avg: 738 min/max: 400/4500:4800:3800:2500 cores: 1: 1949
    2: 400 3: 400 4: 1292 5: 1063 6: 1473 7: 400 8: 400 9: 1578 10: 400 11: 400
    12: 400 13: 400 14: 400 15: 400 16: 1019 17: 400 18: 400 19: 1162 20: 400
    21: 400 22: 1100
Graphics:
  Device-1: Intel Meteor Lake-P [Intel Arc Graphics] driver: xe v: kernel
  Device-2: Syntek Integrated Camera type: USB driver: uvcvideo
  Display: x11 server: X.Org v: 1.21.1.7 with: Xwayland v: 22.1.9 driver: X:
    loaded: modesetting unloaded: fbdev,vesa dri: swrast gpu: xe resolution:
    1: 1920x1080~60Hz 2: N/A
  API: OpenGL v: 4.5 Mesa 22.3.6 renderer: llvmpipe (LLVM 15.0.6 256 bits)
Audio:
  Device-1: Intel Meteor Lake-P HD Audio driver: sof-audio-pci-intel-mtl
  API: ALSA v: k6.11.4-zabbly+ status: kernel-api
  Server-1: PipeWire v: 0.3.65 status: active
Network:
  Device-1: Intel Meteor Lake PCH CNVi WiFi driver: iwlwifi
  IF: wlp0s20f3 state: up mac: 18:93:41:8e:00:62
  Device-2: Intel driver: e1000e
  IF: enp0s31f6 state: down mac: c4:c6:e6:22:80:2f
Bluetooth:
  Device-1: Intel AX211 Bluetooth type: USB driver: btusb
  Report: hciconfig ID: hci0 state: up address: 18:93:41:8E:00:66
Drives:
  Local Storage: total: 953.87 GiB used: 17.46 GiB (1.8%)
  ID-1: /dev/nvme0n1 vendor: Samsung model: MZAL81T0HDLB-00BLL
    size: 953.87 GiB
Partition:
  ID-1: / size: 914.69 GiB used: 17.15 GiB (1.9%) fs: ext4 dev: /dev/dm-1
  ID-2: /boot size: 455.1 MiB used: 312.9 MiB (68.7%) fs: ext2
    dev: /dev/nvme0n1p2
  ID-3: /boot/efi size: 511 MiB used: 5.8 MiB (1.1%) fs: vfat
    dev: /dev/nvme0n1p1
Swap:
  ID-1: swap-1 type: partition size: 976 MiB used: 0 KiB (0.0%) dev: /dev/dm-2
Sensors:
  System Temperatures: cpu: 33.0 C mobo: 28.5 C
  Fan Speeds (RPM): fan-1: 0 fan-2: 0
Info:
  Processes: 435 Uptime: 26m Memory: 30.83 GiB used: 3.94 GiB (12.8%)
  Shell: Bash inxi: 3.3.26
anon@anon:~$ lspci -nn | rg VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation Meteor Lake-P [Intel Arc Graphics] [8086:7d55] (rev 08)

The monitor I am trying to setup is the LG 29WP500-B 21:9 UltraWide. The recommended resolution for the monitor would be 2560x1080 @ 60 Hz. Please also note that I don't have the issue with another ThinkPad with Debian 12 and an older kernel (version 6.1.*) with the same HDMI cable connected. When I say "setup the monitor" I mean choosing and setting the resolution with xrandr.

Here is what I tried:

  • I tried manually adding the resolution in xrandr. Here are the commands I tried:
anon@anon:~$ cvt 2560 1080
# 2560x1080 59.98 Hz (CVT) hsync: 67.17 kHz; pclk: 230.00 MHz
Modeline "2560x1080_60.00"  230.00  2560 2720 2992 3424  1080 1083 1093 1120 -hsync +vsync
anon@anon:~$ xrandr --newmode "2560x1080"  230.00  2560 2720 2992 3424  1080 1083 1093 1120 -hsync +vsync
anon@anon:~$ xrandr --addmode HDMI-1 "2560x1080"
anon@anon:~$ xrandr --output HDMI-1 --mode "2560x1080"
xrandr: Configure crtc 1 failed
  • I tried manually setting the Hz to 59, 30, 29 in the cvt command above
  • I tried manually setting another crtc with the --crtc option in xrandr
  • I tried a different monitor which by the way has the same issue. I can provide the details of the monitor, if somebody is interested. It is a larger monitor (3840x1600), but in essence the issue is the same. The recommended resolution is not recognized and I am unable to create and set it manually
  • I researched the Intel Arc GPU I found the PCI device ID (see above), and checked with Intel: https://dgpu-docs.intel.com/devices/hardware-table.html For the GPU in question there is a remark: Kernel versions marked with an asterisk (*) require enabling support via the force_probe flag.

So I force probed the both with the xe, and also with the i915 driver. Both drivers work, I can boot without issues, dmesg loads drivers correctly, but the issue persists. I can't set the resolution manually and the resolution is not recognized automatically.

Here is how I force probed:

/etc/default/grub
# This is how it is currently done (for xe)
GRUB_CMDLINE_LINUX="modprobe.blacklist=i915 xe.force_probe=7d55"

This is how it was configured for i915

GRUB_CMDLINE_LINUX="i915.force_probe=7d55"

After changing the file I ran sudo update-grub, sudo update-grub2 and sudo update-initramfs -u and I rebooted with sudo reboot. Then I checked the kernel logs and found no errors.

Take a look for the output for the xe test, the i915 one was pretty much the same:

anon@anon:/etc/default$ sudo dmesg | rg xe
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.11.4-zabbly+ root=/dev/mapper/anondebian--vg-root ro modprobe.blacklist=i915 xe.force_probe=7d55 quiet
[    0.000000] NX (Execute Disable) protection: active
[    0.000026] MTRR map: 8 entries (3 fixed + 5 variable; max 23), built from 10 variable MTRRs
[    0.061077] Kernel command line: BOOT_IMAGE=/vmlinuz-6.11.4-zabbly+ root=/dev/mapper/anondebian--vg-root ro modprobe.blacklist=i915 xe.force_probe=7d55 quiet
[    0.154171] ... fixed-purpose events:   4
[    0.010409] ... fixed-purpose events:   3
[    1.106561] pci 0000:00:1f.4: BAR 4 [io  0xefa0-0xefbf]
[    2.853780] xe 0000:00:02.0: vgaarb: deactivate vga console
[    2.853890] xe 0000:00:02.0: [drm] Support for SR-IOV is not available
[    2.853914] xe 0000:00:02.0: [drm] Found METEORLAKE (device ID 7d55) display version 14.00
[    2.854797] xe 0000:00:02.0: [drm] Using GuC firmware from i915/mtl_guc_70.bin version 70.29.2
[    2.872157] xe 0000:00:02.0: [drm] Using GuC firmware from i915/mtl_guc_70.bin version 70.29.2
[    2.875037] xe 0000:00:02.0: [drm] Using HuC firmware from i915/mtl_huc_gsc.bin version 8.5.4
[    2.876476] xe 0000:00:02.0: [drm] Using GSC firmware from i915/mtl_gsc_1.bin version 102.0.10.1878
[    2.922514] xe 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
[    2.932158] xe 0000:00:02.0: [drm] Finished loading DMC firmware i915/mtl_dmc.bin (v2.11)
[    3.151742] xe 0000:00:02.0: [drm] GT0: using 65535 GUC IDs
[    3.167602] xe 0000:00:02.0: [drm] vcs1 fused off
[    3.167603] xe 0000:00:02.0: [drm] vcs3 fused off
[    3.167604] xe 0000:00:02.0: [drm] vcs4 fused off
[    3.167604] xe 0000:00:02.0: [drm] vcs5 fused off
[    3.167604] xe 0000:00:02.0: [drm] vcs6 fused off
[    3.167605] xe 0000:00:02.0: [drm] vcs7 fused off
[    3.167605] xe 0000:00:02.0: [drm] vecs1 fused off
[    3.167606] xe 0000:00:02.0: [drm] vecs2 fused off
[    3.167606] xe 0000:00:02.0: [drm] vecs3 fused off
[    3.168643] xe 0000:00:02.0: [drm] GT1: using 65535 GUC IDs
[    3.237187] [drm] Initialized xe 1.1.0 for 0000:00:02.0 on minor 0
[    3.274055] xe 0000:00:02.0: [drm] Allocated fbdev into stolen
[    3.281376] fbcon: xedrmfb (fb0) is primary device
[    3.281379] xe 0000:00:02.0: [drm] fb0: xedrmfb frame buffer device
[    3.361744] xe 0000:00:02.0: [drm] GT1: found GSC cv1.0
[    3.391089] xe 0000:00:02.0: [drm] Reducing the compressed framebuffer size. This may lead to less power savings than a non-reduced-size. Try to increase stolen memory size if available in BIOS.
[   16.352131] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
[   16.617461] RAPL PMU: API unit is 2^-32 Joules, 3 fixed counters, 655360 ms ovfl timer
[   16.726468] mei_gsc_proxy 0000:00:16.0-0f73db04-97ab-4125-b893-e904ad0d5464: bound 0000:00:02.0 (ops xe_gsc_proxy_component_ops [xe])
[   16.785101] sof-audio-pci-intel-mtl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [xe])
[   18.385255] Bluetooth: hci0: Fseq executed: 00.00.03.94

Am I missing some drivers? Is there something I can dive into or something I need to read upon to resolve this?

Ramhound
  • 44,080

1 Answers1

0

Same issue on ThinkPad E16 Gen 2 (Intel Arc, 8086:7d55). Drivers loaded (i915 or xe), but still got llvmpipe and couldn’t set external HDMI monitor resolution.

What worked:

I made sure the firmware was present in /lib/firmware/i915/ (mtl_dmc.bin, mtl_guc_70.bin, mtl_huc_gsc.bin, mtl_gsc_1.bin). Install linux-firmware if they’re missing.

Then I edited /etc/default/grub and set:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.force_probe=7d55 i915.enable_guc=3 video=HDMI-A-1:d"

This forces GPU detection, loads firmware, and disables HDMI if it causes issues. Then ran sudo update-grub and sudo update-initramfs -u.

After rebooting, I ran:

glxinfo | grep "OpenGL renderer"

and got:

Mesa Intel(R) Arc(tm) Graphics (MTL)

This confirmed hardware acceleration was working and allowed proper monitor resolution. Hope it helps! I'm new to Linux, so feel free to correct this if it’s risky — but it solved everything for me.