Files
MeowOS-For-R3P2/patch_v2/bootmenu/S22brightness
T
AskaEth 0ab23161b6 fix(boot): M21 开机 logo 亮度 — S11 画前压到 <=20 + 新增 S22brightness 按用户设置恢复
冷启动 logo 很亮:stock S11 是画完 logo 之后才写死 60,画图那一刻用的是面板上电默认高亮;
而 S11 早于 S21mount_ubifs,那时 /usr/data 未挂载、读不到 settings.conf,只能写死一个值。

- S11jpeg_display_shell:以基线(249220f2)为底,把背光压制挪到画 logo 之前(jpeg_display
  函数体内、先于 cmd_jpeg_display),值 20(只降不升:S22 已写更暗则不覆盖);删除画完后
  写死 60 的那行;/dev/fb0 等待、mtd5 主题判定、后台 jpeg_display & 语义不变;
  主题判定 `==` 改 `=`(POSIX test,语义不变,便于宿主验证)。
- S22brightness(新):S21mount_ubifs 之后运行,读 /usr/data/meow/settings.conf 的
  display.brightness,按 display.brightness_min 与 sysfs max_brightness clamp 后写入;
  读不到/解析失败不改背光(保持 S11 低值)、无 sleep/重试、任何运行期失败 exit 0;幂等。
- scripts/build/fw_content.conf:登记两条(S11 覆盖基线同名文件、S22 新增),md5 实算,
  说明列写清 S11 < S21mount_ubifs < S22 的顺序依赖。
- scripts/build/README.md:补「覆盖基线已有文件」语义(无条件 cp -f,不校验基线 md5、
  也不跳过已存在文件;唯一基线校验仍是 hiby_player)。

固件需整包刷机才生效,未刷机、未写设备。
2026-11-05 22:04:16 +08:00

112 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
#
# S22brightness — 开机按用户设置恢复背光(MeowOS M21)
#
# 位置/顺序(/etc/init.d 按文件名自然序执行,见 /etc/init.d/rcS):
# S11jpeg_display_shell 画开机 logo,画前把背光压到 <=20(防「面板上电默认很亮」)
# → S21mount_ubifs 挂载 /usr/data
# → S22brightness 本脚本:此时才读得到 /usr/data/meow/settings.conf
# → S30dbus … → S70meow_sysui / S90meow_bootmenu launcher/watchdog 接管后继续维持用户亮度
#
# 为什么不能只改 S11:S11 早于 S21,/usr/data 未挂载 → settings.conf 不存在,只能写死一个安全低值。
#
# 行为:
# - 读 display.brightness,以 display.brightness_min(下限,缺省 1)和
# /sys/class/backlight/backlight_pwm0/max_brightness(上限,本机实测 101)clamp 后写入。
# - 单位是 0..max_brightness 的**绝对档位**,不是百分比;display.brightness_min 同单位。
# - 读不到文件 / 解析不出 display.brightness / max_brightness 读不到 → **不改背光**
# (保持 S11 设的低值),打一行日志后 exit 0。
# - 幂等(当前值已是目标值则不写)、无 sleep / 无重试,任何运行期失败都 exit 0(不阻断 init 链)。
BL_BRIGHTNESS="/sys/class/backlight/backlight_pwm0/brightness"
BL_MAX="/sys/class/backlight/backlight_pwm0/max_brightness"
MEOW_SETTINGS="/usr/data/meow/settings.conf"
log()
{
echo "S22brightness: $*"
}
start()
{
# /usr/data 刚挂载时 settings.conf 可能尚不存在(新机/首次启动)或被正在写:
# 只读一次,读不到就保持 S11 的低亮度,不 sleep 重试(不阻塞 init 链)。
if [ ! -r "$MEOW_SETTINGS" ]; then
log "settings.conf 不可读($MEOW_SETTINGS),保持 S11 低亮度"
return 0
fi
max=$(cat "$BL_MAX" 2>/dev/null)
case "$max" in
''|*[!0-9]*)
log "max_brightness 读不到,不改背光(保持 S11 低亮度)"
return 0
;;
esac
if [ "$max" -le 0 ]; then
log "max_brightness=$max 非法,不改背光"
return 0
fi
# 解析 settings.conf:<key> = <value>,容忍两侧空白/CR,忽略注释与非数字值。
b=""
mn=""
while IFS='=' read -r k v; do
k=$(printf '%s' "$k" | tr -d '[:space:]')
v=$(printf '%s' "$v" | tr -d '[:space:]')
case "$k" in
display.brightness)
case "$v" in
''|*[!0-9]*) ;;
*) b="$v" ;;
esac
;;
display.brightness_min)
case "$v" in
''|*[!0-9]*) ;;
*) mn="$v" ;;
esac
;;
esac
done < "$MEOW_SETTINGS"
if [ -z "$b" ]; then
log "settings.conf 无有效 display.brightness,保持 S11 低亮度"
return 0
fi
[ -n "$mn" ] || mn=1
[ "$mn" -lt 1 ] && mn=1
[ "$mn" -gt "$max" ] && mn="$max"
[ "$b" -lt "$mn" ] && b="$mn"
[ "$b" -gt "$max" ] && b="$max"
cur=$(cat "$BL_BRIGHTNESS" 2>/dev/null)
if [ "$cur" = "$b" ]; then
log "背光已是 $b,跳过写入"
return 0
fi
if echo "$b" > "$BL_BRIGHTNESS" 2>/dev/null; then
log "开机背光 -> $b(min=$mn max=$max)"
else
log "写背光 $b 失败,保持原值"
fi
return 0
}
case "$1" in
start)
start
;;
stop|restart|reload)
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0