Skip to main content

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 .note files.
  • 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.