Wrong EDID data returned?

I have a GK107 [NVS 510] card and the EDID data seems to result in a Vertical Refresh rate that the card seems not to handle.

This is under Linux, using Linux tools to query and set settings.

sudo get-edid | parse-edid gives

Modeline “Mode 0” 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync
as the only mode for 3840x2160. This seems to be the mode for a 60Hz vertical refresh rate.

But the only one that has ever worked (on various Linux OSes) is a 30Hz refresh rate.

gtf 3840 2160 30 generates the modeline for 30Hz as

3840x2160 @ 30.00 Hz (GTF) hsync: 65.91 kHz; pclk: 339.57 MHz

Modeline “3840x2160_30.00” 339.57 3840 4080 4496 5152 2160 2161 2164 2197 -HSync +Vsync

Different documentation sources give different answers for vertical refresh for the NVS 510 - some 60Hz, some 30Hz.

I also have an integrated Intel graphics card and that may be involved in the confusion. I have to use that card to see BIOS/Grub/etc initial screens, and also to force the 30Hz setting so I can use the new card.

Is the card’s EDID wrong? Are the BIOS and OSes getting confused between the two cards’ EDIDs?

It looks like it’s the cable that only supports 30Hz. I’ll wait till I have a proper cable and if that’s the case I will delete this topic.

No it wasn’t the cable. It’s stranger than that.

When I first installed the card and monitor, 60Hz at 3840x2160 was available in Ubuntu settings and other utilities, but didn’t work. When I manually set it, it then worked. But now, the EDID only has a 30Hz mode at the max resolution and the utilities only offer 30Hz.

The monitor spec is also strange. The optimum resolution is given as 3840 x 2160 @ 30 Hz but the maximum resolution is given as 60Hz - in fact as 59.997Hz because the pixel clock for that is 533.250MHz, the maximum for the monitor. 60Hz has a pixel clock of 712.30MHz and I don’t understand why they are so different.

Can someone explain why the EDID data has apparently changed, and whether I can (or should) set the 59.997Hz vertical refresh? And if so, how to.

Please enable mode debugging by creating /etc/X11/xorg.conf.d/nv-modedebug.conf

Section "OutputClass"
    Identifier "nvidia-modedebug"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "ModeDebug" "true"
EndSection

Then please run nvidia-bug-report.sh as root and attach the resulting nvidia-bug-report.log.gz file to your post.

Thanks @generix. But there is no xorg.conf file or folder in /etc or anywhere else in my Ubuntu install. I have Puppy Linux on a bootable flash, and that has xorg.conf in single file format. I can add that section to that file and run nvidia-bug-report.sh which I imagine will come with the installed driver.

Looking again, there is /usr/share/X11/xorg.conf.d in Ubuntu. I’d have thought it just held template source files that weren’t in effect, but 11-nvidia-prime.conf was updated an hour ago, no doubt from some change I tried.

Here you are @generix

nvidia-bug-report.log.gz (1.1 MB)

I guess the relevant bit is
[ 39.350] (II) NVIDIA(GPU-0): --- Building ModePool for Samsung LS32A70 (DFP-5) --- [ 39.351] (WW) NVIDIA(GPU-0): Validating Mode "3840x2160_60": [ 39.351] (WW) NVIDIA(GPU-0): Mode Source: EDID [ 39.351] (WW) NVIDIA(GPU-0): 3840 x 2160 @ 60 Hz [ 39.351] (WW) NVIDIA(GPU-0): Pixel Clock : 595.75 MHz [ 39.351] (WW) NVIDIA(GPU-0): HRes, HSyncStart : 3840, 3900 [ 39.351] (WW) NVIDIA(GPU-0): HSyncEnd, HTotal : 3932, 4024 [ 39.351] (WW) NVIDIA(GPU-0): VRes, VSyncStart : 2160, 2163 [ 39.351] (WW) NVIDIA(GPU-0): VSyncEnd, VTotal : 2168, 2468 [ 39.351] (WW) NVIDIA(GPU-0): Sync Polarity : +H -V [ 39.351] (WW) NVIDIA(GPU-0): ViewPort 3840x2160 exceeds hardware capabilities. [ 39.351] (WW) NVIDIA(GPU-0): Mode is rejected: GPU extended capability check failed. [ 39.351] (WW) NVIDIA(GPU-0): GPU extended capability check failed. [ 39.351] (WW) NVIDIA(GPU-0): Mode "3840x2160_60" is invalid.
but I realize the actual cause may be hidden somewhere in the log.

Running nvidia-bug-report.sh
also gave the following errors - I guess the Puppy stick is running 32 bit.

ld.so: object '/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored. ERROR: ld.so: object '/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored. ERROR: ld.so: object '/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored. complete.

The relevant part is
Mode is rejected: GPU extended capability check failed.
which points to a driver bug. The 450 driver used is outdated, please switch to the correct 470 driver.

OK. But the Ubuntu OS is running the 470 driver, it just isn’t (apparently) using xorg. Is nvidia-prime an alternative to xorg? Or alternatively can I enable xorg so I can set xorg.conf?

