概要
- 古いKindle をバス到着時刻表示デバイスに改造する手順の解説
- Jailbreak、KUAL/MRPI導入、SSH設定 などのハック方法を詳述
- サーバー構築・画像生成・KUALアプリ作成 までの全工程を網羅
- トラブルシューティングや工夫点 も実体験をもとに紹介
- 運用後の課題や応用例 についても言及
古いKindleをバス到着時刻表示デバイスに改造する方法
- Kindle Touch 4th Generation/K5/KT などの古いKindleを活用したIoTデバイス化
- リアルタイムでバス到着時刻 を1分ごとに更新表示
- ダッシュボードモード からはメニューボタンで簡単に退出可能
- TRMNLのような高価な専用端末 を自作で再現
準備と主要ステップ
- Jailbreakの実施
- Kindleの機種・ファームウェアバージョンを特定
- 適切なtarファイル ダウンロードとJailbreak手順の実行
- KUAL & MRPIのインストール
- KUAL:Kindle用カスタムアプリランチャー
- MRPI:カスタムアプリのインストール支援ツール
- Hotfixの適用 が必要な場合あり
- OTAアップデートの無効化 も推奨
- SSH環境の構築
- KUAL拡張のUSBNetwork を利用しSSH接続を実現
- MRPI経由でKUAL拡張をインストール する手順に注意
- SSH接続成功後、Kindleがネットワークデバイスとして認識される
サーバーと画像生成
- Kindle用画像サーバーの構築
- NJTransitのGraphQL API からバス到着時刻データ取得
- curlコマンド でデータ取得例を紹介
- HTML→PNG画像生成 にはpuppeteerではなく wkhtmltoimage を採用
- 低コストサーバー (例:Digital Ocean $6プラン)でも安定運用
- cronで3分ごとにPNG生成 し、Kindleが取得できるようにエンドポイントを用意
- 画像の解像度・回転処理
- eipsコマンド でKindle画面に画像表示
- Kindleの画面解像度(例:600x800) に合わせて画像生成
- 画像の回転・位置調整 にはCSSのtransform(rotate, translate)を利用
KUALアプリの作成
- ダッシュボード起動・終了を柔軟に制御
- KUAL用のカスタム拡張 を/mnt/us/extensions/配下に配置
- menu.jsonでメニュー項目を定義 し、bin/start.shでダッシュボード起動
- trapコマンド でシグナル(HUP, TERM)を無視し、スクリプトの早期終了を防止
- rtcwakeコマンド でスリープ・復帰制御(デバイス選択に注意)
- refresh_screen関数 で画像取得・画面クリア・日時/バッテリー表示を実装
- evtestコマンド でメニューボタン押下を監視し、stop.shでダッシュボード終了
運用・課題・応用
- 色残り(color bleeding)対策
- 画面を完全黒→白でフラッシュしてリセットする案を検討中
- バッテリー寿命
- 約5日間稼働可能、夜間10時間オフで2日延長
- 2週間稼働を目指しつつ、1分更新のリアルタイム性は維持したい
- 応用可能性
- バス時刻以外にもカレンダー・天気・タスク表示 など、e-ink画面の情報端末化が可能
- 毎日の実用性とカスタマイズ性の高さ を実感
まとめ
- 古いKindleの再利用・IoT化の実践例 として高い応用力
- Jailbreakからカスタムアプリ開発まで一気通貫のノウハウ を公開
- 低コスト・高カスタマイズ性 で日常生活の利便性向上を実現