A native Rust file manager for Sony DPT-RP1 and DPT-CP1 Digital Paper readers. It talks directly to the reader over Wi-Fi or USB and does not require Sony's discontinued Digital Paper App or a Python installation. Native USB is available on macOS and Windows; Linux can connect over Wi-Fi or LAN.
This is an independent, unofficial open-source project. It is not affiliated with, endorsed by, or supported by Sony Corporation. Sony and Digital Paper are trademarks of their respective owners.
- Discover readers advertised through
_digitalpaper._tcp.local. - Initialize and discover readers over native USB on macOS and Windows
- Connect by hostname or IP address
- Import credentials created by Sony's app or
dpt-rp1-py - Pair a new reader using the PIN shown on its screen
- View model, firmware, storage, battery, pen charge, Wi-Fi, and library status
- Browse the
Document/hierarchy - Upload multiple PDFs with a file picker or drag and drop
- Select multiple items to download, move, copy, or delete as a batch
- See byte progress for uploads and downloads
- Resume interrupted chunked transfers of large PDFs
- Share the connected app as a driverless PDF printer on the local network
- Safely queue network print jobs while the reader is disconnected
- Create and delete folders
- Rename, move, copy, and delete documents
- Fall back to recursive listing when the device truncates a large library
The protocol implementation and UI are native Rust. Device work runs on a background thread so network requests and transfers do not freeze egui. Use Cmd-click on macOS or Ctrl-click on Windows and Linux to toggle individual rows; use Shift-click to select a range.
The app can act as a print gateway for computers, iPhones, and iPads on the local network. Open Settings, choose the advertised name, and enable Network printer. On macOS, the app publishes a monochrome AirPrint/IPP printer through Bonjour. It should appear in the iPhone/iPad printer picker and under System Settings → Printers & Scanners on a Mac. It can also be added manually using:
ipp://computer-name.local:8631/ipp/print
The host app must remain running, but the reader does not need to remain
connected. A received PDF is written to a durable local outbox before the
requesting computer is told that printing succeeded. Queued jobs are shown as
Ready to send and are uploaded to Document/Received after the app connects
or reconnects to the paired reader. Delivery is retried every 30 seconds while
jobs are waiting, and the queue survives application and computer restarts.
For immediate delivery while the reader sleeps, set Settings → Wi-Fi Settings → Keep Wi-Fi On During Sleep on the reader to Always enabled or Enabled only when plugged in. Sony also supports preserving an established Bluetooth PAN connection during sleep, but modern macOS versions no longer provide the Bluetooth PAN network service required by the DPT-RP1/DPT-CP1. Bluetooth remains a possible transport on operating systems that expose a compatible PAN.
PDF jobs are queued directly. On macOS, AirPrint's monochrome Apple Raster jobs are converted locally into PDFs before they enter the durable queue. The IPP connection is unencrypted, so enable the printer only on a trusted local network. Windows and Linux hosts currently expose the PDF-only IPP gateway and do not advertise AirPrint raster support.
Windows printer hosting and Bluetooth PAN work is specified in the Windows AirPrint and Bluetooth implementation plan.
Download a ready-to-run package from the GitHub Releases page:
- macOS: choose
arm64for Apple silicon orx86_64for an Intel Mac, unzip, then open Sony Digital Paper.app. - Windows: download the
windows-x86_64zip, unzip it, then run Sony Digital Paper.exe. - Linux: download the
linux-x86_64archive, extract it, then run./sony-digital-paper. Linux currently connects over Wi-Fi or LAN, not USB.
Packages are currently unsigned. macOS or Windows may show a first-run security prompt; on macOS, right-click the app and choose Open. You can also build the application from source using the instructions below.
| Device | Operating system | Wi-Fi | Native USB |
|---|---|---|---|
| DPT-RP1 | Current macOS | Verified | Verified end-to-end |
| DPT-RP1 | Windows 10/11 | Build verified; hardware testers wanted | Build verified; hardware testers wanted |
| DPT-RP1 | Linux x86_64 | Build verified; hardware testers wanted | Not yet supported |
| DPT-CP1 | macOS and Windows | Uses the same protocol; testers wanted | Uses the same protocol; testers wanted |
| DPT-CP1 | Linux x86_64 | Uses the same network protocol; testers wanted | Not yet supported |
Rust 1.85 or newer is recommended.
cargo run --releaseOn Linux, the app supports both Wayland and X11. To create a standard macOS
.app bundle after building:
./scripts/package-macos.sh
open "dist/Sony Digital Paper.app"The locally built bundle is unsigned. macOS may require you to right-click it and choose Open the first time.
Open SonyDigitalPaper.code-workspace. VS
Code will recommend rust-analyzer and the appropriate native debugging
extensions. The workspace includes:
Cmd/Ctrl+Shift+Bdefault Cargo build- build, run, release, test, Clippy, and format tasks
- CodeLLDB debugging on macOS/Linux
- MSVC debugging on Windows
Open SonyDigitalPaper.sln. It is a native Visual
Studio Makefile project whose Build, Rebuild, Clean, and F5 commands invoke
Cargo. Install the Desktop development with C++ workload and the Rust MSVC
toolchain first. See visual-studio/README.md.
Visual Studio for Mac is not supported; use the VS Code workspace on macOS.
The first build downloads and compiles the Rust dependencies. After it opens:
- For Wi-Fi, put the computer and Digital Paper on the same network, then
select Find Wi-Fi. You can also enter
digitalpaper.localor the IP address shown in the reader's Wi-Fi settings. - For USB, attach the reader with a data-capable cable, wake it, and select Find USB. The app switches the reader to USB Ethernet and discovers its scoped link-local address automatically. This option is currently available on macOS and Windows.
- If credentials from the old application are found, select Connect.
- Otherwise select Pair new device, then enter the PIN displayed on the reader.
USB starts as a standard CDC-ACM serial connection. The app sends Sony's mode switch command, after which the reader re-enumerates as CDC-ECM on macOS or RNDIS on Windows. macOS USB was tested using only its built-in CDC drivers. Windows builds use Microsoft's inbox USB serial and RNDIS support; if Windows does not bind RNDIS automatically, use Device Manager to select Microsoft's Remote NDIS Compatible Device driver for the reader. The same saved pairing credentials work over Wi-Fi and USB.
Look for No space left on device or errno=28 near the first error. Cargo can
then print many secondary errors naming unrelated crates even though the source
code is not the problem. Remove only generated project artifacts with:
cargo cleanFree at least 5 GB of disk space (10 GB is healthier for macOS), then retry:
cargo run --releasePairing credentials are stored with owner-only file permissions at:
~/Library/Application Support/Sony Digital Paper/credentials.json
Legacy credentials are detected under ~/.config/dpt/ and the old Sony
Digital Paper App support directory.
The credentials file contains a private key that authorizes access to the
paired reader. Do not post it in an issue, attach it to logs, or commit it to a
repository. See SECURITY.md when reporting a security problem.
Pairing uses the reader's HTTP service on port 8080. It performs the Sony PIN exchange using RFC 3526 group-14 Diffie-Hellman, PBKDF2-SHA256, HMAC-SHA256, AES-128-CBC, and a newly generated RSA-2048 client key.
Normal document operations use the HTTPS service on port 8443. Authentication
signs a fresh device nonce using RSA PKCS#1 v1.5 with SHA-256, after which the
reader supplies a short-lived Credentials cookie.
Large documents are transferred in 8 MiB chunks. Uploads validate the reader's
received and cumulative byte counts after each chunk and retry transient
failures. Downloads use HTTP ranges and the reader's ETag; interrupted downloads
leave a .part file that a later attempt resumes when the device revision still
matches.
The firmware uses a device-issued TLS certificate that modern operating-system
trust stores do not recognize. This version accepts that certificate, matching
the behavior of dpt-rp1-py; all requests remain encrypted and require the
paired RSA identity. Use the application only on a trusted local network.
For USB, the app derives the reader's link-local IPv6 address from its serial number and binds the connection to the USB interface scope. This keeps USB traffic on the cable even while Wi-Fi is enabled.
- The Digital Paper document API is intended for PDF files. Uploads of other formats are rejected by the app.
- The macOS network printer supports PDF and monochrome Apple Raster at 300 dpi. Windows and Linux hosts currently accept PDF only; PWG Raster and color AirPrint jobs are not supported.
- Sony's functional root folders (
Note,Received, andSample/Samples) are marked as system folders and cannot be deleted by the app. - Sony's API supports moving and renaming documents, but not folders. Folders can be created and deleted.
- Bluetooth PAN initialization is not implemented. Sony's Bluetooth transport depends on an operating-system PAN service, which is unavailable on modern macOS; Wi-Fi sleep persistence is the supported wireless path on current Macs.
- Linux supports Wi-Fi/LAN connections, but its native USB mode switch and USB Ethernet discovery are not yet implemented.
- Native USB has been validated with a physical DPT-RP1 on current macOS and cross-compiled for Windows. Windows hardware validation remains pending, so automatic binding to Microsoft's inbox RNDIS driver may depend on the Windows installation.
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo testThe source is divided into the egui application, a background worker, discovery,
credential storage, and a standalone protocol module. This keeps hardware
protocol fixes isolated from UI work.
This project is licensed under the MIT License. Its Sony Digital Paper protocol
implementation is based on Jan-Gerd Tenberge's
dpt-rp1-py. See
THIRD_PARTY_NOTICES.md for attribution.

