| 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 |
|