I was wrong, there are instances of xorg.conf.d. Leaving out saves of other/old filesytems, there are 12 in snaps, all of course related to apps and not to general graphics, and /usr/share/X11/xorg.conf.d. This last one contains

10-amdgpu.conf
10-nvidia.conf
10-quirks.conf
10-radeon.conf
11-nvidia-prime.conf
40-libinput.conf
70-wacom.conf

11-nvidia-prime.conf gets regularly updated, the others are older. It has (only) an OutputClass section.

Should I add/merge your section fields into any/all of these? I don’t understand why they’re in /usr/share.

I found out where the config being used was located and created the file there.

On Ubuntu, using the 470 driver, I still get

Validating Mode "3840x2160_60":
Mode Source: EDID
3840 x 2160 @ 60 Hz
Pixel Clock      : 595.75 MHz
HRes, HSyncStart : 3840, 3900
HSyncEnd, HTotal : 3932, 4024
VRes, VSyncStart : 2160, 2163
VSyncEnd, VTotal : 2168, 2468
Sync Polarity    : +H -V
ViewPort 3840x2160 exceeds hardware capabilities.
Mode is rejected: GPU extended capability check failed.
GPU extended capability check failed.
Mode "3840x2160_60" is invalid.

sudo get-edid|parse-edid gives Modeline "Mode 0" 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync which seems to be the 60Hz one, though the NVIDIA spec says the vrefresh is actually 59.997.

Is there a sync polarity mismatch: -V vs +vsync?

nvidia-bug-report.log.gz (446.3 KB)

@generix Another version of the data. This one doesn’t mention the 30Hz mode that seems to be the one in use.

adrian@greplond2:~$ hwinfo --monitor
17: None 00.0: 10002 LCD Monitor                                
  [Created at monitor.125]
  Unique ID: rdCR.4_yN4xlbze0
  Parent ID: B35A.WEoD030yuUF
  Hardware Class: monitor
  Model: "SAMSUNG LS32A70"
  Vendor: SAM "SAMSUNG"
  Device: eisa 0x7166 "LS32A70"
  Serial ID: "HK7WA00748"
  Resolution: 720x400@70Hz
  Resolution: 640x480@60Hz
  Resolution: 640x480@67Hz
  Resolution: 640x480@72Hz
  Resolution: 640x480@75Hz
  Resolution: 800x600@56Hz
  Resolution: 800x600@60Hz
  Resolution: 800x600@72Hz
  Resolution: 800x600@75Hz
  Resolution: 832x624@75Hz
  Resolution: 1024x768@60Hz
  Resolution: 1024x768@70Hz
  Resolution: 1024x768@75Hz
  Resolution: 1280x1024@75Hz
  Resolution: 1152x864@75Hz
  Resolution: 1280x720@60Hz
  Resolution: 1280x1024@60Hz
  Resolution: 3840x2160@60Hz
  Size: 698x393 mm
  Year of Manufacture: 2023
  Week of Manufacture: 43
  Detailed Timings #0:
     Resolution: 3840x2160
     Horizontal: 3840 3900 3932 4024 (+60 +92 +184) -hsync
       Vertical: 2160 2163 2168 2468 (+3 +8 +308) +vsync
    Frequencies: 595.75 MHz, 148.05 kHz, 59.99 Hz
  Driver Info #0:
    Max. Resolution: 3840x2160
    Vert. Sync Range: 30-75 Hz
    Hor. Sync Range: 30-149 kHz
    Bandwidth: 595 MHz
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #4 (VGA compatible controller)

Does -hsync +vsync mean anything relevant?
Also the last run of nvidia-bug-report had a HDMI cable connected. This one is for the DisplayPort connection only
nvidia-bug-report.log.gz (633.9 KB)

Hello @generix I’ve provided the info you asked for for the 470 driver, and as you’ll see the ‘exceeds hardware capabilities’ failure still occurs. I’d greatly appreciate it if you have any ideas about the cause, or of the next thing to try.

I don’t really know how to fix that, overriding the extended capabilities check often just results in a black screen. While this is alway dangerous, I’d rather try updating the vbios with a newer one like https://www.techpowerup.com/vgabios/234900/234900

Thanks @generix. I don’t want to risk updating the vbios yet. If there was a way to edit the card’s or monitor’s EDID data to remove the 60Hz and make sure the 30Hz is present, I’d try that. Probably just as dangerous! Maybe a different cheap graphics card (don’t need performance) would be worth trying, as I still strongly suspect the BIOS is using that invalid mode.

According to the log, the 4k@30Hz mode should be available all the time.

I’ve no doubt that it is. I think the problem is that some systems also think 60Hz is, and that isn’t working. And in the case of BIOS there seems to be no way to disable 60Hz or force 30Hz.

Just to add that I found no solution, and gave up. Now using a cheap secondhand GT 730 which BIOS and bootup screens do recognise correctly and display on, so I no longer have to keep a HDMI lead connected to the old card to get out of boot problems…