- 旧型の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接続を設定
- 接続に成功すると、PCのネットワークタブに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)**の問題は、完全な白黒フラッシュで改善できる可能性がある
- 毎日使っており、カレンダー・天気・ToDoなどさまざまな情報表示への拡張可能性も確認
2件のコメント
私も最近似たようなことをしましたが、上にあるURLバーを見るのが気にならないなら、普通にWebページを読み込むだけでも大丈夫です。
Kindleは標準でWebブラウザからURLにアクセスできるので、そこでダッシュボードを読み込めばOKです。
会社ではKindleで、自宅では旧世代のPaperwhiteで同じページを読み込んでいるので、なかなかクロスプラットフォームですね(笑)
もちろん、Kindleでも常時点灯モードのためにはroot化、またはそれに近い作業が必要です。
Paperwhiteはroot化までは不要で、
adb接続だけ有効にして、そこからスクリーンセーバーを無効化する操作をすれば大丈夫です。Hacker News のコメント
以前 Kindle の消費電力に関する作業をしていた者として言うと、最大の電力消費源は WiFi 接続だった
WiFi は接続を維持するために AP に定期的に応答し続ける必要があるからだ
WiFi をオフにした状態では約 700uA、オンにした状態では約 1.5mA だったと記憶している
ページ切り替え時には瞬間的に数百 mA まで電力が跳ね上がり、ゴースティング現象を減らすために一定ページごとに全面リフレッシュが行われていた
瞬間的に 1.5A ほど供給できる電源が必要だったが、古いセルフパワー USB ハブを Raspberry Pi につないで SSH で制御すると、WiFi なしでも数か月間安定して動作した
使用頻度は月 30 回未満だが、WiFi を切っておくとバッテリー効率は驚くほど良い
Paperwhite Kindle はまだ改造していないが、少なくとも ロック画面広告は削除するつもりだ
これでようやく 機内モードでバッテリーが長持ちする理由をしっかり理解できた
私はもっと単純な方法を使った
Jailbreak 後に SSH で接続し、1 分ごとと 30 分ごとに実行される 2 つのスクリプトを作った
どちらのスクリプトも同じ画像を表示するが、30 分ごとのほうには全面リフレッシュを追加している
Raspberry Pi から rsync で画像を転送し、Python スクリプトが 空気質データを MySQL から取得して画像を合成する
Kindle は単に画像を表示するだけなので、非常に安定して動作する
TLS のような安全な接続だけ対応していればいい
Kindle ハックは本当に楽しい作業だ
eBay なら 15〜20 ユーロで旧型 Kindle が手に入り、私も昨年同じような実験をして楽しんだ
詳しい手順は 私のブログ記事 にまとめてある
サイズは小さいが、Crosspoint ファームウェアを入れれば携帯型 e-ink リーダーとして使える
YouTube 動画, Crosspoint GitHub
価格は少し高いが、Kindle の画面を再利用した製品かもしれない
この記事を見て、Cloudflare Workers のようなプラットフォームをもっと試してみたくなった
私は古い Kindle を AI 生成アートフレームに変えた
数時間ごとに新しい絵が生成され、プロンプトには天気・動物・国・ニュース見出しなどを含められる
すべての処理は自宅の ollama + stable-diffusion-webui サーバーでローカル実行している
ただ、ニュースベースの絵は暗くなりすぎるので、AI には 前向きなトーンに変えるよう指示している
雨の日には絵の中でも雨が降り、冬には雪が降るといった動作をする
バッテリーも数週間持ち、Online Screensaver extension を修正して機内モードへ自動で切り替わるようにした
私が作った Kindle ダッシュボード版は GitHub で公開 している
ローカルの天気とメディアサーバーの音楽情報を表示する
画面の ghosting 問題は
eips -fコマンドで定期的に全面リフレッシュすれば解決する初めて Rust を学びたいと思った
オーストラリアのクイーンズランド州では 太陽光 e-paper バス停案内板が運用されている
Kindle よりはるかに大きいが、原理は似ている
プロジェクト紹介, デモ動画
このプロジェクトを見て SystemSix プロジェクト を思い出した
最近はみんなこういう Kindle 改造プロジェクトをやっている気がする
私も K4NT を改造して家族の予定表を表示するサーバーを作った
AI の助けを少し借りて、Ikea の額縁に 3D プリントしたインサートを入れ、MagSafe モバイルバッテリーを取り付けた
5 日ごとに電源ボタンを押すだけでよく、内蔵バッテリーは交換予定だ
私の環境では有線接続は不可能だった
ネットワークを リフレッシュの合間に切っておくと、バッテリー寿命は確実に伸びる
私は夜 10 時から朝 6 時までは更新を止めていた
GitHub にはバッテリー節約用のスクリプトがたくさんある
以前 Raspberry Pi Zero + 2 インチ e-ink で GTFS ベースの公共交通表示機を作ったこともある
Kindle ダッシュボード記事, Transit Pi プロジェクト
こういう スマート家電の可視化は本当に魅力的だ
私は Kindle を単一目的ディスプレイとして使うのが好きだ
むしろ eInk より LCD Kindle Fire を好んでいる
開発者モードに切り替えれば、Web ページを表示しっぱなしにして広告なしで使える
Kindle Fire HD10 は約 40 ドルで手に入る
ゴースティングがなく、暗い場所でも読める LCD はダッシュボード用として素晴らしいアップグレードだ