From nobody Wed Sep 02 03:51:50 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hZTLg3s36z6qYXy for ; Wed, 02 Sep 2026 03:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hZTLg2ckmz3x41 for ; Wed, 02 Sep 2026 03:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788321115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k5S4QdCSreF202r9t03FuvUNeQ3dWCSi/2ARIf3+UQ4=; b=pDvumSxWQmxUArAeT89NCLT7WoXTFmM2N32Wa8cTILHr47/Jhd1a0uX0VisQtJ/vlUHpbG jbBxKAr39pHie+hBtbnnygUbR22KET7m5jNyQ6i3NYbFaE1mdQdwz0C6sLqi9W7tBhM3Ux ceLkkCpStcJzAWIgO3O1Q0BBamFSFMFABpYtGnPEf5nx851fZ/aSk140xH1E00+lW0avGZ WpxB+y7B7Ytrgyc2OAyEi3+aQliBWXsXx6GLc7p2N1wMYTr3ClGI4wzy9m8Rx6djaQk+xQ KuEwQdliPkqrfTBMJVj+gyoC4H8wgJ+RnTSyjK8sY0BMe0rFJxauuHzDB8Q2XQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788321115; a=rsa-sha256; cv=none; b=lQepzfMw5+YjU9lJfjnRVxkEO4bXV0csRFi7CXEdeQjdEzm6sJweHUytzWpC9VfmZkD74t 7vnAE1/oowYqyo0SXHeWEpHKTYUL4jXK2Ldrwig+NV8C+nf68e4n3icxm8cRj55yvXRXFT bcQQ9BdIvDCJDdA0Tp3F4LuKDD8gAbye6DJ+Nkx4xJkkAimhdgt4sqjx4SbHJSZ5upJl/0 I5xP8ATUwB0moO267ruw7MUYu8DXKEMjwv0LUmBgVSg/HsCl5ishhfvBT8siDPv6dRi20E nsYnrs9YQcR6mYMF1VPxSFTl9fQ5QNuF0pxHdvPlfGKyfX6KTnIQ1vsRbjJIoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788321115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k5S4QdCSreF202r9t03FuvUNeQ3dWCSi/2ARIf3+UQ4=; b=e6JIe7M+eEoW8+WHCJUTUxIQ3Woufs36vyZu4aDzKh6tUHg4bo1BcjLUsKL+Vzu0LJo6BX RJwuPjNR56nLCgmh4ntIrc9QpJ3COaL/dVtQZbxiBb3k5HP9eTrmsQZC1ebBOzVPbnca0z pZj8zv0M9+qmalm2HmqBcxsmu2oZNrRsQtQo4DNoF/9tvGkWGYdDoTLS9CXyUy4bMHTVVj 3GdKCFSNvgrPNNzaMs5TwzhWlDiwTe35mTtG9aj94Rw+KGhkidId+1JrpgljzfmpqhHCT0 o6gBSYf14Zla63LoNGRYnDqo8B48dM01z6GOIXUg6LdoTme7suAq1jgX7O7idw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hZTLg1TlPzBdT for ; Wed, 02 Sep 2026 03:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 37b81 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 02 Sep 2026 03:51:50 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: c45bdb39fe98 - main - rc: add a backlight service to save/restore backlight levels List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c45bdb39fe985b43afc63b7cbd989fe7a61673b7 Auto-Submitted: auto-generated Date: Wed, 02 Sep 2026 03:51:50 +0000 Message-Id: <6a979d56.37b81.3743019d@gitrepo.freebsd.org> The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=c45bdb39fe985b43afc63b7cbd989fe7a61673b7 commit c45bdb39fe985b43afc63b7cbd989fe7a61673b7 Author: Kyle Evans AuthorDate: 2026-09-02 03:51:41 +0000 Commit: Kyle Evans CommitDate: 2026-09-02 03:51:41 +0000 rc: add a backlight service to save/restore backlight levels The default on my laptop is annoyingly bright, and this is a useful feature to mitigate that. The backlight script is largely a copy of the mixer service which provides the same value for mixers, but this one is specifically dependant on kld to allow DRM drivers a chance to attach. Note that it's off by default to avoid interference with DEs, and document the capability in backlight(8). Set backlight_enable=YES in rc.conf(5) to enable save/restore. Relnotes: maybe Reviewed by: bapt, ivy, manu, ziaee Differential Revision: https://reviews.freebsd.org/D59296 --- etc/mtree/BSD.var.dist | 2 + libexec/rc/rc.conf | 1 + libexec/rc/rc.d/Makefile | 1 + libexec/rc/rc.d/backlight | 88 +++++++++++++++++++++++++++++++++++++++++++ share/man/man5/rc.conf.5 | 7 +++- usr.bin/backlight/backlight.8 | 11 +++++- 6 files changed, 108 insertions(+), 2 deletions(-) diff --git a/etc/mtree/BSD.var.dist b/etc/mtree/BSD.var.dist index b55c0150848e..2594067d1b4e 100644 --- a/etc/mtree/BSD.var.dist +++ b/etc/mtree/BSD.var.dist @@ -37,6 +37,8 @@ .. /set mode=0755 db + backlight tags=package=rc + .. entropy uname=operator gname=operator mode=0700 .. freebsd-update mode=0700 diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf index 12da003978e8..aaeb65e92264 100644 --- a/libexec/rc/rc.conf +++ b/libexec/rc/rc.conf @@ -42,6 +42,7 @@ always_force_depends="NO" # Set to check that indicated dependencies are apm_enable="NO" # Set to YES to enable APM BIOS functions (or NO). apmd_enable="NO" # Run apmd to handle APM event from userland. apmd_flags="" # Flags to apmd (if enabled). +backlight_enable="NO" # Save/restore backlight levels ddb_enable="NO" # Set to YES to load ddb scripts at boot. ddb_config="/etc/ddb.conf" # ddb(8) config file. devd_enable="YES" # Run devd, to trigger programs on device tree changes. diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index f6646208dc03..a84f3e04381e 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -11,6 +11,7 @@ CONFS= DAEMON \ NETWORKING \ SERVERS \ adjkerntz \ + backlight \ bgfsck \ bridge \ cfumass \ diff --git a/libexec/rc/rc.d/backlight b/libexec/rc/rc.d/backlight new file mode 100755 index 000000000000..6833f7b92aff --- /dev/null +++ b/libexec/rc/rc.d/backlight @@ -0,0 +1,88 @@ +#!/bin/sh - +# +# Copyright (c) 2026 Kyle Evans +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# PROVIDE: backlight +# REQUIRE: FILESYSTEMS kld +# KEYWORD: nojail shutdown + +. /etc/rc.subr + +name="backlight" +desc="Save and restore backlight values" +rcvar="backlight_enable" +stop_cmd="backlight_stop" +start_cmd="backlight_start" +reload_cmd="backlight_start" +extra_commands="reload" + +backlightdb="/var/db/backlight" + +# +# List current backlight devices to stdout. +# +list_backlights() +{ + ( cd /dev/backlight ; ls backlight* 2>/dev/null ) +} + +# +# Save state of an individual backlight specified as $1 +# +backlight_save() +{ + local dev + + dev="/dev/backlight/$1" + if [ -r "$dev" ]; then + /usr/bin/backlight -f "$dev" -q > "$backlightdb/$1-state" 2>/dev/null + fi +} + +# +# Restore the state of an individual backlight specified as $1 +# +backlight_restore() +{ + local file dev + + dev="/dev/backlight/$1" + file="$backlightdb/$1-state" + if [ -r "$dev" -a -r "$file" ]; then + /usr/bin/backlight -f "$dev" $(cat "$file") > /dev/null + fi +} + +# +# Restore state of all backlights +# +backlight_start() +{ + local backlight + + for backlight in $(list_backlights); do + backlight_restore "$backlight" + done +} + +# +# Save the state of all backlights +# +backlight_stop() +{ + local backlight + + for backlight in $(list_backlights); do + backlight_save "$backlight" + done +} + +load_rc_config $name + +# doesn't make sense to run in a svcj: config setting +backlight_svcj="NO" + +run_rc_command "$1" diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 index 586e33980fd8..4db1586f2fcc 100644 --- a/share/man/man5/rc.conf.5 +++ b/share/man/man5/rc.conf.5 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 30, 2026 +.Dd September 1, 2026 .Dt RC.CONF 5 .Os .Sh NAME @@ -4433,6 +4433,11 @@ For example: autobridge_interfaces="bridge0" autobridge_bridge0="tap* dc0 vlan[345]" .Ed +.It Va backlight_enable +.Pq Vt bool +If set to +.Dq Li YES , +enable saving and restoring backlight levels at shutdown and boot time. .It Va mixer_enable .Pq Vt bool If set to diff --git a/usr.bin/backlight/backlight.8 b/usr.bin/backlight/backlight.8 index 291d1628d5ea..1800446a341e 100644 --- a/usr.bin/backlight/backlight.8 +++ b/usr.bin/backlight/backlight.8 @@ -20,7 +20,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd July 19, 2022 +.Dd September 1, 2026 .Dt BACKLIGHT 8 .Os .Sh NAME @@ -79,6 +79,15 @@ If no value is specified a default of 10 percent is used. Decrement the backlight level. If no value is specified a default of 10 percent is used. .El +.Pp +Brightness levels may not be preserved across a reboot unless +.Va backlight_enable +is set to +.Dq Li YES +in +.Xr rc.conf 5 . +This is disabled by default to avoid intefering with desktop environments that +do their own backlight management. .Sh EXAMPLES Show the current brightness level: .Bd -literal -offset indent