Unable to adjust screen resolution on laptop with Nvidia GeForce RTX 3070

I do not have any options for screen resolution settings. It defaults to 2560x1440 @ 240hz on a 15.6 inch laptop display on X11 and Wayland sessions. Is this a feature, bug, or something that can be configured?

                     ./o.                  robbie@endeavour-razerblade15 
                   ./sssso-                ----------------------------- 
                 `:osssssss+-              OS: EndeavourOS Linux x86_64 
               `:+sssssssssso/.            Host: Blade 15 Advanced Model (Mid 2021) - RZ09-0409 7.04 
             `-/ossssssssssssso/.          Kernel: 5.16.16-arch1-1 
           `-/+sssssssssssssssso+:`        Uptime: 21 mins 
         `-:/+sssssssssssssssssso+/.       Packages: 1021 (pacman) 
       `.://osssssssssssssssssssso++-      Shell: zsh 5.8.1 
      .://+ssssssssssssssssssssssso++:     Resolution: 2560x1440 
    .:///ossssssssssssssssssssssssso++:    DE: GNOME 41.5 
  `:////ssssssssssssssssssssssssssso+++.   WM: Mutter 
`-////+ssssssssssssssssssssssssssso++++-   WM Theme: Adwaita 
 `..-+oosssssssssssssssssssssssso+++++/`   Theme: Mojave-dark-solid-alt [GTK2/3] 
   ./++++++++++++++++++++++++++++++/:.     Icons: WhiteSur-dark [GTK2/3] 
  `:::::::::::::::::::::::::------``       Terminal: gnome-terminal 
                                           CPU: 11th Gen Intel i7-11800H (16) @ 4.600GHz 
                                           GPU: NVIDIA GeForce RTX 3070 Mobile / Max-Q 
                                           Memory: 2909MiB / 15807MiB
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.54       Driver Version: 510.54       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   49C    P8    15W /  N/A |    226MiB /  8192MiB |      3%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1070      G   /usr/lib/Xorg                     141MiB |
|    0   N/A  N/A      1119      G   /usr/bin/gnome-shell               56MiB |
|    0   N/A  N/A      1749      G   ...905973037130303649,131072       26MiB |
+-----------------------------------------------------------------------------+

can you report

inxi -Fza
xrandr
System:
  Kernel: 5.16.16-arch1-1 x86_64 bits: 64 compiler: gcc v: 11.2.0
    parameters: BOOT_IMAGE=/boot/vmlinuz-linux
    root=UUID=7c9d4535-e682-43f3-a199-09882e2d9a05 rw quiet loglevel=3
    nowatchdog nvme_load=YES nvidia-drm.modeset=1
  Desktop: GNOME 41.5 tk: GTK 3.24.33 wm: gnome-shell dm: GDM 41.3
    Distro: EndeavourOS base: Arch Linux
Machine:
  Type: Laptop System: Razer
    product: Blade 15 Advanced Model (Mid 2021) - RZ09-0409 v: 7.04
    serial: <superuser required> Chassis: type: 10
    serial: <superuser required>
  Mobo: Razer model: CH570 v: 4 serial: <superuser required> UEFI: Razer
    v: 2.01 date: 09/24/2021
Battery:
  ID-1: BAT0 charge: 81.3 Wh (100.0%) condition: 81.3/80.2 Wh (101.4%)
    volts: 17.5 min: 15.4 model: Razer Blade type: Unknown serial: <filter>
    status: Full
