You are not logged in.
Hi there, I wanted to share some questions and some findings about external monitor control as I encountered issues specifically trying to use DDC / CI on WMs.
CONTEXT
I want to use "brightnessctl" to control backlight on my desktop.
The desktop is running on up to date Arch with Sway and waybar for top bar.
Hardware is 34GN850-B, nvidia 5090 for that matter.
I am using nvidia-open-dkms drivers as it was installed alongside linux-zen.
Previously this exact setup was running on KDE, and using KDE's powerdevil and GUI tools I managed to control backlight using keyboard shortcuts as you would normally.
I also have a laptop running arch - sway - linux-zen but with amd iGPU, and similarly to KDE backlight control works with keyboard shortcuts but this time using brightnessctl and displaying it on waybar.
ISSUE
I installed similarly Arch on my desktop, bar the drivers which I swapped from AMD/ATI on my laptop to nvidia-open-dkms on the desktop (because different GPU)
I have been unable to set backlight using brightnessctl like on my laptop.
Similarly as of late when navigating monitor menu directly using its knob, it is displayed that it is capped at 60hz instead of 144hz while using the best cable option DP1.4, other option is HDMI 2.0 and is slower. This might be unrelated.
I also disabled OSD lock and no things such as freesync or eycare programs are enabled.
FINDINGS
I learned that to set backlight on external monitor you need to use DDC/CI (read on https://wiki.archlinux.org/title/Backli … _monitors).
So I tried the first option using ddcutils that KDE uses for powerdevil and applying the nvidia fix (https://forums.developer.nvidia.com/t/g … g/30427/61) it works and correctly recognizes the display on i2c-09 in the dev directory.
Now I have been unable to display current backlight strength on waybar using getvcp so I tried to make brighnessctl work as it is the default option for sway and works well on my laptop.
As written on their repo you need to add user to some groups which I did and then use a ddcci kernel module.
Usually what happens with those is that it is supposed to add files in /sys/class/backlight or /sys/bus/ddcci/devices but in my case no devices are detected.
Modules are loaded and can be seen using lsmod | grep ddci or ddci_backlight
Now using ddcutil detect I get my device on card0-DP02 and as well seen in i2c-09 like said previously
Brightnessctl -l only shows leds class and no monitor only enps or lan connectors
I first tried AUR ddcci-driver-linux-dkms but had errors loading using modprobe "module not found" this is due to this package being late
I then tried ddcci-hotplugd to no avail, service was running but still no devices
I tried ddcci-driver-linux-dkms-git which does not yield the "module not found error" but does not add devices as well.
SOLUTIONS ?
First of please share help or insight if you can, I am a bit lost on that subject.
I see two paths now, first one is to try to get ddcutil to work with waybar
Second is to try ddcci-driver-linux-clemax-dkms-git which tries to merge its patch onto ddcci-driver-linux-dkms that frankly seems unmaintained
I really do not know why ddcci does not manage to get the devices en share them on the /sys directory.
Since it worked on KDE (powerdevil) and ddcutil, the monitor is responsive and modules are auto-loaded it would indicate an issue coming from ddcci-driver translation
Any help is appreciated
Thanks
Offline
FINDINGS
I learned that to set backlight on external monitor you need to use DDC/CI (read on https://wiki.archlinux.org/title/Backli … _monitors).
So I tried the first option using ddcutils that KDE uses for powerdevil and applying the nvidia fix (https://forums.developer.nvidia.com/t/g … g/30427/61snake game) it works and correctly recognizes the display on i2c-09 in the dev directory.
Now I have been unable to display current backlight strength on waybar using getvcp so I tried to make brighnessctl work as it is the default option for sway and works well on my laptop.
As written on their repo you need to add user to some groups which I did and then use a ddcci kernel module.
Usually what happens with those is that it is supposed to add files in /sys/class/backlight or /sys/bus/ddcci/devices but in my case no devices are detected.
Modules are loaded and can be seen using lsmod | grep ddci or ddci_backlight
Now using ddcutil detect I get my device on card0-DP02 and as well seen in i2c-09 like said previously
Brightnessctl -l only shows leds class and no monitor only enps or lan connectors
I first tried AUR ddcci-driver-linux-dkms but had errors loading using modprobe "module not found" this is due to this package being late
I then tried ddcci-hotplugd to no avail, service was running but still no devices
I tried ddcci-driver-linux-dkms-git which does not yield the "module not found error" but does not add devices as well.
In my experience, I would not spend too much time trying to force brightnessctl to work with an external monitor. It depends on /sys/class/backlight, and that only appears if the ddcci driver successfully creates a virtual backlight device.
Since ddcutil already detects your monitor, the DDC/CI part is working. I would probably just create a small Waybar script around ddcutil getvcp 10 / setvcp 10. It is basically what KDE PowerDevil is doing anyway and avoids fighting with an unreliable DKMS module.
Offline
In my experience, I would not spend too much time trying to force brightnessctl to work with an external monitor. It depends on /sys/class/backlight, and that only appears if the ddcci driver successfully creates a virtual backlight device.
Since ddcutil already detects your monitor, the DDC/CI part is working. I would probably just create a small Waybar script around ddcutil getvcp 10 / setvcp 10. It is basically what KDE PowerDevil is doing anyway and avoids fighting with an unreliable DKMS module.
Thanks for your answer.
I agree with you, unless someone here has a solution for working ddcci driver I am not going to spend more time trying to troubleshoot something that is not debuggable.
For the waybar script did you implement it or is that a recommendation ?
I tried to add this to the backlight module to no avail, must I use the "custom" module instead ?
Offline