User Tools

Site Tools


fluidcanvas_r2pi:tft_boot_splash_and_status_display_guide

TFT Boot Splash & Status Display Guide (Raspberry Pi)

개요

이 문서는 Raspberry Pi에서 SPI TFT (/dev/fb1)에 다음 기능을 구현하는 방법을 설명합니다.

  1. 부팅 시 splash 이미지 표시
  2. 부팅 완료 후 상태 화면으로 전환
  3. 상태 화면에 시스템 정보 (시간, IP, CPU 등) 표시

1. 패키지 설치

sudo apt update
sudo apt install -y imagemagick fbi

2. Splash 이미지 준비

ls -l /home/pi/sf2/Fluidule.png

3. Splash 스크립트

sudo nano /usr/local/bin/tft-splash.sh
#!/bin/bash
sleep 1
/usr/bin/pkill fbi >/dev/null 2>&1 || true
/usr/bin/fbi -d /dev/fb1 --noverbose -a /home/pi/sf2/Fluidule.png >/dev/null 2>&1
sudo chmod +x /usr/local/bin/tft-splash.sh

4. 상태 화면 스크립트 (확장판)

sudo nano /usr/local/bin/tft-status.sh
#!/bin/bash
 
OUT=/tmp/tft-status.png
 
HOSTNAME_STR=$(hostname)
TIME_STR=$(date '+%Y-%m-%d %H:%M:%S')
IP_STR=$(hostname -I 2>/dev/null | awk '{print $1}')
[ -z "$IP_STR" ] && IP_STR="no network"
 
CPU_LOAD=$(top -bn1 | grep "load average" | awk '{print $10}')
CPU_TEMP=$(vcgencmd measure_temp | sed "s/temp=//")
MEM=$(free -m | awk '/Mem:/ {print $3"/"$2"MB"}')
 
magick -size 480x320 xc:black \
  -fill white -pointsize 24 -draw "text 20,40 'Fluidule Ready'" \
  -pointsize 18 -draw "text 20,90 'Host: ${HOSTNAME_STR}'" \
  -draw "text 20,120 'IP: ${IP_STR}'" \
  -draw "text 20,150 'Time: ${TIME_STR}'" \
  -draw "text 20,180 'CPU Load: ${CPU_LOAD}'" \
  -draw "text 20,210 'Temp: ${CPU_TEMP}'" \
  -draw "text 20,240 'Mem: ${MEM}'" \
  "$OUT"
 
/usr/bin/pkill fbi >/dev/null 2>&1 || true
/usr/bin/fbi -d /dev/fb1 --noverbose -a "$OUT" >/dev/null 2>&1
sudo chmod +x /usr/local/bin/tft-status.sh

5. Splash 서비스

sudo nano /etc/systemd/system/tft-splash.service
[Unit]
Description=TFT splash screen
DefaultDependencies=no
After=local-fs.target
 
[Service]
Type=oneshot
ExecStart=/usr/local/bin/tft-splash.sh
RemainAfterExit=yes
 
[Install]
WantedBy=sysinit.target

6. 상태 화면 서비스

sudo nano /etc/systemd/system/tft-status.service
[Unit]
Description=TFT status screen after boot
After=multi-user.target tft-splash.service
Wants=multi-user.target
 
[Service]
Type=oneshot
ExecStart=/usr/local/bin/tft-status.sh
 
[Install]
WantedBy=multi-user.target

7. 서비스 활성화

sudo systemctl daemon-reload
sudo systemctl enable tft-splash.service
sudo systemctl enable tft-status.service

8. 재부팅 테스트

sudo reboot

9. 문제 해결

systemctl status tft-splash.service
systemctl status tft-status.service
journalctl -u tft-splash.service -b
journalctl -u tft-status.service -b

10. 확장 아이디어

  • MIDI 상태 표시
  • USB mount 상태 표시
  • CPU 그래프 표시
  • 실시간 업데이트 루프 구현

핵심 요약

  • splash는 fbi로 빠르게 표시
  • 상태 화면은 ImageMagick으로 생성
  • systemd로 자동 실행
  • fbi는 항상 덮어쓰기 방식 사용

한 줄 결론

“부팅은 이미지, 완료 후는 정보”

fluidcanvas_r2pi/tft_boot_splash_and_status_display_guide.txt · Last modified: by hyjeong