CPU:
  Info: model: 11th Gen Intel Core i7-11800H bits: 64 type: MT MCP
    arch: Tiger Lake family: 6 model-id: 0x8D (141) stepping: 1 microcode: 0x3C
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 640 KiB desc: d-8x48 KiB; i-8x32 KiB L2: 10 MiB desc: 8x1.2 MiB
    L3: 24 MiB desc: 1x24 MiB
  Speed (MHz): avg: 1940 high: 4614 min/max: 800/4600 scaling:
    driver: intel_pstate governor: powersave cores: 1: 1839 2: 1234 3: 800
    4: 801 5: 800 6: 2255 7: 3739 8: 4094 9: 4187 10: 1641 11: 800 12: 958
    13: 800 14: 801 15: 4614 16: 1691 bogomips: 73744
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: spec_store_bypass
    mitigation: Speculative Store Bypass disabled via prctl
  Type: spectre_v1
    mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2
    mitigation: Enhanced IBRS, IBPB: conditional, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: NVIDIA GA104M [GeForce RTX 3070 Mobile / Max-Q] vendor: Razer USA
    driver: nvidia v: 510.54 alternate: nouveau,nvidia_drm pcie: gen: 1
    speed: 2.5 GT/s lanes: 8 link-max: gen: 4 speed: 16 GT/s lanes: 16 ports:
    active: none off: eDP-1 empty: DP-1, DP-2, DP-3, DP-4, HDMI-A-1
    bus-ID: 01:00.0 chip-ID: 10de:24dd class-ID: 0300
  Device-2: IMC Networks Integrated RGB Camera type: USB driver: uvcvideo
    bus-ID: 3-8:5 chip-ID: 13d3:5279 class-ID: 0e02 serial: <filter>
  Display: x11 server: X.Org v: 1.21.1.3 compositor: gnome-shell driver: X:
    loaded: nvidia unloaded: modesetting alternate: fbdev,nouveau,nv,vesa
    gpu: nvidia display-ID: :0 screens: 1
  Screen-1: 0 s-res: 2560x1440 s-dpi: 96 s-size: 677x381mm (26.7x15.0")
    s-diag: 777mm (30.6")
  Monitor-1: DP-4 res: 2560x1440 dpi: 191 size: 340x190mm (13.4x7.5")
    diag: 389mm (15.3")
  OpenGL: renderer: NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2
    v: 4.6.0 NVIDIA 510.54 direct render: Yes
Audio:
  Device-1: Intel Tiger Lake-H HD Audio vendor: Razer USA
    driver: sof-audio-pci-intel-tgl
    alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 00:1f.3
    chip-ID: 8086:43c8 class-ID: 0401
  Device-2: NVIDIA GA104 High Definition Audio vendor: Razer USA
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 8
    link-max: lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:228b class-ID: 0403
  Sound Server-1: ALSA v: k5.16.16-arch1-1 running: yes
  Sound Server-2: PulseAudio v: 15.0 running: no
  Sound Server-3: PipeWire v: 0.3.48 running: yes
Network:
  Device-1: Intel Wi-Fi 6 AX210/AX211/AX411 160MHz driver: iwlwifi v: kernel
    pcie: gen: 2 speed: 5 GT/s lanes: 1 bus-ID: 5b:00.0 chip-ID: 8086:2725
    class-ID: 0280
  IF: wlan0 state: up mac: <filter>
Bluetooth:
  Device-1: Intel AX210 Bluetooth type: USB driver: btusb v: 0.8
    bus-ID: 3-5:3 chip-ID: 8087:0032 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
Drives:
  Local Storage: total: 953.87 GiB used: 47.19 GiB (4.9%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung
    model: MZVL21T0HCLR-00B00 size: 953.87 GiB block-size: physical: 512 B
    logical: 512 B speed: 63.2 Gb/s lanes: 4 type: SSD serial: <filter>
    rev: GXA7401Q temp: 37.9 C scheme: GPT
Partition:
  ID-1: / raw-size: 434.02 GiB size: 434.01 GiB (100.00%)
    used: 47.19 GiB (10.9%) fs: f2fs dev: /dev/nvme0n1p7 maj-min: 259:7
  ID-2: /boot/efi raw-size: 512 MiB size: 511 MiB (99.80%)
    used: 296 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p6 maj-min: 259:6
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 57.0 C mobo: N/A gpu: nvidia temp: 49 C
  Fan Speeds (RPM): N/A
Info:
  Processes: 385 Uptime: 3h 39m wakeups: 1 Memory: 15.44 GiB
  used: 6.15 GiB (39.9%) Init: systemd v: 250 tool: systemctl Compilers:
  gcc: 11.2.0 Packages: pacman: 1021 lib: 266 Shell: Zsh v: 5.8.1
  running-in: gnome-terminal inxi: 3.3.13
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 340mm x 190mm
   2560x1440     60.00 + 240.00* 
DP-5 disconnected (normal left inverted right x axis y axis)
DP-6 disconnected (normal left inverted right x axis y axis)
DP-7 disconnected (normal left inverted right x axis y axis)
DP-8 disconnected (normal left inverted right x axis y axis)

I’m going to assume you have switched to discrete graphics mode.

From what I can tell so far on a similar laptop, the limited display resolutions seems to be down to the mux method being used - while the NVIDIA GPU is rendering what’s being displayed, the iGPU is running the panel and is presenting a single available resolution to the dGPU (or an incorrect or limited EDID). If you connect an external display to a port that’s wired to the dGPU then you’ll get the full range of available resolutions.

If you enable switchable graphics instead you’ll probably see all available display resolutions for the panel.

I haven’t yet found a way to configure this - possibly overriding the EDID could work.

True, I’ve enabled in the BIOS to only use the discrete GPU and not the hybrid mode with the Intel XE GPU. How are most folks running hybrid GPU machines with Nvidia?

UPDATE:
When I change the graphics mode in the BIOS to Nvidia Dynamic mode (hybrid GPU), the screen resolutions are available while the machine and Linux boot with the on-board Intel GPU. Now I only get a 60hz refresh rate instead of the display’s capability of up to 240hz.

If a laptop supports a discrete mode setup then that’s currently the most reliable and robust way of getting things working.

Given all the other issues that NVIDIA graphics can create, having a situation where the only issue is being limited to the panel’s native resolution and refresh rate is an alternative I’m very happy to accept. :joy:

It maybe possible to instruct more modes to single nvidia mode, if you get/copy them from your hybrid setup Xorg log (/var/log/Xorg.?.log) and insert them in a Monitor Section, in a conf file at /etc/X11/xorg.conf.d/, following some examples at Archwiki.