Setting the display gamma curve with nouveau driver

The colours on my monitor are washed out, from being too bright.

Previously, I was running nvidia proprietary drivers, and I could adjust that with the xgamma tool.

After switching to Nouveau, I can no longer control the gamma with xgamma:

$ xgamma -gamma 0.8
-> Red 1.000, Green 1.000, Blue 1.000
<- Red 1.000, Green 1.000, Blue 1.000

The kernel reports this about nouveau on boot:

$ journalctl -b | grep nouveau
kernel: nouveau 0000:01:00.0: vgaarb: deactivate vga console
kernel: nouveau 0000:01:00.0: NVIDIA GA104 (b74000a1)
kernel: nouveau 0000:01:00.0: bios: version 94.04.25.40.f1
kernel: nouveau 0000:01:00.0: fb: 8192 MiB GDDR6
kernel: nouveau 0000:01:00.0: DRM: VRAM: 8192 MiB
kernel: nouveau 0000:01:00.0: DRM: GART: 536870912 MiB
kernel: nouveau 0000:01:00.0: DRM: BIT table 'A' not found
kernel: nouveau 0000:01:00.0: DRM: BIT table 'L' not found
kernel: nouveau 0000:01:00.0: DRM: TMDS table version 2.0
kernel: nouveau 0000:01:00.0: DRM: DCB version 4.1
kernel: nouveau 0000:01:00.0: DRM: DCB outp 00: 04800f86 04600020
kernel: nouveau 0000:01:00.0: DRM: DCB outp 01: 04000f82 00020020
kernel: nouveau 0000:01:00.0: DRM: DCB outp 02: 04011f72 00020010
kernel: nouveau 0000:01:00.0: DRM: DCB outp 04: 02822f66 04600020
kernel: nouveau 0000:01:00.0: DRM: DCB outp 05: 02022f62 00020020
kernel: nouveau 0000:01:00.0: DRM: DCB outp 07: 02033f52 00020010
kernel: nouveau 0000:01:00.0: DRM: DCB outp 08: 01844f36 04600010
kernel: nouveau 0000:01:00.0: DRM: DCB outp 09: 01044f32 00020010
kernel: nouveau 0000:01:00.0: DRM: DCB conn 00: 02000046
kernel: nouveau 0000:01:00.0: DRM: DCB conn 01: 01000161
kernel: nouveau 0000:01:00.0: DRM: DCB conn 02: 00020246
kernel: nouveau 0000:01:00.0: DRM: DCB conn 03: 00010361
kernel: nouveau 0000:01:00.0: DRM: DCB conn 04: 00001446
kernel: nouveau 0000:01:00.0: DRM: MM: using COPY for buffer copies
kernel: nouveau 0000:01:00.0: DRM: allocated 1920x1200 fb: 0x200000, bo 00000000693bc1c2
kernel: fbcon: nouveaudrmfb (fb0) is primary device
kernel: nouveau 0000:01:00.0: [drm] fb0: nouveaudrmfb frame buffer device
kernel: [drm] Initialized nouveau 1.3.1 20120801 for 0000:01:00.0 on minor 0
gnome-shell[1141]: Added device '/dev/dri/card0' (nouveau) using non-atomic mode setting.

GPU: Nvidia RTX 3070

kernel: 5.18.1

OS: Ubuntu 22.04

libdrm-nouveau2: 2.4.110-1ubuntu1

UPDATE

I pulled out the RTX3070, and now use Alderlake Integrated graphics, which has the same issue:

$ lshw -c video
WARNING: you should run this program as super-user. *-display description: VGA compatible controller product: AlderLake-S GT1 vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 logical name: /dev/fb0 version: 0c width: 64 bits clock: 33MHz capabilities: vga_controller bus_master cap_list rom fb configuration: depth=32 driver=i915 latency=0 resolution=1920,1200 resources: iomemory:600-5ff iomemory:400-3ff irq:145 memory:6002000000-6002ffffff memory:4000000000-400fffffff ioport:6000(size=64) memory:c0000-dffff memory:4010000000-4016ffffff memory:4020000000-40ffffffff
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
$ xgamma -gamma 0.6
-> Red 1.000, Green 1.000, Blue 1.000
<- Red 1.000, Green 1.000, Blue 1.000
Reset to default

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like