New crate freemkv-unlock-ld — the LibreDrive Unlocker implementation, split out of libfreemkv so the library stays firmware-clean on crates.io. Owns everything about HOW MediaTek MT1959 drives are firmware-unlocked: - profiles.json (the bundled drive-profile database + DriveProfile parse) - src/platform/mt1959/* (variant-A/B firmware upload + unlock handshake) - WRITE_BUFFER / MODE SELECT upload, unlock CDBs, disc-speed calibration Exposes LibreDrive::new() implementing libfreemkv::Unlocker (name/matches/ unlock). Plug it in with one line at process start: libfreemkv::register_unlocker(Box::new(freemkv_unlock_ld::LibreDrive::new())); Depends on libfreemkv (path-patched via gitignored .cargo/config.toml in dev) for the trait, ScsiTransport, DriveId, and Result. README notes it's the LibreDrive unlocker (attribution to be added by owner).
24 lines
867 B
Markdown
24 lines
867 B
Markdown
# freemkv-unlock-ld
|
|
|
|
The **LibreDrive** unlocker plugin for [libfreemkv](https://github.com/freemkv/libfreemkv).
|
|
|
|
libfreemkv ships only the `Unlocker` trait + registry and stays firmware-clean.
|
|
This crate owns *how* MediaTek MT1959 drives are firmware-unlocked: the bundled
|
|
drive-profile database (`profiles.json`), the firmware blobs, the
|
|
WRITE_BUFFER / MODE SELECT upload, the unlock CDBs, and the variant-A / variant-B
|
|
handshake logic.
|
|
|
|
## Usage
|
|
|
|
Register the unlocker once at process start, before any rip:
|
|
|
|
```rust
|
|
libfreemkv::register_unlocker(Box::new(freemkv_unlock_ld::LibreDrive::new()));
|
|
```
|
|
|
|
That single line is the whole plug. Any drive whose identity matches a bundled
|
|
profile is firmware-unlocked at drive-prep; everything else falls through to
|
|
libfreemkv's host-certificate AACS handshake.
|
|
|
|
<!-- TODO(owner): add MakeMKV / LibreDrive attribution. -->
|