You are not logged in.
My built-in display in my laptop reports incorrect resolution information through EDID, a known issue with this particular model (reports 2560x1800 when it's actually 2560x1600). So in the tty environment, I can't see the bottom 3 or 4 lines.
Not a huge deal, as SDDM and KDE correctly set the right resolution for my graphical environment. Still, when I was in the installation environment, and configuring my system before installing a desktop environment, I had to manually set my tty height so that the console would scroll properly (and so that vim and other programs that make use of the bottom row would display properly). And if I stop sddm, or otherwise switch ttys, I prefer not to have to manually run fbset or stty just to get it to behave properly.
So there are a couple ways I can do this:
* Run fbset in some kind of custom systemd service that I can enable, to run at boot. This has the advantage that I already know how to do this, and seems pretty simple to understand.
* Run fbset in some kind of script that runs at startup some other way.
* Have some kind of script run at login.
* Mess with KMS configuration to get the resolution right at the beginning, including if I end up using something like plymouth. I don't really understand how to do this right (or if there's a difference between early or late KMS start), but I get the impression this is the "right" way to fix my resolution issue.
Which is the way that makes the most sense? Do I have to worry about kernel updates or other updates changing these settings so I'd have to redo this periodically?
Offline
Offline
So I'm understanding your reply to be saying that my general impression is correct, that fixing the issue at kernel start is the most "correct" way to do this. I'll spend some time with the docs to try to understand how to build my own EDID binary, but my first pass at the linked kernel.org docs assumes some level of background knowledge I don't have.
As a remedy for such situations, the kernel configuration item CONFIG_DRM_LOAD_EDID_FIRMWARE was introduced. It allows to provide an individually prepared or corrected EDID data set in the /lib/firmware directory from where it is loaded via the firmware interface.
Ok, that makes sense. Once I have the proper EDID binary CustomEDID.bin, I just need to copy the file to
/usr/lib/firmware
and then add the line
drm.edid_firmware=edid/CustomEDID.bin
to the options line in
/boot/loader/entries/arch.conf
, because I'm using systemd-boot.
The code (see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for commonly used screen resolutions (800x600, 1024x768, 1280x1024, 1600x1200, 1680x1050, 1920x1080) as binary blobs
Ok, got it. Some common resolutions are already in the kernel source code. But not the one I care about.
To create binary EDID and C source code files from the existing data material, simply type "make" in tools/edid/.
If you want to create your own EDID file, copy the file 1024x768.S, replace the settings with your own data and add a new target to the Makefile.
And here's where I'm lost. Or at least unsure. Does this mean that I need to follow the following steps:
Download the kernel source for at least that tools/edid directory.
Retrieve my own EDID settings by parsing my existing EDID file and translating that to a source file with the same format/syntax as 1024x768.S, except fixing the resolution to the correct number, and leaving all the other settings alone.
Place that edited source file (let's call it 2560x1600.S) into the edid folder.
Edit the makefile to point to 2560x1600.S.
Run make.
Copy the resulting binary to the right place, as described above.
Edit the boot configuration file to make sure that the boot process passes the right parameters to the kernel at startup.
Does that look right? If so, I'm gonna go and figure out what each step actually entails, and get to tinkering.
Offline
The link also explains how to just tell the kernel which resolution to use at the kernel commandline and you should test that first.
If a standard cvt resolution doesn't work fro your panel, writing a custom EDID with one is just going to waste time.
Not a huge deal, as SDDM and KDE correctly set the right resolution for my graphical environment
makes me wonder how
My built-in display in my laptop reports incorrect resolution information through EDID, a known issue with this particular model
can be correct.
Please post your Xorg log, https://wiki.archlinux.org/title/Xorg#General
Offline
If a standard cvt resolution doesn't work fro your panel, writing a custom EDID with one is just going to waste time.
Thank you, that makes sense. I think I see what I need to do now. I'll read the docs and figure out what I need to pass to the kernel. Seems straightforward.
My xorg log, from the modesetting portion:
[ 6.513] (II) LoadModule: "modesetting"
[ 6.513] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 6.516] (II) Module modesetting: vendor="X.Org Foundation"
[ 6.516] compiled for 1.21.1.8, module version = 1.21.1
[ 6.516] Module class: X.Org Video Driver
[ 6.516] ABI class: X.Org Video Driver, version 25.2
[ 6.516] (II) LoadModule: "fbdev"
[ 6.516] (WW) Warning, couldn't open module fbdev
[ 6.516] (EE) Failed to load module "fbdev" (module does not exist, 0)
[ 6.516] (II) LoadModule: "vesa"
[ 6.516] (WW) Warning, couldn't open module vesa
[ 6.516] (EE) Failed to load module "vesa" (module does not exist, 0)
[ 6.516] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 6.542] (II) modeset(0): using drv /dev/dri/card0
[ 6.542] (II) modeset(0): Creating default Display subsection in Screen section
"Default Screen Section" for depth/fbbpp 24/32
[ 6.542] (==) modeset(0): Depth 24, (==) framebuffer bpp 32
[ 6.542] (==) modeset(0): RGB weight 888
[ 6.542] (==) modeset(0): Default visual is TrueColor
[ 6.542] (II) Loading sub module "glamoregl"
[ 6.542] (II) LoadModule: "glamoregl"
[ 6.542] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[ 6.546] (II) Module glamoregl: vendor="X.Org Foundation"
[ 6.546] compiled for 1.21.1.8, module version = 1.0.1
[ 6.546] ABI class: X.Org ANSI C Emulation, version 0.4
[ 6.687] (II) modeset(0): glamor X acceleration enabled on Mesa Intel(R) Iris(R) Plus Graphics 640 (Kaby Lake GT3e) (KBL GT3)
[ 6.687] (II) modeset(0): glamor initialized
[ 6.687] (==) modeset(0): VariableRefresh: disabled
[ 6.687] (==) modeset(0): AsyncFlipSecondaries: disabled
[ 6.688] (II) modeset(0): Output eDP-1 has no monitor section
[ 6.689] (II) modeset(0): Output DP-1 has no monitor section
[ 6.746] (II) modeset(0): Output HDMI-1 has no monitor section
[ 6.747] (II) modeset(0): Output DP-2 has no monitor section
[ 6.804] (II) modeset(0): Output HDMI-2 has no monitor section
[ 6.807] (II) modeset(0): EDID for output eDP-1
[ 6.807] (II) modeset(0): Manufacturer: APP Model: a034 Serial#: 0
[ 6.807] (II) modeset(0): Year: 2015 Week: 37
[ 6.807] (II) modeset(0): EDID Version: 1.4
[ 6.807] (II) modeset(0): Digital Display Input
[ 6.807] (II) modeset(0): 10 bits per channel
[ 6.807] (II) modeset(0): Digital interface is DisplayPort
[ 6.807] (II) modeset(0): Max Image Size [cm]: horiz.: 29 vert.: 18
[ 6.807] (II) modeset(0): Gamma: 2.20
[ 6.807] (II) modeset(0): No DPMS capabilities specified
[ 6.807] (II) modeset(0): Supported color encodings: RGB 4:4:4
[ 6.807] (II) modeset(0): First detailed timing is preferred mode
[ 6.807] (II) modeset(0): Preferred mode is native pixel format and refresh rate
[ 6.807] (II) modeset(0): redX: 0.680 redY: 0.320 greenX: 0.265 greenY: 0.690
[ 6.807] (II) modeset(0): blueX: 0.152 blueY: 0.052 whiteX: 0.312 whiteY: 0.329
[ 6.807] (II) modeset(0): Manufacturer's mask: 0
[ 6.807] (II) modeset(0): Supported detailed timing:
[ 6.807] (II) modeset(0): clock: 260.7 MHz Image Size: 286 x 179 mm
[ 6.808] (II) modeset(0): h_active: 2560 h_sync: 2568 h_sync_end 2600 h_blank_end 2640 h_border: 0
[ 6.808] (II) modeset(0): v_active: 1600 v_sync: 1632 v_sync_end 1640 v_blanking: 1646 v_border: 0
[ 6.808] (II) modeset(0): Supported detailed timing:
[ 6.808] (II) modeset(0): clock: 328.9 MHz Image Size: 286 x 179 mm
[ 6.808] (II) modeset(0): h_active: 2880 h_sync: 2888 h_sync_end 2920 h_blank_end 2960 h_border: 0
[ 6.808] (II) modeset(0): v_active: 1800 v_sync: 1838 v_sync_end 1846 v_blanking: 1852 v_border: 0
[ 6.808] (II) modeset(0): Monitor name: Color LCD
[ 6.808] (II) modeset(0): EDID (in hex):
[ 6.808] (II) modeset(0): 00ffffffffffff00061034a000000000
[ 6.808] (II) modeset(0): 25190104b51d1278020f11ae5243b027
[ 6.808] (II) modeset(0): 0d505400000001010101010101010101
[ 6.808] (II) modeset(0): 010101010101d9650050a0402e600820
[ 6.808] (II) modeset(0): 08081eb31000001a7c804050b0083470
[ 6.808] (II) modeset(0): 082068081eb31000001a000000fc0043
[ 6.808] (II) modeset(0): 6f6c6f72204c43440a20202000000010
[ 6.808] (II) modeset(0): 0000000000000000000000000000006e
[ 6.809] (II) modeset(0): Printing probed modes for output eDP-1
[ 6.809] (II) modeset(0): Modeline "2560x1600"x60.0 260.73 2560 2568 2600 2640 1600 1632 1640 1646 +hsync -vsync (98.8 kHz eP)
[ 6.809] (II) modeset(0): Modeline "2560x1600"x60.0 348.50 2560 2760 3032 3504 1600 1603 1609 1658 -hsync +vsync (99.5 kHz d)
[ 6.809] (II) modeset(0): Modeline "2560x1600"x60.0 268.50 2560 2608 2640 2720 1600 1603 1609 1646 +hsync -vsync (98.7 kHz d)
[ 6.809] (II) modeset(0): Modeline "2560x1440"x120.0 638.25 2560 2780 3064 3568 1440 1441 1444 1491 doublescan -hsync +vsync (178.9 kHz d)
[ 6.809] (II) modeset(0): Modeline "2560x1440"x120.0 469.12 2560 2584 2600 2640 1440 1441 1444 1481 doublescan +hsync -vsync (177.7 kHz d)
[ 6.809] (II) modeset(0): Modeline "2560x1440"x60.0 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync (89.5 kHz d)
[ 6.809] (II) modeset(0): Modeline "2560x1440"x60.0 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync (88.8 kHz d)
[ 6.809] (II) modeset(0): Modeline "2048x1536"x60.0 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync (95.3 kHz d)
[ 6.809] (II) modeset(0): Modeline "1920x1440"x60.0 234.00 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync (90.0 kHz d)
[ 6.809] (II) modeset(0): Modeline "1856x1392"x60.0 218.30 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync (86.4 kHz d)
[ 6.809] (II) modeset(0): Modeline "1792x1344"x60.0 204.80 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync (83.7 kHz d)
[ 6.809] (II) modeset(0): Modeline "2048x1152"x120.0 406.50 2048 2220 2444 2840 1152 1153 1156 1193 doublescan -hsync +vsync (143.1 kHz d)
[ 6.809] (II) modeset(0): Modeline "2048x1152"x120.0 302.50 2048 2072 2088 2128 1152 1153 1156 1185 doublescan +hsync -vsync (142.2 kHz d)
[ 6.809] (II) modeset(0): Modeline "2048x1152"x59.9 197.00 2048 2184 2400 2752 1152 1155 1160 1195 -hsync +vsync (71.6 kHz d)
[ 6.809] (II) modeset(0): Modeline "2048x1152"x59.9 156.75 2048 2096 2128 2208 1152 1155 1160 1185 +hsync -vsync (71.0 kHz d)
[ 6.809] (II) modeset(0): Modeline "1920x1200"x59.9 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync (74.6 kHz d)
[ 6.810] (II) modeset(0): Modeline "1920x1200"x60.0 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync (74.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1920x1080"x120.0 356.38 1920 2080 2288 2656 1080 1081 1084 1118 doublescan -hsync +vsync (134.2 kHz d)
[ 6.810] (II) modeset(0): Modeline "1920x1080"x119.9 266.50 1920 1944 1960 2000 1080 1081 1084 1111 doublescan +hsync -vsync (133.2 kHz d)
[ 6.810] (II) modeset(0): Modeline "1920x1080"x60.0 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync (67.2 kHz d)
[ 6.810] (II) modeset(0): Modeline "1920x1080"x59.9 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync (66.6 kHz d)
[ 6.810] (II) modeset(0): Modeline "1600x1200"x60.0 162.00 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync (75.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1680x1050"x60.0 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync (65.3 kHz d)
[ 6.810] (II) modeset(0): Modeline "1680x1050"x59.9 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync (64.7 kHz d)
[ 6.810] (II) modeset(0): Modeline "1400x1050"x60.0 122.00 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync (64.9 kHz d)
[ 6.810] (II) modeset(0): Modeline "1600x900"x120.0 246.00 1600 1728 1900 2200 900 901 904 932 doublescan -hsync +vsync (111.8 kHz d)
[ 6.810] (II) modeset(0): Modeline "1600x900"x119.9 186.50 1600 1624 1640 1680 900 901 904 926 doublescan +hsync -vsync (111.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1600x900"x59.9 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync (56.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1600x900"x59.8 97.50 1600 1648 1680 1760 900 903 908 926 +hsync -vsync (55.4 kHz d)
[ 6.810] (II) modeset(0): Modeline "1280x1024"x60.0 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync (64.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1400x900"x60.0 103.50 1400 1480 1624 1848 900 903 913 934 -hsync +vsync (56.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1400x900"x59.9 86.50 1400 1448 1480 1560 900 903 913 926 +hsync -vsync (55.4 kHz d)
[ 6.810] (II) modeset(0): Modeline "1280x960"x60.0 108.00 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync (60.0 kHz d)
[ 6.810] (II) modeset(0): Modeline "1440x810"x120.0 198.12 1440 1548 1704 1968 810 811 814 839 doublescan -hsync +vsync (100.7 kHz d)
[ 6.810] (II) modeset(0): Modeline "1440x810"x119.9 151.88 1440 1464 1480 1520 810 811 814 833 doublescan +hsync -vsync (99.9 kHz d)
[ 6.810] (II) modeset(0): Modeline "1368x768"x59.9 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync (47.8 kHz d)
[ 6.810] (II) modeset(0): Modeline "1368x768"x59.9 72.25 1368 1416 1448 1528 768 771 781 790 +hsync -vsync (47.3 kHz d)
[ 6.810] (II) modeset(0): Modeline "1280x800"x120.0 174.25 1280 1380 1516 1752 800 801 804 829 doublescan -hsync +vsync (99.5 kHz d)
[ 6.810] (II) modeset(0): Modeline "1280x800"x119.9 134.25 1280 1304 1320 1360 800 801 804 823 doublescan +hsync -vsync (98.7 kHz d)
[ 6.810] (II) modeset(0): Modeline "1280x800"x59.8 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync (49.7 kHz d)
[ 6.811] (II) modeset(0): Modeline "1280x800"x59.9 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync (49.3 kHz d)
[ 6.811] (II) modeset(0): Modeline "1280x720"x120.0 156.12 1280 1376 1512 1744 720 721 724 746 doublescan -hsync +vsync (89.5 kHz d)
[ 6.811] (II) modeset(0): Modeline "1280x720"x120.0 120.75 1280 1304 1320 1360 720 721 724 740 doublescan +hsync -vsync (88.8 kHz d)
[ 6.811] (II) modeset(0): Modeline "1280x720"x59.9 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync (44.8 kHz d)
[ 6.811] (II) modeset(0): Modeline "1280x720"x59.7 63.75 1280 1328 1360 1440 720 723 728 741 +hsync -vsync (44.3 kHz d)
[ 6.811] (II) modeset(0): Modeline "1024x768"x120.1 133.47 1024 1100 1212 1400 768 768 770 794 doublescan -hsync +vsync (95.3 kHz d)
[ 6.811] (II) modeset(0): Modeline "1024x768"x60.0 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x720"x120.0 117.00 960 1024 1128 1300 720 720 722 750 doublescan -hsync +vsync (90.0 kHz d)
[ 6.811] (II) modeset(0): Modeline "928x696"x120.1 109.15 928 976 1088 1264 696 696 698 719 doublescan -hsync +vsync (86.4 kHz d)
[ 6.811] (II) modeset(0): Modeline "896x672"x120.0 102.40 896 960 1060 1224 672 672 674 697 doublescan -hsync +vsync (83.7 kHz d)
[ 6.811] (II) modeset(0): Modeline "1024x576"x119.9 98.50 1024 1092 1200 1376 576 577 580 597 doublescan -hsync +vsync (71.6 kHz d)
[ 6.811] (II) modeset(0): Modeline "1024x576"x119.9 78.38 1024 1048 1064 1104 576 577 580 592 doublescan +hsync -vsync (71.0 kHz d)
[ 6.811] (II) modeset(0): Modeline "1024x576"x59.9 46.50 1024 1064 1160 1296 576 579 584 599 -hsync +vsync (35.9 kHz d)
[ 6.811] (II) modeset(0): Modeline "1024x576"x59.8 42.00 1024 1072 1104 1184 576 579 584 593 +hsync -vsync (35.5 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x600"x119.9 96.62 960 1028 1128 1296 600 601 604 622 doublescan -hsync +vsync (74.6 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x600"x120.0 77.00 960 984 1000 1040 600 601 604 617 doublescan +hsync -vsync (74.0 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x540"x119.9 86.50 960 1024 1124 1288 540 541 544 560 doublescan -hsync +vsync (67.2 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x540"x120.0 69.25 960 984 1000 1040 540 541 544 555 doublescan +hsync -vsync (66.6 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x540"x59.6 40.75 960 992 1088 1216 540 543 548 562 -hsync +vsync (33.5 kHz d)
[ 6.811] (II) modeset(0): Modeline "960x540"x59.8 37.25 960 1008 1040 1120 540 543 548 556 +hsync -vsync (33.3 kHz d)
[ 6.811] (II) modeset(0): Modeline "800x600"x120.0 81.00 800 832 928 1080 600 600 602 625 doublescan +hsync +vsync (75.0 kHz d)
[ 6.811] (II) modeset(0): Modeline "800x600"x60.3 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz d)
[ 6.811] (II) modeset(0): Modeline "800x600"x56.2 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync (35.2 kHz d)
[ 6.811] (II) modeset(0): Modeline "840x525"x120.0 73.12 840 892 980 1120 525 526 529 544 doublescan -hsync +vsync (65.3 kHz d)
[ 6.811] (II) modeset(0): Modeline "840x525"x119.8 59.50 840 864 880 920 525 526 529 540 doublescan +hsync -vsync (64.7 kHz d)
[ 6.811] (II) modeset(0): Modeline "864x486"x59.9 32.50 864 888 968 1072 486 489 494 506 -hsync +vsync (30.3 kHz d)
[ 6.811] (II) modeset(0): Modeline "864x486"x59.6 30.50 864 912 944 1024 486 489 494 500 +hsync -vsync (29.8 kHz d)
[ 6.811] (II) modeset(0): Modeline "700x525"x120.0 61.00 700 744 820 940 525 526 532 541 doublescan +hsync +vsync (64.9 kHz d)
[ 6.812] (II) modeset(0): Modeline "800x450"x119.9 59.12 800 848 928 1056 450 451 454 467 doublescan -hsync +vsync (56.0 kHz d)
[ 6.812] (II) modeset(0): Modeline "800x450"x119.6 48.75 800 824 840 880 450 451 454 463 doublescan +hsync -vsync (55.4 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x512"x120.0 54.00 640 664 720 844 512 512 514 533 doublescan +hsync +vsync (64.0 kHz d)
[ 6.812] (II) modeset(0): Modeline "700x450"x119.9 51.75 700 740 812 924 450 451 456 467 doublescan -hsync +vsync (56.0 kHz d)
[ 6.812] (II) modeset(0): Modeline "700x450"x119.8 43.25 700 724 740 780 450 451 456 463 doublescan +hsync -vsync (55.4 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x480"x120.0 54.00 640 688 744 900 480 480 482 500 doublescan +hsync +vsync (60.0 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x480"x59.9 25.18 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz d)
[ 6.812] (II) modeset(0): Modeline "720x405"x59.5 22.50 720 744 808 896 405 408 413 422 -hsync +vsync (25.1 kHz d)
[ 6.812] (II) modeset(0): Modeline "720x405"x59.0 21.75 720 768 800 880 405 408 413 419 +hsync -vsync (24.7 kHz d)
[ 6.812] (II) modeset(0): Modeline "684x384"x119.8 42.62 684 720 788 892 384 385 390 399 doublescan -hsync +vsync (47.8 kHz d)
[ 6.812] (II) modeset(0): Modeline "684x384"x119.7 36.12 684 708 724 764 384 385 390 395 doublescan +hsync -vsync (47.3 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x400"x119.8 41.75 640 676 740 840 400 401 404 415 doublescan -hsync +vsync (49.7 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x400"x120.0 35.50 640 664 680 720 400 401 404 411 doublescan +hsync -vsync (49.3 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x360"x119.7 37.25 640 672 736 832 360 361 364 374 doublescan -hsync +vsync (44.8 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x360"x119.7 31.88 640 664 680 720 360 361 364 370 doublescan +hsync -vsync (44.3 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x360"x59.8 18.00 640 664 720 800 360 363 368 376 -hsync +vsync (22.5 kHz d)
[ 6.812] (II) modeset(0): Modeline "640x360"x59.3 17.75 640 688 720 800 360 363 368 374 +hsync -vsync (22.2 kHz d)
[ 6.812] (II) modeset(0): Modeline "512x384"x120.0 32.50 512 524 592 672 384 385 388 403 doublescan -hsync -vsync (48.4 kHz d)
[ 6.812] (II) modeset(0): Modeline "512x288"x120.0 23.25 512 532 580 648 288 289 292 299 doublescan -hsync +vsync (35.9 kHz d)
[ 6.812] (II) modeset(0): Modeline "512x288"x119.8 21.00 512 536 552 592 288 289 292 296 doublescan +hsync -vsync (35.5 kHz d)
[ 6.812] (II) modeset(0): Modeline "480x270"x119.3 20.38 480 496 544 608 270 271 274 281 doublescan -hsync +vsync (33.5 kHz d)
[ 6.812] (II) modeset(0): Modeline "480x270"x119.6 18.62 480 504 520 560 270 271 274 278 doublescan +hsync -vsync (33.3 kHz d)
[ 6.812] (II) modeset(0): Modeline "400x300"x120.6 20.00 400 420 484 528 300 300 302 314 doublescan +hsync +vsync (37.9 kHz d)
[ 6.812] (II) modeset(0): Modeline "400x300"x112.7 18.00 400 412 448 512 300 300 301 312 doublescan +hsync +vsync (35.2 kHz d)
[ 6.812] (II) modeset(0): Modeline "432x243"x119.8 16.25 432 444 484 536 243 244 247 253 doublescan -hsync +vsync (30.3 kHz d)
[ 6.812] (II) modeset(0): Modeline "432x243"x119.1 15.25 432 456 472 512 243 244 247 250 doublescan +hsync -vsync (29.8 kHz d)
[ 6.812] (II) modeset(0): Modeline "320x240"x120.1 12.59 320 328 376 400 240 245 246 262 doublescan -hsync -vsync (31.5 kHz d)
[ 6.813] (II) modeset(0): Modeline "360x202"x119.0 11.25 360 372 404 448 202 204 206 211 doublescan -hsync +vsync (25.1 kHz d)
[ 6.813] (II) modeset(0): Modeline "360x202"x118.3 10.88 360 384 400 440 202 204 206 209 doublescan +hsync -vsync (24.7 kHz d)
[ 6.813] (II) modeset(0): Modeline "320x180"x119.7 9.00 320 332 360 400 180 181 184 188 doublescan -hsync +vsync (22.5 kHz d)
[ 6.813] (II) modeset(0): Modeline "320x180"x118.6 8.88 320 344 360 400 180 181 184 187 doublescan +hsync -vsync (22.2 kHz d)
[ 6.813] (II) modeset(0): EDID for output DP-1
[ 6.870] (II) modeset(0): EDID for output HDMI-1
[ 6.870] (II) modeset(0): EDID for output DP-2
[ 6.928] (II) modeset(0): EDID for output HDMI-2
[ 6.928] (II) modeset(0): Output eDP-1 connected
[ 6.928] (II) modeset(0): Output DP-1 disconnected
[ 6.928] (II) modeset(0): Output HDMI-1 disconnected
[ 6.928] (II) modeset(0): Output DP-2 disconnected
[ 6.928] (II) modeset(0): Output HDMI-2 disconnected
[ 6.928] (II) modeset(0): Using exact sizes for initial modes
[ 6.928] (II) modeset(0): Output eDP-1 using initial mode 2560x1600 +0+0
[ 6.928] (==) modeset(0): Using gamma correction (1.0, 1.0, 1.0)
[ 6.928] (==) modeset(0): DPI set to (96, 96)
[ 6.928] (II) Loading sub module "fb"
[ 6.928] (II) LoadModule: "fb"
[ 6.928] (II) Module "fb" already built-in
[ 7.026] (==) modeset(0): Backing store enabled
[ 7.026] (==) modeset(0): Silken mouse enabled
[ 7.110] (II) modeset(0): Initializing kms color map for depth 24, 8 bpc.
[ 7.110] (==) modeset(0): DPMS enabled
[ 7.110] (II) modeset(0): [DRI2] Setup complete
[ 7.110] (II) modeset(0): [DRI2] DRI driver: iris
[ 7.110] (II) modeset(0): [DRI2] VDPAU driver: va_gl
As you can probably tell, I don't have a great grasp on what's going on here, but I can see that at 6.807 and 6.808 the EDID information passed about "supported detailed timing" does indicate that the display supports 2880x1800 (incorrect) and 2560x1600 (correct). Once it starts probing supported modes, though, at 6.809, none of those reported modes are 2880x1800, and by 6.928 it outputs 2560x1600 to the display.
Offline
I just needed the block of hexadecimals
The EDID advertises
Detailed Timing Descriptors:
DTD 1: 2560x1600 60.000828 Hz 8:5 98.761 kHz 260.730000 MHz (286 mm x 179 mm)
Hfront 8 Hsync 32 Hback 40 Hpol P
Vfront 32 Vsync 8 Vback 6 Vpol N
DTD 2: 2880x1800 60.000876 Hz 8:5 111.122 kHz 328.920000 MHz (286 mm x 179 mm)
Hfront 8 Hsync 32 Hback 40 Hpol P
Vfront 38 Vsync 8 Vback 6 Vpol N
and xorg uses 2560x1600
Add "video=eDP-1:2560x1600@60" to the https://wiki.archlinux.org/title/Kernel_parameters and you should be fine.
("ls /sys/class/drm/card0*" to check that the output name didn't change, the one there matters, not the one in the xorg log)
Offline
Thanks! I'm gonna keep poking around. I did add that string to my /boot/loader/entries/arch.conf, and I can see that my kernel is currently running with those parameters, but for some reason the virtual consoles are still running at the 2880x1800 resolution. fbset outputs:
mode "2880x1800"
geometry 2880 1800 2880 1800 32
timings 0 0 0 0 0 0 0
rgba 8/16,8/8,8/0,0/0
endmode
Meanwhile, cat /proc/cmdline returns:
initrd=initramfs-linux.img root=LABEL=archpart video=eDP-1:2560x1600@60 rw
The device at /sys/class/drm/ also is "card0-eDP-1" (and I'm pretty sure it's right, as all the others report a status of "disconnected") so I'm not sure why the video= parameter didn't work.
It seems hacky to just run "fbset -g 2560 1600 2560 1600 32" as an enabled service, and I've learned quite a bit the last few days about how the kernel does this stuff, so now I'm emotionally invested in getting it right in the kernel parameters rather than after. But I'll report back if I find anything.
Offline
Do you get the same framebuffer resolution when only booting the rescue.target (2nd link below)?
Offline
Do you get the same framebuffer resolution when only booting the rescue.target
Yup. Same output on fbset (showing 2880x1800), and at /proc/cmdline (showing that the "video" kernel parameter was passed to the kernel at boot).
I wonder if something is happening when the "kms" hook is being run that it's overriding the kernel parameters passed at boot. I'm going to try disabling the kms hook and seeing if that does anything.
Offline
Nope, booting up from an image without the kms hook didn't change the behavior, even with the "video=" kernel parameter. I wonder if it has something to do with i915.
Either way, I think I'm giving up on fixing it at the bootloader, and just passing the fbset command in a systemd service that runs at startup.
Offline
EFI firmware is able to report a specific mode to the kernel that seems to override anything in EDID .
My main system has followoing entry on the advanced screen > uefi confiugration
Full HD UEFI
When [Auto] is selected, the resolution will be set to 1920 x 1080 if the monitor
supports Full HD resolution. If the monitor does not support Full HD resolution,
then the resolution will be set to 1024 x 768. When [Disable] is selected, the
resolution will be set to 1024 x 768 directly.
My current monitor is 2560x1440 . Refind , X and wayland can use the full res but the kernel only allows 1024x768.
The EDID seen by the kernel is the correct one, but I have been unable to change the resolution.
The switch from highres to 1204x768 is very early in the boot process and before the message "starting systemd xxxx" is shown.
Maybe your issue is also caused by efi firmware. Are you using latest version of firmware for your system ?
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Offline
Are you using latest version of firmware for your system ?
Yes, Apple updates the firmware with each annual major update of its OS, and I went ahead and installed the last supported version of the OS before installing Linux.
For me, the reported resolution is higher than the actual resolution supported, so it does make use of every pixel, and I can just tell it not to send anything to the "edge" of the screen that doesn't actually exist. I just would've preferred to have fixed it at boot/kernel loading rather than after everything else comes up.
Offline