Skip to main content

max / supernote-push

1.3 KB · 54 lines History Blame Raw
1 # supernote-push
2
3 Push PDFs to a Ratta Supernote over its on-device Browse & Access HTTP server.
4 LAN only, no cloud, no telemetry.
5
6 ## Usage
7
8 ```rust
9 use supernote_push::Supernote;
10
11 let sn = Supernote::at("192.168.1.42");
12 let bytes = std::fs::read("workout.pdf")?;
13 sn.push_pdf("Document/ripgrow", "2026-07-19.pdf", &bytes)?;
14 ```
15
16 Discovery via mDNS:
17
18 ```rust
19 use std::time::Duration;
20
21 for device in supernote_push::discover(Duration::from_secs(3))? {
22 println!("found: {device:?}");
23 }
24 ```
25
26 ## What it does
27
28 - Uploads bytes to a chosen folder on the device via HTTP `PUT`.
29 - Lists folder contents.
30 - Reports reachability as a first-class enum so callers can distinguish
31 "device asleep or Wi-Fi Transfer off" from "device on the wrong network."
32 - Best-effort mDNS discovery.
33
34 ## What it does not do
35
36 - Cloud sync (Supernote Cloud is deliberately unsupported).
37 - USB transfer.
38 - Read or decode `.note` files.
39 - Handwriting recognition.
40
41 ## Compatibility
42
43 Targets the Browse & Access interface exposed on port 8089 when Wi-Fi
44 Transfer is enabled on the device. Tested against firmware versions listed
45 in `CHANGELOG.md`.
46
47 The precise wire format is not officially documented by Ratta; the crate
48 quarantines every wire-format assumption in `src/browse.rs` so firmware
49 drift only touches one file.
50
51 ## License
52
53 MIT.
54