From d7d13d2849e472caebd0729a91f21e49b7dc7e65 Mon Sep 17 00:00:00 2001 From: MattJackson <1085847+MattJackson@users.noreply.github.com> Date: Thu, 9 Apr 2026 13:03:00 -0700 Subject: [PATCH] Update README: v0.6.0 API, real sample output --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 08a28da..3267625 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Rust library for 4K UHD / Blu-ray optical drives. Drive access, disc scanning, stream labels, AACS decryption, KEYDB updates, and content reading in one crate. Bundled drive profiles — no external files needed. -**12-23 MB/s** read speeds on BD. Full LibreDrive init: unlock, firmware upload, speed calibration — all from pure Rust. +**12+ MB/s** sustained read speeds on BD. Full init: unlock, firmware upload, speed calibration — all from pure Rust. Multi-lingual by design — the library outputs structured data and numeric error codes, never English text. Build any UI or localization on top. @@ -18,7 +18,7 @@ Part of the [freemkv](https://github.com/freemkv) project. ```toml [dependencies] -libfreemkv = "0.5" +libfreemkv = "0.6" ``` ## Quick Start @@ -29,6 +29,8 @@ use std::path::Path; // Open drive — profiles are bundled, auto-identified let mut session = DriveSession::open(Path::new("/dev/sr0"))?; +session.wait_ready()?; // wait for disc +session.init()?; // optional: unlock + calibrate for full speed // Scan disc — UDF, playlists, streams, AACS (all automatic) let disc = Disc::scan(&mut session, &ScanOptions::default())?; @@ -47,7 +49,7 @@ while let Some(unit) = reader.read_unit()? { ## What It Does - **Drive access** — open, identify, unlock, firmware upload, speed calibration, eject -- **12-23 MB/s reads** — auto-detects kernel transfer limits, full disc speed +- **12+ MB/s reads** — auto-detects kernel transfer limits, sustained full speed - **Disc scanning** — UDF 2.50 filesystem, MPLS playlists, CLPI clip info - **Stream labels** — 5 BD-J format parsers (Paramount, Criterion, Pixelogic, CTRM, Deluxe) - **AACS decryption** — transparent key resolution and content decrypt (1.0, 2.0 in progress) @@ -59,10 +61,10 @@ AACS decryption requires a KEYDB.cfg file. If available at `~/.config/aacs/KEYDB ## Architecture ```text -DriveSession — open, identify, unlock, read sectors +DriveSession — open, identify, init (optional), read sectors ├── ScsiTransport — SG_IO (Linux), IOKit (macOS) - ├── DriveProfile — per-drive unlock parameters (bundled) - └── Platform — MediaTek (supported), Renesas (planned) + ├── DriveProfile — per-drive parameters (bundled) + └── PlatformDriver — MediaTek (supported), Renesas (planned) Disc — scan titles, streams, AACS state ├── UDF reader — Blu-ray UDF 2.50 with metadata partitions