NanoKVM Pro Desk 定时开关屏

NanoKVM Pro Desk(固件 1.2.15)小屏(320×172,SPI 接 JD9853)的定时开关屏方案。

需求

  • 23:00 关屏
  • 8:00 开屏显示时钟
  • cron 触发,每天自动跑

限制

  • /api/vm/lcd/screen-off 接口在 1.2.15 不可用(GitHub commit da60f0ce feat: support scheduled screen off 于 2026-07-31 提交到 main 分支,晚于 1.2.15 release(2026-06-12),且截至 2026-09 没有新 release 包含此功能)
  • 只能通过修改 /etc/kvm/kvm_ui.toml + kill -HUP 让 kvm_ui 重启加载新配置

最终方案

/opt/scripts/screen-off.sh(23:00):

1
2
3
4
5
6
#!/bin/bash
set -e

sed -i "s/^autoclock = .*/autoclock = 'off'/" /etc/kvm/kvm_ui.toml
sed -i "s/^sleep = .*/sleep = 5/" /etc/kvm/kvm_ui.toml
kill -HUP $(pgrep kvm_ui) 2>/dev/null || true

/opt/scripts/screen-on.sh(08:00):

1
2
3
4
5
6
7
8
9
#!/bin/bash
set -e

sed -i "s/^autoclock = .*/autoclock = 'clock_widget'/" /etc/kvm/kvm_ui.toml
sed -i "s/^sleep = .*/sleep = 0/" /etc/kvm/kvm_ui.toml
kill -HUP $(pgrep kvm_ui) 2>/dev/null || true

sleep 3
echo 0 > /sys/class/backlight/backlight/bl_power

cron:

1
2
0 23 * * * /opt/scripts/screen-off.sh
0 8 * * * /opt/scripts/screen-on.sh

关键点

  • autoclock 三个值:
    • clock_widget → panel 里 auto clock=on, auto sleep=off
    • none → auto clock=off, auto sleep=off
    • off → auto clock=off, auto sleep=on
  • sleep 是 idle 超时(秒),0 永不超时
  • kvm_ui 重启时会自动设 bl_power=1(dim),脚本里手动 echo 0 > .../bl_power 复位
  • HUP 让 kvm_ui 重启,kvmcomm supervisor 拉起新进程读新 toml