This fork: Plato on the Kindle Paperwhite 3
This is a fork of baskerville/plato focused on running Plato on the Kindle Paperwhite 3 (
muscat, i.MX6SL "Wario", firmware 5.16.2.1.1, kernel3.0.35-lab126, 1072×1448 @ 300 dpi, armv7 soft-float ABI, glibc 2.20). What it adds, each piece recorded in PATCHES.md:
- A Kindle backend: the lab126
mxcfbioctl dialect (72-bytemxcfb_update_data, REAGL waveforms),cyttsp4_mtmulti-touch (TouchProto::MultiSlot),max77696battery and frontlight, selected viaPLATO_DEVICE=kindle-pw3.- A self-contained cross-build (
xbuild.py) usingzig cc+cargo-zigbuild— no vendor toolchain, sha256-pinned third-party sources, an ABI gate that rejects hard-float output.- PDF reading tuned for academic papers: automatic content-box cropping, continuous scroll with an overlap anchor on page turns, and automatic two-column detection with column-wise navigation.
- Robustness fixes that are not Kindle-specific: a missing external helper can no longer crash the app, and a refused suspend no longer loops.
- Getting documents onto the device, host half included:
crates/foldersync(pull a folder from a Mac on the LAN),crates/platonic(push one document and open it),crates/pairing(pairing from a code shown on the panel — SPAKE2, same-WiFi only, no account and no cloud) andcrates/platonic-recv, which is what a paired Mac gets instead of a shell.Installing the Mac-side tool
cargo install --path crates/platonicNote the
--path:cargo install platoniclooks on crates.io, where this is not published, and pointing it at the workspace root fails with "there is nothing to install … only packages with binaries can be installed", because the root package has no binary.Then
platonic FILEpushes a document to the reader and opens it,platonic https://…sends a link the reader opens in its built-in article view (fetched and readability-extracted on the device — nothing is pushed), andplatonic --pair --code …pairs a new Mac using the code the reader shows.The sibling repo
This repository is the reader itself. adriaanm/platokin holds the tooling that makes it work on a Paperwhite 3 — installing and launching it, the host-side scripts, and the design docs explaining why things are the way they are here.
The split keeps this repo a Plato fork that can be read, built and upstreamed on its own. Where a feature has two halves, both halves are here and the design doc is next door.
We're happy to upstream any of this if there's interest — the build hygiene, the PDF features and the robustness fixes were written to be upstreamable; the Kindle backend is cleanly additive. Open an issue or PR conversation on this fork.
Plato is a document reader for Kobo's e-readers.
Documentation: GUIDE, MANUAL and BUILD.
Any 4.X.Y firmware, with X ≥ 6, will do.
Hacker News (1)
Rust
96.6%
Python
2.1%
This fork: Plato on the Kindle Paperwhite 3
This is a fork of baskerville/plato focused on running Plato on the Kindle Paperwhite 3 (
muscat, i.MX6SL "Wario", firmware 5.16.2.1.1, kernel3.0.35-lab126, 1072×1448 @ 300 dpi, armv7 soft-float ABI, glibc 2.20). What it adds, each piece recorded in PATCHES.md:
- A Kindle backend: the lab126
mxcfbioctl dialect (72-bytemxcfb_update_data, REAGL waveforms),cyttsp4_mtmulti-touch (TouchProto::MultiSlot),max77696battery and frontlight, selected viaPLATO_DEVICE=kindle-pw3.- A self-contained cross-build (
xbuild.py) usingzig cc+cargo-zigbuild— no vendor toolchain, sha256-pinned third-party sources, an ABI gate that rejects hard-float output.- PDF reading tuned for academic papers: automatic content-box cropping, continuous scroll with an overlap anchor on page turns, and automatic two-column detection with column-wise navigation.
- Robustness fixes that are not Kindle-specific: a missing external helper can no longer crash the app, and a refused suspend no longer loops.
- Getting documents onto the device, host half included:
crates/foldersync(pull a folder from a Mac on the LAN),crates/platonic(push one document and open it),crates/pairing(pairing from a code shown on the panel — SPAKE2, same-WiFi only, no account and no cloud) andcrates/platonic-recv, which is what a paired Mac gets instead of a shell.Installing the Mac-side tool
cargo install --path crates/platonicNote the
--path:cargo install platoniclooks on crates.io, where this is not published, and pointing it at the workspace root fails with "there is nothing to install … only packages with binaries can be installed", because the root package has no binary.Then
platonic FILEpushes a document to the reader and opens it,platonic https://…sends a link the reader opens in its built-in article view (fetched and readability-extracted on the device — nothing is pushed), andplatonic --pair --code …pairs a new Mac using the code the reader shows.The sibling repo
This repository is the reader itself. adriaanm/platokin holds the tooling that makes it work on a Paperwhite 3 — installing and launching it, the host-side scripts, and the design docs explaining why things are the way they are here.
The split keeps this repo a Plato fork that can be read, built and upstreamed on its own. Where a feature has two halves, both halves are here and the design doc is next door.
We're happy to upstream any of this if there's interest — the build hygiene, the PDF features and the robustness fixes were written to be upstreamable; the Kindle backend is cleanly additive. Open an issue or PR conversation on this fork.
Plato is a document reader for Kobo's e-readers.
Documentation: GUIDE, MANUAL and BUILD.
Any 4.X.Y firmware, with X ≥ 6, will do.
Hacker News (1)
Rust
96.6%
Python
2.1%