You are not logged in.

#1 2023-08-03 01:55:00

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Preferred method to set framebuffer/vconsole resolution at boot?

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

#2 2023-08-03 06:26:41

seth
Member
Registered: 2012-09-03
Posts: 51,357

Offline

#3 2023-08-04 00:27:13

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Re: Preferred method to set framebuffer/vconsole resolution at boot?

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.

docs.kernel.org wrote:

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.

docs.kernel.org wrote:

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.

docs.kernel.org wrote:

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:

  1. Download the kernel source for at least that tools/edid directory.

  2. 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.

  3. Place that edited source file (let's call it 2560x1600.S) into the edid folder.

  4. Edit the makefile to point to 2560x1600.S.

  5. Run make.

  6. Copy the resulting binary to the right place, as described above.

  7. 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

#4 2023-08-04 06:37:30

seth
Member
Registered: 2012-09-03
Posts: 51,357

Re: Preferred method to set framebuffer/vconsole resolution at boot?

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

#5 2023-08-04 14:02:44

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Re: Preferred method to set framebuffer/vconsole resolution at boot?

seth wrote:

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

#6 2023-08-04 14:18:34

seth
Member
Registered: 2012-09-03
Posts: 51,357

Re: Preferred method to set framebuffer/vconsole resolution at boot?

I just needed the block of hexadecimals wink

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

#7 2023-08-05 00:19:50

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Re: Preferred method to set framebuffer/vconsole resolution at boot?

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

#8 2023-08-05 06:06:32

seth
Member
Registered: 2012-09-03
Posts: 51,357

Re: Preferred method to set framebuffer/vconsole resolution at boot?

Do you get the same framebuffer resolution when only booting the rescue.target (2nd link below)?

Offline

#9 2023-08-06 23:57:17

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Re: Preferred method to set framebuffer/vconsole resolution at boot?

seth wrote:

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

#10 2023-08-07 15:56:37

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Re: Preferred method to set framebuffer/vconsole resolution at boot?

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

#11 2023-08-08 12:15:50

Lone_Wolf
Forum Moderator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,928

Re: Preferred method to set framebuffer/vconsole resolution at boot?

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.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#12 2023-08-09 00:15:22

Barry Zuckerkorn
Member
Registered: 2023-08-03
Posts: 7

Re: Preferred method to set framebuffer/vconsole resolution at boot?

Lone_Wolf wrote:

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

Board footer

Powered by FluxBB