Hello, Michael. On Sun, Aug 25, 2024 at 16:31:54 +0100, Michael wrote: > On Sunday, 25 August 2024 13:33:14 BST Alan Mackenzie wrote: > > On Sat, Aug 24, 2024 at 20:36:11 +0000, Alan Mackenzie wrote: > > > On Sat, Aug 24, 2024 at 16:40:38 +0100, Michael wrote: > > > > On Saturday, 24 August 2024 14:25:31 BST Alan Mackenzie wrote: > > > > > On Sat, Aug 24, 2024 at 10:44:44 +0100, Michael wrote: > > [ .... ]
> > > > This reads like an unsuitable refresh rate problem. > Ah! I was wrong at my assumption - I had not understood the displayed > resolution was not the native/optimal monitor resolution. > > > I've read the "information" section from my monitor's adjustment panel. > > > It says 60 Hz. and 1920x1080 (on my current machine). On the new > > > machine, it reads 60 Hz., 2112x1016. This looks like being at the core > > > of the problem. 2112 / 1920 = 1.1 (more or less), i.e. 10% too many > > > pixels. > > > My monitor is ~52cm wide. 10% of this is the ~5cm. black strip at the > > > LHS of the monitor. > Right, for some reason the graphics core is not driving the monitor at the > appropriate (optimal) resolution. It doesn't in the BIOS settings display, either. There, it is also 2112x1116. (I think the "1016" from last night was a typo.) > > > Is there any convenient way I can display the current EDID information > > > block? > > Yes, there is: there is the package x11-misc/read-edid, which contains > > two utilities get-edid and parse-edid. Calling # get-edid | parse-edid > > produces, on my current machine: > > This is read-edid version 3.0.2. Prepare for some fun. > > Attempting to use i2c interface > > No EDID on bus 0 > > No EDID on bus 2 > > No EDID on bus 3 > > No EDID on bus 4 > > No EDID on bus 5 > > No EDID on bus 6 > > No EDID on bus 7 > > 1 potential busses found: 1 > > 256-byte EDID successfully retrieved from i2c bus 1 > > Looks like i2c was successful. Have a good day. > > Checksum Correct > > Section "Monitor" > > Identifier "SMB2430L" > > ModelName "SMB2430L" > > VendorName "SAM" > > # Monitor Manufactured week 13 of 2011 > > # EDID version 1.3 > > # Digital Display > > DisplaySize 520 290 > > Gamma 2.20 > > Option "DPMS" "true" > > Horizsync 30-81 > > VertRefresh 56-75 > > # Maximum pixel clock is 170MHz > > #Not giving standard mode: 1280x800, 60Hz > > #Not giving standard mode: 1280x960, 60Hz > > #Not giving standard mode: 1280x1024, 60Hz > > #Not giving standard mode: 1440x900, 60Hz > > #Not giving standard mode: 1600x1200, 60Hz > > #Not giving standard mode: 1680x1050, 60Hz > > #Not giving standard mode: 1152x864, 75Hz > > #Not giving standard mode: 1440x900, 75Hz > >From the above we can't tell if the monitor will work at 1920x1080@60Hz, but > according to the OEM specification sheet it should and the VertRefresh range > of 56-75 is broad enough to accommodate anything within it. Well the monitor's been working at that resolution since (according to the EDID) 2011. :-) > > #Extension block found. Parsing... > > Modeline "Mode 0" +hsync +vsync > > Modeline "Mode 1" +hsync +vsync > > Modeline "Mode 2" +hsync +vsync > > Modeline "Mode 3" +hsync +vsync > > Modeline "Mode 4" -hsync -vsync > > EndSection > Hmm ... no Modelines shown above and no preferred Mode provided. :-( Ah, I see from Dale's posts what the "Modeline"s are meant to be. I wonder why they're missing from my (somewhat old) monitor. > > .. On my new machine, it is almost identical, just using I2C bus 0, > > rather than 1. > > It is now clear that EDID contains not an optimal screen setting, but > > instead ranges (for example 56-75 Hz. screen refresh rate). > The ranges are indicative of what refresh rates the panel is capable of, for > different resolutions. As you say, of more concern is it does not provide an > optimal Mode. Yes. > > The question arises, what exactly puts the display into 1920x1080 > > 60Hz. at boot up time? Something must be chosing that resolution. > > I've tried grepping the kernel sources, but there are a lot lf > > "1920x1080"s there. > > :-( > You can try adding the correct video resolution at the kernel cmdline - see > below. Somehow I don't think that will work (which doesn't mean I won't try it). There is something in the motherboard which is throwing off the desired resolution by those extra 192 horizontal pixels, even in the BIOS. > > [ .... ] > > > My hypothesis at the moment is that something in the new machine is > > > wrongly pumping out 2112x1016 in place of 1980x1080 and this is > > > diminishing the size of (and reducing the quality of) the displayed > > > image. > Yes, from what you described this appears to be the case. > > > I think the EDID being received from the monitor and KVM-box are correct, > > > but that the BIOS is applying some "correction" to them, for some reason. > I'm not sure about this, look at the EDID output. The Modelines are > incomplete with no preferred resolution as per the OEM's specification. Yes, that's puzzling. But I'm pretty sure the monitor's display came up correctly when I first booted the machine last Monday. I think it was only after I started playing with it that it went wrong; that "playing with" was supplying the drm.edid_firmware kernel parameter. > > > Maybe I should try resetting the CMOS ram. > I'd be surprised if this has any effect on the displayed resolution. Something on my MB is adding in the spurious extra 192 pixels horizontally. > The EDID/DDC protocol expects a certain DC voltage (+5V). If this is not > provided as cleanly and uninterruptedly as expected, the initialisation and > communication between monitor & graphics card could go awry. Hence me > mumbling about avoiding adaptors and connectors which due to faults, poor > manufacture, dirt, oxidation, etc., could add resistance to the I2C wire > circuits. Of course the KVM itself may be interfering with what-ever EDID is > provided by the monitor itself. > Your approach to specify the resolution via an edid file should work, at > least > until it is deprecated from kernel 6.9.x onward and you have to build your > own > edid firmware file from the assembly source files in /usr/src/linux/tools/ > edid/. Oh dear! Yet more progress in the kernel. ;-( > You can enable CONFIG_DRM_LOAD_EDID_FIRMWARE in your kernel and add to the > kernel cmdline: > drm_kms_helper.edid_firmware=edid/edid/1920x1080.bin > Before you add the above, I'm not clear if I understand correctly from this > document, if first you have to run "make" in /usr/src/linux/tools/edid/ to > build the binary EDID blobs in your kernel image, or if they are built anyway > when you run make as part of building your kernel from source: The latter, I think. > /usr/src/linux/Documentation/admin-guide/edid.rst > Another option to try in case it works with KMS: > video=HDMI-A-1:1920x1080@60D I will try that now. I'm not very hopeful, I must admit. Just tried it - it didn't work. :-( But at least the videos still comes up as before. > To find what your card/port string is named as look at: > ls -la /sys/class/drm/* grep HDMI > or > dmesg | grep Connector -A1 -- Alan Mackenzie (Nuremberg, Germany).