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)。 固件需整包刷机才生效,未刷机、未写设备。
This commit is contained in:
1 parent
316d9d42c7
commit
0ab23161b6
4 files changed
+221
No files matched your search
Executable
+111
@@ -0,0 +1,111 @@
|
||||
#!/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
|
||||
Reference in new issue
Block a user