Features: - Open drive identification via SPC-4 INQUIRY + MMC-6 GET CONFIGURATION - 141 supported drives with bundled profiles - MT1959 platform: unlock, calibrate, raw sector reads - DriveSpeed enum: BD1x-BD12x, DVD1x-DVD16x - Field names follow SPC-4 §6.4.2 and MMC-6 §5.3.10 standards - No proprietary fingerprints — open matching by SCSI fields - Zero config: profiles compiled into binary Tested on real hardware: HL-DT-ST BD-RE BU40N 1.03
2.1 KiB
Contributing to libfreemkv
Thank you for your interest in helping make disc archival accessible to everyone.
Contributing Drive Profiles
The most impactful contribution is adding support for new drives. If you have an optical drive that isn't listed in profiles/, we'd love your help.
How to submit drive data
-
Install the tool:
cargo install libfreemkv -
Run
freemkv-infowith your drive:freemkv-info /dev/sr0 --raw > my_drive.txt -
Open a pull request or issue with the output file attached.
That's it. The raw SCSI response data lets us build a profile for your drive.
What data is collected
freemkv-info --raw sends two standard SCSI commands to your drive:
- INQUIRY (opcode 0x12) — returns drive vendor, model, firmware version
- GET CONFIGURATION (opcode 0x46) — returns drive feature data
These are read-only, standard SCSI commands. They don't modify your drive or access any disc data. Every operating system sends these commands automatically when a drive is connected.
Priority: Pioneer drives
We especially need data from Pioneer Blu-ray drives (BDR-S08, BDR-S09, BDR-S12, BDR-S13, BDR-209, BDR-212, etc). If you have one, your contribution would help unlock support for 130+ Pioneer drive firmware versions.
Contributing Code
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-change) - Write tests for your changes
- Ensure
cargo testandcargo clippypass - Submit a pull request
Code Style
- Run
cargo fmtbefore committing - No
unsafewithout a comment explaining why - Public APIs need doc comments
- Error handling via
Result<T, Error>, no panics in library code
Architecture
src/scsi.rs— SCSI transport layer (SG_IO on Linux)src/profile.rs— Profile loading and matchingsrc/platform/— Per-chipset command implementationssrc/drive.rs— High-level DriveSession APIprofiles/— JSON drive profile data
License
By contributing, you agree that your contributions will be licensed under AGPL-3.0.