Fix goodbye.png not visible on idle auto-shutdown

The Allwinner /dev/disp driver resets brightness to 0 when the fd is
closed, so the screen monitor's SIGTERM brightness restore was undone
before the wrapper wrote goodbye.png. Restore brightness in the wrapper
itself, right before the framebuffer write.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Michael Smith
2026-02-13 23:12:10 +01:00
parent fbd32d7fb8
commit f9fcb9f121
2 changed files with 10 additions and 1 deletions

View File

@@ -44,10 +44,18 @@ wait "$SCREEN_MONITOR_PID" 2>/dev/null
# overwrite sdlamp2's shutdown screen).
if [ -f /tmp/.sdlamp2_shutdown ]; then
rm -f /tmp/.sdlamp2_shutdown
# Display the stock firmware's shutdown screen via framebuffer.
# Restore backlight brightness before writing the shutdown screen.
# The screen monitor's SIGTERM handler tries to restore brightness, but
# the Allwinner /dev/disp driver resets it to 0 when the fd is closed.
# Re-set it here so goodbye.png is actually visible.
# Then display the stock firmware's shutdown screen via framebuffer.
# goodbye.png is 640x480 RGB — exactly matches the display.
# /dev/fb0 is 32bpp BGRA, so we swap R/B channels and write raw pixels.
python3 -c "
import struct, fcntl
disp = open('/dev/disp', 'wb')
fcntl.ioctl(disp, 0x102, struct.pack('@4L', 0, 50, 0, 0))
disp.close()
from PIL import Image
img = Image.open('/mnt/vendor/res1/shutdown/goodbye.png').convert('RGBA')
r, g, b, a = img.split()