Matthew Jackson 0e943c3792 seam cleanup: /src generic-only; drop set_max from the trait
Per the seam audit: keep /src purely the generic contract and move everything
unlocker-specific into its module.

- ld's error type moves src/error.rs -> src/ld/error.rs; it owns the conversions
  From<scsi::ScsiError> (transport fault in) and From<ld::Error> for UnlockError
  (outcome out). src/scsi.rs keeps only the generic transport contract + a
  generic ScsiError; the trait no longer references any concrete error.
- Remove set_max_read_speed from the Unlocker trait — raising read speed is
  drive tuning, NOT bus removal. libfreemkv will issue a generic SET CD SPEED
  itself at drive-open (tracked).

29 tests pass.
2026-06-29 19:19:19 -07:00

freemkv-unlock

Unlocker plugins for libfreemkv.

libfreemkv ships only the pluggable Unlocker trait + registry and stays firmware-clean — it contains no concrete unlock code. Each crate in this workspace implements one unlocker and is registered into libfreemkv by a single line in the consuming binary:

libfreemkv::register_unlocker(Box::new(my_unlocker::MyUnlocker::new()));

Removing an unlocker is deleting that one line and the dependency (delete-to-comply).

Members

Each member is a self-contained unlocker plugin — see its own README for details.

License: AGPL-3.0-only.

S
Description
firmware unlock crate — build dep for kdb (libfreemkv git-deps it)
Readme MIT
463 KiB
Languages
Rust 100%