max / supernote-push
git clone https://makenot.work/git/max/supernote-push.git
git clone git@ssh.makenot.work:max/supernote-push.git
| Name | Size | |
|---|---|---|
| dist/ | ||
| examples/ | ||
| scripts/ | ||
| src/ | ||
| .gitignore | 99 B | |
| bento.toml | 332 B | |
| Cargo.toml | 1.5 KB | |
| CONTRIBUTING.md | 1.1 KB | |
| LICENSE | 1.0 KB | |
| README.md | 1.3 KB | |
| rust-toolchain.toml | 86 B |
README
supernote-push
Push PDFs to a Ratta Supernote over its on-device Browse & Access HTTP server. LAN only, no cloud, no telemetry.
Usage
use supernote_push::Supernote;
let sn = Supernote::at("192.168.1.42");
let bytes = std::fs::read("workout.pdf")?;
sn.push_pdf("Document/ripgrow", "2026-07-19.pdf", &bytes)?;
Discovery via mDNS:
use std::time::Duration;
for device in supernote_push::discover(Duration::from_secs(3))? {
println!("found: {device:?}");
}
What it does
- Uploads bytes to a chosen folder on the device via HTTP
PUT. - Lists folder contents.
- Reports reachability as a first-class enum so callers can distinguish “device asleep or Wi-Fi Transfer off” from “device on the wrong network.”
- Best-effort mDNS discovery.
What it does not do
- Cloud sync (Supernote Cloud is deliberately unsupported).
- USB transfer.
- Read or decode
.notefiles. - Handwriting recognition.
Compatibility
Targets the Browse & Access interface exposed on port 8089 when Wi-Fi
Transfer is enabled on the device. Tested against firmware versions listed
in CHANGELOG.md.
The precise wire format is not officially documented by Ratta; the crate
quarantines every wire-format assumption in src/browse.rs so firmware
drift only touches one file.
License
MIT.