Can't write to file /sys/class/backlight/acpi_video0/brightness (ubuntu)

16

7

I am trying to change the brightness by overwriting the value on this file:

sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied

It doesn't work even when using sudo. However if I switch to super-user with su, it works. Why is that?

Kei Nivky

Posted 2012-09-19T23:44:05.407

Reputation:

This action is restricted to sudo users only. I found an answer in this comment: The reason that this is set at su permissions is that a virus could conceivably make your screen dim and go bright at incredible speed ultimately damaging your hardware display. In the 90's I encountered a virus that would adjust the screen refresh Hertz so rapidly that your monitor would fry.

– Alexey Volodko – 2019-04-03T10:58:10.247

Answers

17

The error happens because sudo elevates permissions for the command (sudo echo 5) but not the redirection to write the file (> /sys/class/backlight/acpi_video0/brightness). The actual bash shell needs permission to write, which is why it fails with sudo but works as root.

You can work around this by running the tee command as root to write to the file:

echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness

Note that this will also echo "5" to your terminal. This is a normal side effect of the tee command.

mguymon

Posted 2012-09-19T23:44:05.407

Reputation: 286

1not working for me with /sys/class/drm/card0/device/pp_sclk_od cannot change the value – alexela – 2017-09-15T20:25:15.217

Credit goes to @duskwuff for the clever tee solution – mguymon – 2012-09-20T00:45:50.183

5I can't take credit for coming up with that -- it's a bit of UNIX folklore I picked up from who-knows-where. – duskwuff -inactive- – 2012-09-20T02:15:56.637

5

As written in the Arch wiki (link), by default, only root can change the brightness by this method. To allow users in the video group to change the brightness, a udev rule such as the following can be used (replace the <vendor> with your vendor id. E.g. acpi_video0, intel_backlight) :

% cat /etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<vendor>", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<vendor>", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

Then you need to add your user to the video group.

usermod -aG video <user>

After that this should work:

echo 5 > /sys/class/backlight/<vendor>/brightness

Manuel Schmitzberger

Posted 2012-09-19T23:44:05.407

Reputation: 151

1This method works for me, after replacing acpi_video0 by intel_backlight. – Mehdi – 2019-05-05T10:06:22.480

1Thx for your feedback. I've updated the answer. – Manuel Schmitzberger – 2019-05-05T11:27:58.277

2

If you didn't want 5 to be echoed this also works:

sudo sh -c 'echo 5 > /sys/class/backlight/acpi_video0/brightness'

raphael

Posted 2012-09-19T23:44:05.407

Reputation: 21

0

I've been struggling with this problem on my VAIO VPCEG for quite a time. After doing everything mentioned in every forum I found something interesting:

After changing the boot parameter acpi_osi=Linux acpi_backlight=vendor and trying to manually change /sys/class/backlight/[vendor - in my case intel_backlight]/brightness, I realized that changing permission to this file from root to my user and restarting acpid service, this would allow me to use brightness keys flawlessly.

user273880

Posted 2012-09-19T23:44:05.407

Reputation: 1

-1

the below solutions works fine for me..

i am posting it as answer so that others might get help:

change the permission:

sudo chmod a+rw /sys/class/backlight/intel_backlight/brightness

now change brightness:

echo 400 > /sys/class/backlight/intel_backlight/brightness

in your case it would be: /sys/class/backlight/acpi_video0/brightness

noobdeveloper99

Posted 2012-09-19T23:44:05.407

Reputation: 11

1

Welcome to Super User! Please don't add "thanks" as answers. Invest some time in the site and you will gain sufficient privileges to upvote answers you like, which is the Super User way of saying thank you.

– DavidPostill – 2015-06-29T13:51:54.237

In addition you didn't really answer the question, which was "Why is that?" – DavidPostill – 2015-06-29T13:52:29.467

thanks a lot.. for the information and really sorry.. just because of me.. you wasted your important time for guiding me..i will make sure this doesn't happen again – noobdeveloper99 – 2015-06-29T15:49:32.653

It is not good practice to allow everyone to read and write a system config file like that. – lindhe – 2015-12-18T15:15:07.537

I have some scenarios, where the screen starts functioning, yet the backlight value is still 0, – ransh – 2016-11-26T21:22:38.893