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?