19

Is there a way to adjust the brightness of the official touchscreen display? I couldn't find a definite answer. I'm running the latest release of Raspbian Jessie.

3 Answers 3

32

The driver for the screen provides an interface through /sys/. To turn the screen on you can use the command:

echo 0 > /sys/class/backlight/rpi_backlight/bl_power

and to turn it off:

echo 1 > /sys/class/backlight/rpi_backlight/bl_power

the brightness can be adjusted using:

echo n > /sys/class/backlight/rpi_backlight/brightness

where n is some value between 0 and 255.

4
11

I've made a Python package for this: github.com/linusg/rpi-backlight. Now you don't need to implement this yourself anymore.

Example

(GIF is outdated because API was changed quite a bit in v2, sorry... Below example is correct 🙂)

Works basically like the above, example:

>>> from rpi_backlight import Backlight
>>>
>>> backlight = Backlight()
>>> backlight.brightness
100
>>> backlight.brightness = 50
>>> backlight.brightness
50
>>>
>>> with backlight.fade(duration=1):
...     backlight.brightness = 0
...
>>> backlight.fade_duration = 0.5
>>> # subsequent `backlight.brightness = x` will fade 500ms
>>>
>>> backlight.power
True
>>> backlight.power = False
>>> backlight.power
False
>>>

It has a GUI, a CLI and a simple Python API :)

0

If you like an application, you can use the code below. I'll give detailed instructions of how to use it.

  • create a new file /home/pi/brightnesschanger.py
  • copy and paste the following code into that file (Explanation: this is the program for changing brightness):
import tkinter as tk
from tkinter import ttk

MAX_BRIGHTNESS = 255
CONFIG_FILE = "/sys/class/backlight/rpi_backlight/brightness"



def runApp ():
  # root window
  root = tk.Tk ()
  root.geometry ('330x100')
  root.resizable (True, True)
  root.title ('Raspberry Pi 7" screen brightness')

  root.columnconfigure (0, weight=1)
  root.columnconfigure (1, weight=3)


  # slider current value
  current_value = tk.IntVar ()


  def get_current_value ():
    return (current_value.get ()/MAX_BRIGHTNESS*100)


  def slider_changed (event):
    value_percent = "{: .2f} %".format (get_current_value ())
    value_label.configure (text=value_percent)
    try:
      with open(CONFIG_FILE, "w") as file:
        value = current_value.get ()
        file.write (str(value))
    except:
        print ("ERROR: Could not set brightness")
        #probably file does not exist

  # slider
  slider = ttk.Scale (
  root,
  from_=12,
  to=MAX_BRIGHTNESS,
  orient='horizontal', # vertical
  command=slider_changed,
  variable=current_value

  )

  slider.pack(expand = 'yes', fill = 'x')

  # current value label
  # current_value_label = ttk.Label (root, text='Current Value:' )
  # current_value_label.pack(expand = 'yes', fill = 'x')


  # value label
  value_label = ttk.Label (root, text=get_current_value ())
  value_label.pack(expand = 'yes', fill = 'x')


  try:
    with open(CONFIG_FILE, "r") as file:
      value = file.readline ()
      slider.set (int (value))
  except:
    print ("Error: Could not read brightness")

  root.mainloop ()

if (__name__ == "__main__"):
  runApp ()
  • Save and close the file
  • Unfortunately you cannot double-click that file to run the program.
  • We will now create a file on the Desktop, that you can doubleclick to start the program
  • Open a text editor and paste the following content:
[Desktop Entry]
Version=1.0
Name=Brightness
Comment=Change brightness of Raspberry Pi 7 inch official screen
Exec=sudo python3 /home/pi/brightnesschanger.py
Path=/home/pi
Terminal=false
Type=Application
Categories=Utility
  • Save the file under home/pi/Brightness.Desktop
  • Security notice: The application will be started with root privileges. If you use your pi only for playing around, this should be no problem. Otherwise you should figure out if this is a problem for you.

Not the answer you're looking for? Browse other questions tagged or ask your own question.