- 구형 Kindle Touch 4세대를 개조해 NJ Transit 버스 도착 시간을 1분마다 갱신하는 전자잉크 대시보드로 전환
-
Jailbreak, KUAL, MRPI, SSH 설정을 통해 커스텀 앱 실행 환경을 구축하고, Node 기반 서버에서 이미지를 생성해 Kindle에 표시
- 서버는 GraphQL API로 버스 데이터를 가져와 HTML로 포맷한 뒤, wkhtmltoimage로 PNG를 생성해 Kindle이 주기적으로 불러옴
-
KUAL 앱을 직접 만들어 메뉴 버튼으로 대시보드를 종료할 수 있게 하고, bash trap과 rtcwake로 전원 관리 및 자동 갱신 제어
- 약 5일의 배터리 지속시간과 화면 잔상 문제를 개선할 여지가 있으며, 전자잉크 디스플레이의 실시간 정보 활용 가능성을 보여줌
Kindle을 버스 도착 정보 디스플레이로 전환
- Kindle Touch 4세대를 실시간 버스 도착 정보판으로 개조
- 1분마다 화면을 새로고침하며, 메뉴 버튼으로 대시보드 모드를 종료 가능
- 상용 제품 TRMNL과 유사한 기능을 무료로 구현
1. Kindle Jailbreak
- Kindle의 펌웨어 버전을 확인하고, 해당 버전에 맞는 tar 파일을 다운로드해 Jailbreak 절차 수행
- 성공 후 KUAL과 MRPI 설치 단계로 진행
2. KUAL 및 MRPI 설치
-
KUAL은 커스텀 앱 런처, MRPI는 앱 설치 도구로 사용
- 설치 전 Hotfix 설정을 반드시 수행해야 함
- 설치 후 OTA 업데이트 비활성화로 자동 업데이트 차단
3. SSH 설정
-
USBNetwork 확장을 통해 Kindle에 SSH 접속 가능
- 외부 블로그 가이드를 참고해 USB 기반 SSH 연결 설정
- 연결 성공 시 컴퓨터 네트워크 탭에 Kindle이 새 장치로 표시됨
4. 서버 구축 및 이미지 생성
-
NJ Transit GraphQL API를 이용해 버스 도착 정보를 가져옴
-
getBusArrivalsByStopID 쿼리로 노선, 도착 시간, 혼잡도 등 데이터 수집
-
puppeteer 대신 wkhtmltoimage를 사용해 HTML을 PNG로 변환
- 서버는 3분마다 새 이미지를 생성하고 Kindle이 이를 요청
- 관련 코드는 GitHub 저장소 kindle-hax/server에 공개
- Kindle 화면 해상도(예: 600x800)에 맞춰 이미지 회전 및 정렬 조정
-
transform: rotate(90deg) translateX(-100px) translateY(-100px);로 세로 방향 표시 구현
5. KUAL 앱 제작
-
대시보드 시작/종료 제어를 위한 커스텀 KUAL 확장 생성
-
/mnt/us/extensions/에 폴더 배치 후 KUAL에서 ‘Start dashboard’ 메뉴 표시
-
start.sh 스크립트는 신호 무시(trap '' HUP, trap '' TERM)로 안정적 실행 유지
-
refresh_screen() 함수가 서버 이미지 다운로드 후 eips 명령으로 표시
- 상단에 날짜, Wi-Fi 상태, 배터리 잔량 표시
-
evtest로 메뉴 버튼 입력(code 102 (Home), value 1) 감지 시 stop.sh 실행
- 대시보드 종료 및 Kindle UI 재시작 수행
6. 실행 결과 및 개선점
- 약 5일간 배터리 지속, 야간 전원 차단 시 2일 연장 가능
-
화면 잔상(color bleeding) 문제는 완전한 흑백 플래시로 개선 가능성 있음
- 매일 사용 중이며, 캘린더·날씨·할 일 등 다양한 정보 표시 확장 가능성 확인