![如何更改 Atom x6413 处理器上 Intel 集成显卡的屏幕分辨率](https://linux22.com/image/1024124/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20Atom%20x6413%20%E5%A4%84%E7%90%86%E5%99%A8%E4%B8%8A%20Intel%20%E9%9B%86%E6%88%90%E6%98%BE%E5%8D%A1%E7%9A%84%E5%B1%8F%E5%B9%95%E5%88%86%E8%BE%A8%E7%8E%87.png)
我有一台新的单板计算机(iBase IB836F-6413E),它使用 Intel Atom x6413 处理器,我无法让除 1024x768 之外的任何屏幕分辨率工作。
我的设置如下:
- 木板:iBase IB836F-6413 SBC
- 处理器:英特尔凌动 x6413,集成英特尔超高清显卡,适用于第 10 代英特尔处理器
- 内存:4GB PC4-3200
- 贮存:120GB mSATA 固态硬盘
- 监视器:Iiyama Prolite XUB3493XQSU。支持高达 3440x1440 的分辨率。通过 Display Port (DP) 连接器连接。
- 力量:通过直流输入连接器提供 19V 直流电源
- 键盘:罗技无线接收器插入 USB 端口
- 老鼠:罗技无线使用与键盘相同的无线接收器。
- 操作系统:Ubuntu 20.04 LTS。
- Linux 内核:5.11.0。
xrandr 命令显示显示器名称为默认名称,但我认为应该是 DP-1 或类似的名称,因为我的显示器是通过 DP 连接器连接的。请参阅下面的 xrandr 输出。
我尝试使用 xrandr 添加新的输出模式,如下所示:
$ xrandr --verbose
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 1024 x 768, maximum 1024 x 768
default connected primary 1024x768+0+0 (0x521) normal (normal) 0mm x 0mm
Identifier: 0x520
Timestamp: 140204
Subpixel: unknown
Clones:
CRTC: 0
CRTCs: 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
_MUTTER_PRESENTATION_OUTPUT: 0
non-desktop: 0
supported: 0, 1
1024x768 (0x521) 59.769MHz *current
h: width 1024 start 0 end 0 total 1024 skew 0 clock 58.37KHz
v: height 768 start 0 end 0 total 768 clock 76.00Hz
$ 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
$ sudo xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr: Failed to get size of gamma for output default
$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 1024 x 768, maximum 1024 x 768
default connected primary 1024x768+0+0 0mm x 0mm
1024x768 76.00*
1920x1080_60.00 (0x54e) 173.000MHz -HSync +VSync
h: width 1920 start 2048 end 2248 total 2576 skew 0 clock 67.16KHz
v: height 1080 start 1083 end 1088 total 1120 clock 59.96Hz
$ sudo xrandr --addmode default "1920x1080_60.00"
xrandr: Failed to get size of gamma for output default
$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 1024 x 768, maximum 1024 x 768
default connected primary 1024x768+0+0 0mm x 0mm
1024x768 76.00*
1920x1080_60.00 59.96
然后,显示设置中会显示 1920x1080 分辨率,但当我选择它时没有任何变化。见屏幕截图:
可能是因为 Atom x6413 太新了,集成显卡还不支持?这款芯片于 2021 年 1 月推出。
刚启动的系统上的 dmesg 似乎没有显示任何与图形相关的错误。
inxi -G 命令显示:
Graphics:
Device-1: Intel driver: N/A
Display: x11 server: X.Org 1.20.11 driver: fbdev
unloaded: modesetting,vesa resolution: 1024x768~76Hz
OpenGL: renderer: llvmpipe (LLVM 12.0.0 128 bits) v: 4.5 Mesa 21.0.3
英特尔驱动程序:N/A 看起来很可疑。
lshw -C 显示内容:
*-display UNCLAIMED
description: VGA compatible controller
product: Intel Corporation
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 01
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list
configuration: latency=0
resources: memory:80000000-80ffffff memory:70000000-7fffffff ioport:6000(size=64) memory:c0000-dffff
有人能帮我弄清楚如何让视频输出正常工作吗?
我也尝试将内核更新到 5.14.1,但发现了同样的问题。
我查看了两个内核版本(5.11.0 和 5.14.1)的 dmesg 输出,发现与 pinctrl_elkhartlake 相关的 oops。这可能与图形问题有关,但似乎不太可能。以下是显示内核版本 5.14.1 错误的 dmesg 输出:
...
[ 0.741662] acpi device:4e: hash matches
[ 0.741810] RAS: Correctable Errors collector initialized.
[ 0.743163] Freeing unused decrypted memory: 2036K
[ 0.743723] Freeing unused kernel image (initmem) memory: 2892K
[ 0.763189] Write protecting the kernel read-only data: 30720k
[ 0.764251] Freeing unused kernel image (text/rodata gap) memory: 2036K
[ 0.764773] Freeing unused kernel image (rodata/data gap) memory: 1816K
[ 0.780290] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 0.780298] Run /init as init process
[ 0.780307] with arguments:
[ 0.780315] /init
[ 0.780317] splash
[ 0.780319] with environment:
[ 0.780320] HOME=/
[ 0.780322] TERM=linux
[ 0.780323] BOOT_IMAGE=/boot/vmlinuz-5.14.1-051401-generic
[ 0.872410] BUG: kernel NULL pointer dereference, address: 0000000000000000
[ 0.872426] #PF: supervisor read access in kernel mode
[ 0.872428] #PF: error_code(0x0000) - not-present page
[ 0.872431] PGD 0 P4D 0
[ 0.872434] Oops: 0000 [#1] SMP NOPTI
[ 0.872438] CPU: 2 PID: 174 Comm: systemd-udevd Tainted: G I 5.14.1-051401-generic #202109030936
[ 0.872442] Hardware name: /, BIOS 5.19 06/22/2021
[ 0.872444] RIP: 0010:strcmp+0xc/0x20
[ 0.872450] Code: 06 49 89 f8 48 83 c6 01 48 83 c7 01 88 47 ff 84 c0 75 eb 4c 89 c0 c3 0f 1f 80 00 00 00 00 31 c0 eb 08 48 83 c0 01 84 d2 74 0f <0f> b6 14 07 3a 14 06 74 ef 19 c0 83 c8 01 c3 31 c0 c3 66 90 48 85
[ 0.872454] RSP: 0018:ffffa10bc05b7b10 EFLAGS: 00010246
[ 0.872457] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffa10bc05b7ac0
[ 0.872459] RDX: 0000000000000000 RSI: ffffffffc007ac93 RDI: 0000000000000000
[ 0.872461] RBP: ffffa10bc05b7b38 R08: 0000000000000000 R09: 0000000000000000
[ 0.872464] R10: ffff8f37ca2ec000 R11: 0000000000000000 R12: ffffffffc007cc40
[ 0.872466] R13: ffffffffc007e0e0 R14: 0000000000000000 R15: ffffffffc007e140
[ 0.872468] FS: 00007f1339622880(0000) GS:ffff8f384bf00000(0000) knlGS:0000000000000000
[ 0.872471] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 0.872473] CR2: 0000000000000000 CR3: 000000010d84a000 CR4: 0000000000350ee0
[ 0.872476] Call Trace:
[ 0.872479] ? intel_pinctrl_get_soc_data+0x67/0xc0
[ 0.872484] intel_pinctrl_probe_by_uid+0x13/0x30
[ 0.872488] platform_probe+0x42/0xa0
[ 0.872492] really_probe+0x1fb/0x400
[ 0.872495] __driver_probe_device+0x109/0x180
[ 0.872498] driver_probe_device+0x23/0x90
[ 0.872501] __driver_attach+0xac/0x1b0
[ 0.872503] ? __device_attach_driver+0xe0/0xe0
[ 0.872506] bus_for_each_dev+0x7c/0xc0
[ 0.872509] driver_attach+0x1e/0x20
[ 0.872511] bus_add_driver+0x135/0x1f0
[ 0.872513] driver_register+0x95/0xf0
[ 0.872516] ? 0xffffffffc0081000
[ 0.872519] __platform_driver_register+0x1e/0x20
[ 0.872522] ehl_pinctrl_driver_init+0x1c/0x1000 [pinctrl_elkhartlake]
[ 0.872527] do_one_initcall+0x46/0x1d0
[ 0.872531] ? kmem_cache_alloc_trace+0x159/0x2c0
[ 0.872535] do_init_module+0x62/0x290
[ 0.872539] load_module+0xaa8/0xb40
[ 0.872543] __do_sys_finit_module+0xbf/0x120
[ 0.872547] __x64_sys_finit_module+0x18/0x20
[ 0.872550] do_syscall_64+0x59/0xc0
[ 0.872554] ? exit_to_user_mode_prepare+0x37/0xb0
[ 0.872558] ? syscall_exit_to_user_mode+0x27/0x50
[ 0.872561] ? __x64_sys_read+0x19/0x20
[ 0.872565] ? do_syscall_64+0x69/0xc0
[ 0.872568] entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 0.872572] RIP: 0033:0x7f1339ba489d
[ 0.872575] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c3 f5 0c 00 f7 d8 64 89 01 48
[ 0.872580] RSP: 002b:00007ffe65f1b308 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[ 0.872583] RAX: ffffffffffffffda RBX: 00005604123a8d70 RCX: 00007f1339ba489d
[ 0.872586] RDX: 0000000000000000 RSI: 00007f1339a81ded RDI: 0000000000000005
[ 0.872588] RBP: 0000000000020000 R08: 0000000000000000 R09: 0000000000000000
[ 0.872590] R10: 0000000000000005 R11: 0000000000000246 R12: 00007f1339a81ded
[ 0.872593] R13: 0000000000000000 R14: 00005604123aa7b0 R15: 00005604123a8d70
[ 0.872596] Modules linked in: video(+) fjes(+) pinctrl_elkhartlake(+)
[ 0.872603] CR2: 0000000000000000
[ 0.872606] ---[ end trace 42d0286ff1ef1c67 ]---
[ 0.872608] RIP: 0010:strcmp+0xc/0x20
[ 0.872611] Code: 06 49 89 f8 48 83 c6 01 48 83 c7 01 88 47 ff 84 c0 75 eb 4c 89 c0 c3 0f 1f 80 00 00 00 00 31 c0 eb 08 48 83 c0 01 84 d2 74 0f <0f> b6 14 07 3a 14 06 74 ef 19 c0 83 c8 01 c3 31 c0 c3 66 90 48 85
[ 0.872615] RSP: 0018:ffffa10bc05b7b10 EFLAGS: 00010246
[ 0.872618] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffa10bc05b7ac0
[ 0.872620] RDX: 0000000000000000 RSI: ffffffffc007ac93 RDI: 0000000000000000
[ 0.872622] RBP: ffffa10bc05b7b38 R08: 0000000000000000 R09: 0000000000000000
[ 0.872625] R10: ffff8f37ca2ec000 R11: 0000000000000000 R12: ffffffffc007cc40
[ 0.872627] R13: ffffffffc007e0e0 R14: 0000000000000000 R15: ffffffffc007e140
[ 0.872629] FS: 00007f1339622880(0000) GS:ffff8f384bf00000(0000) knlGS:0000000000000000
[ 0.872632] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 0.872634] CR2: 0000000000000000 CR3: 000000010d84a000 CR4: 0000000000350ee0
[ 0.872654] fbcon: Taking over console
[ 0.872722] Console: switching to colour frame buffer device 128x48
[ 0.927847] acpi PNP0C14:02: duplicate WMI GUID 05901221-D566-11D1-B2F0-00A0C9062910 (first instance was on PNP0C14:01)
...
答案1
我设法通过强制 i915 驱动程序进行探测,使显示器支持的所有分辨率都正常工作。即,我将 grub 配置文件中的 linux 启动命令行编辑为如下内容:GRUB_CMDLINE_LINUX="i915.force_probe=4555" 这是在文件中:/etc/default/grub 然后我运行 sudo update-grub 并重新启动,所有分辨率都显示在显示设置中,并且它们都正常工作。我通过注意到 lsmod 的输出在使用 i915 模块时没有显示任何内容来弄清楚这一点:
lsmod | grep i915
i915 2297856 0
drm_kms_helper 237568 1 i915
cec 53248 2 drm_kms_helper,i915
drm 548864 2 drm_kms_helper,i915
i2c_algo_bit 16384 2 igb,i915
video 49152 1 i915
lspci 的输出还给出了设备 ID 为 4555 的设备详细信息:
sudo lspci -nnk | grep -i -A3 vga
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:4555] (rev 01)
DeviceName: Onboard - Video
Subsystem: Intel Corporation Device [8086:7270]
Kernel modules: i915