fluidcanvas_r2pi:tft_boot_splash_and_status_display_guide
Table of Contents
TFT Boot Splash & Status Display Guide (Raspberry Pi)
개요
이 문서는 Raspberry Pi에서 SPI TFT (/dev/fb1)에 다음 기능을 구현하는 방법을 설명합니다.
- 부팅 시 splash 이미지 표시
- 부팅 완료 후 상태 화면으로 전환
- 상태 화면에 시스템 정보 (시간, 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
