Mode is rejected: PixelClock (533.2 MHz) too high for Display Device

I’ve got a Lenovo D32u-40 monitor, which can do 3840x2160 (under Windows this works)
GPU: NVidia Quadro P400, OS: Debian testing.
Driver version: 550.76
Problem: the top resolution, the 3840x2160, is not detected - the driver uses 1920x1080 instead.

I have set “ModeDebug” to “true” in the nvidia driver settings, and rebooted the system. Now in xorg.log I can see the following:

[     6.651] (WW) NVIDIA(GPU-0):   Validating Mode "3840x2160_60":
[     6.651] (WW) NVIDIA(GPU-0):     Mode Source: EDID
[     6.651] (WW) NVIDIA(GPU-0):     3840 x 2160 @ 60 Hz
[     6.651] (WW) NVIDIA(GPU-0):       Pixel Clock      : 533.25 MHz
[     6.651] (WW) NVIDIA(GPU-0):       HRes, HSyncStart : 3840, 3888
[     6.651] (WW) NVIDIA(GPU-0):       HSyncEnd, HTotal : 3920, 4000
[     6.651] (WW) NVIDIA(GPU-0):       VRes, VSyncStart : 2160, 2163
[     6.651] (WW) NVIDIA(GPU-0):       VSyncEnd, VTotal : 2168, 2222
[     6.651] (WW) NVIDIA(GPU-0):       Sync Polarity    : +H -V 
[     6.651] (WW) NVIDIA(GPU-0):     Mode is rejected: PixelClock (533.2 MHz) too high for
[     6.651] (WW) NVIDIA(GPU-0):     Display Device (Max: 165.0 MHz).
[     6.651] (WW) NVIDIA(GPU-0):     GPU extended capability check failed.
[     6.651] (WW) NVIDIA(GPU-0):     Mode "3840x2160_60" is invalid.

If I add the following to the ‘Device’ section

Option         "ModeValidation" "NoMaxPClkCheck"

then I get

[     6.648] (**) NVIDIA(GPU-0):     (DFP-3):
[     6.648] (**) NVIDIA(GPU-0):     NoMaxPClkCheck
[     6.648] (WW) NVIDIA(GPU-0):   Validating Mode "3840x2160_60":
[     6.648] (WW) NVIDIA(GPU-0):     Mode Source: EDID
[     6.648] (WW) NVIDIA(GPU-0):     3840 x 2160 @ 60 Hz
[     6.648] (WW) NVIDIA(GPU-0):       Pixel Clock      : 533.25 MHz
[     6.648] (WW) NVIDIA(GPU-0):       HRes, HSyncStart : 3840, 3888
[     6.648] (WW) NVIDIA(GPU-0):       HSyncEnd, HTotal : 3920, 4000
[     6.648] (WW) NVIDIA(GPU-0):       VRes, VSyncStart : 2160, 2163
[     6.648] (WW) NVIDIA(GPU-0):       VSyncEnd, VTotal : 2168, 2222
[     6.648] (WW) NVIDIA(GPU-0):       Sync Polarity    : +H -V 
[     6.648] (WW) NVIDIA(GPU-0):     ViewPort 3840x2160 exceeds hardware capabilities.
[     6.648] (WW) NVIDIA(GPU-0):     Mode is rejected: GPU extended capability check failed.
[     6.648] (WW) NVIDIA(GPU-0):     GPU extended capability check failed.
[     6.648] (WW) NVIDIA(GPU-0):     Mode "3840x2160_60" is invalid.

and again it doesn’t work. Then I tried adding the following

Option         "ModeValidation" "NoMaxPClkCheck,NoExtendedGpuCapabilitiesCheck"

after which I get a black screen on bootup.

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

The adapter you’re using is a passive adapter so you can’t achieve more than 4k@30Hz.

By ‘adapter’ you mean the GPU?

How can I then manually force the driver to do 4k@30Hz ?

Here’s what I tried:

> cvt 3840 2160 30
# 3840x2160 29.98 Hz (CVT) hsync: 65.96 kHz; pclk: 338.75 MHz
Modeline "3840x2160_30.00"  338.75  3840 4080 4488 5136  2160 2163 2168 2200 -hsync +vsync
> xrandr --newmode "3840x2160_30.00"  338.75  3840 4080 4488 5136  2160 2163 2168 2200 -hsync +vsync
> xrandr --addmode DP-3 3840x2160_30.00
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  39
  Current serial number in output stream:  40

Adapter=DP2HDMI cable.

Ok. So If I use a mDP2DP 1.2 ( the monitor has a DP input) cable instead, is 3840x2160@60Hz going to work?

And how do I come up with a working 3840x2160@30Hz modeline now? Under Windows, 3840x2160 works with the very same hardware.

Yes.
You’re currently using a passive DP2HDMI cable which is in general limited to HDMI 1.3 speeds (300/340MHz) so only supports 4k@30Hz. In your case, only HDMI 1.0 speeds (165MHz) are detected, only supporting FHD. I don’t know why it only detects low speeds, might be a bad cable, just barely working on Windows due to different connection threshholds in the Windows driver opposed to the Linux driver. Or there might be a driver bug limiting it. In any case, a real DisplayPort connection is preferable.

Indeed, thanks generix. The cable has just arrived and 3840x2160 started working automagically.