# TFT Boot Splash & Status Display Guide (Raspberry Pi) ## 개요 이 문서는 Raspberry Pi에서 SPI TFT (/dev/fb1)에 다음 기능을 구현하는 방법을 설명합니다. 1. 부팅 시 splash 이미지 표시 2. 부팅 완료 후 상태 화면으로 전환 3. 상태 화면에 시스템 정보 (시간, IP, CPU 등) 표시 --- ## 1. 패키지 설치 ```bash sudo apt update sudo apt install -y imagemagick fbi ``` --- ## 2. Splash 이미지 준비 ```bash ls -l /home/pi/sf2/Fluidule.png ``` --- ## 3. Splash 스크립트 ```bash sudo nano /usr/local/bin/tft-splash.sh ``` ```bash #!/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 ``` ```bash sudo chmod +x /usr/local/bin/tft-splash.sh ``` --- ## 4. 상태 화면 스크립트 (확장판) ```bash sudo nano /usr/local/bin/tft-status.sh ``` ```bash #!/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 ``` ```bash sudo chmod +x /usr/local/bin/tft-status.sh ``` --- ## 5. Splash 서비스 ```bash sudo nano /etc/systemd/system/tft-splash.service ``` ```ini [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. 상태 화면 서비스 ```bash sudo nano /etc/systemd/system/tft-status.service ``` ```ini [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. 서비스 활성화 ```bash sudo systemctl daemon-reload sudo systemctl enable tft-splash.service sudo systemctl enable tft-status.service ``` --- ## 8. 재부팅 테스트 ```bash sudo reboot ``` --- ## 9. 문제 해결 ```bash 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는 항상 덮어쓰기 방식 사용 --- ## 한 줄 결론 "부팅은 이미지, 완료 후는 정보"