Skip to content

Repository files navigation

Sony Digital Paper

CI MIT licensed

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.

Screenshots

Device status

Device status showing storage and battery information

Samples folder

Document browser showing PDFs in the Samples folder

Current features

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

Network printer

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

Download a ready-to-run package from the GitHub Releases page:

  • macOS: choose arm64 for Apple silicon or x86_64 for an Intel Mac, unzip, then open Sony Digital Paper.app.
  • Windows: download the windows-x86_64 zip, unzip it, then run Sony Digital Paper.exe.
  • Linux: download the linux-x86_64 archive, 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.

Tested configurations

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

Build and run from source

Rust 1.85 or newer is recommended.

cargo run --release

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

IDE projects

VS Code — recommended on macOS, Windows, and Linux

Open SonyDigitalPaper.code-workspace. VS Code will recommend rust-analyzer and the appropriate native debugging extensions. The workspace includes:

  • Cmd/Ctrl+Shift+B default Cargo build
  • build, run, release, test, Clippy, and format tasks
  • CodeLLDB debugging on macOS/Linux
  • MSVC debugging on Windows

Visual Studio 2022 — Windows only

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:

  1. For Wi-Fi, put the computer and Digital Paper on the same network, then select Find Wi-Fi. You can also enter digitalpaper.local or the IP address shown in the reader's Wi-Fi settings.
  2. 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.
  3. If credentials from the old application are found, select Connect.
  4. 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.

If the build reports many errors

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 clean

Free at least 5 GB of disk space (10 GB is healthier for macOS), then retry:

cargo run --release

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

Device protocol

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.

Limitations

  • 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, and Sample/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.

Development

cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test

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

Acknowledgments and license

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.

About

Native Rust/egui file manager for Sony DPT-RP1 and DPT-CP1

Resources

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages