MakeMKV drive speed control

Discussion of LibreDrive mode, compatible drives and firmwares
Locked
mike admin
Posts: 4075
Joined: Wed Nov 26, 2008 2:26 am
Contact:

MakeMKV drive speed control

Post by mike admin » Wed Jul 22, 2020 6:45 pm

Starting from version 1.15.2 MakeMKV has an option for drive speed control. When enabled, MakeMKV will actively change drive speed - lower it down in case of read error or when the program scans the disc, and set the maximum speed when reading a large continuous file.
The extent of the drive speed change depends whether the drive is LibreDrive-enabled or not. Regular drives take the speed change request as a hint. LibreDrive-enabled drives (ones that have "Unrestricted read speed" taint) will obey the requested speed - the drive speed would never go higher than requested, and if possible, the drive speed can go over so-called "riplock limit", enabling truly fast disc read. In no cases drive speed would go over the "media speed" maximum - you can't destroy your drive by setting speed value too high.

Word of warning - forcing a specific read speed on LibreDrive-enabled drive can expose all sort of firmware bugs. For example forcing the minimum speed to 1x on some slim drives causes constant seek errors. Forcing a maximum speed for UHD media on "friendly" drives instantly activates the "sleep" bug. Please be careful when playing with this setting. Generally, setting maximum speed for compatible media on desktop drives or setting a constant 2x speed on slim drives works reliably well.

Given this feature is pretty advanced, as of version 1.15.2 it is not configurable via GUI yet. In order to change this setting one has to edit MakeMKV preferences by hand. Detailed description how to do this is below.

mike admin
Posts: 4075
Joined: Wed Nov 26, 2008 2:26 am
Contact:

Format of the speed setting string

Post by mike admin » Wed Jul 22, 2020 7:13 pm

The speed setting is just a single number - a target (maximum) read speed in megabytes per second.
This setting is per drive and per media type. Each drive and each media type - CD, Single-layer DVD, Triple-layer UHD, and so on - have each own setting. There is also a single "default" setting that applies when a setting for a particular media type is not set. All of it is per drive - each drive has its own settings for each media type.

All speed settings for a particular drive are stored in a single string, that contains one or more NAME=VALUE pairs separated by semicolon. Name describes a media type (or a default) and value is just a number - target (maximum) read speed in megabytes per second or a single "-" symbol.
Value "0" for a specific media type means "use default".
Value "0" for a default means "don't use speed control at all".
Value "-" for a specific media type or default means "don't use speed control at all".

In an absence of a token, the default value for any media type or default setting is "0". Which means, that by default MakeMKV will behave as pre-1.15.2, it won't issue any speed-related commands at all, letting the drive choose its own speed.

All possible "Name" tokens are

Code: Select all

0  - Default
D1 - Single-layer DVD
D2 - Double-layer DVD
B1 - Single-layer BD
B2 - Double-layer BD
U1 - Single-layer UHD
U2 - Double-layer UHD
U3 - Triple-layer UHD
Example speed strings:

"0=99" - Enable unlimited speed for all media. This is a good setting for WH16NS60.

"0=99;U1=-;U2=-;U3=-" - Enable unlimited speed for all media, except UHD. For UHD do not issue any speed control commands at all. This setting is for desktop "friendly" drives where changing speed instantly triggers the "sleep" bug for UHD media.

"B1=99;B2=99;U1=99;U2=99" - Just an example, enable max speed for BD and Single and Dual layer UHD, no speed control for DVD or Triple layer UHD. Same string may be written as "0=99;D1=-;D2=-;U3=-".

"0=8" - Set max speed to 2x for all media. This setting is useful for USB slim drives that run out of power when reading on fast speeds.

mike admin
Posts: 4075
Joined: Wed Nov 26, 2008 2:26 am
Contact:

Changing the speed setting

Post by mike admin » Wed Jul 22, 2020 7:28 pm

To change the speed string for a particular drive one has to edit MakeMKV preferences by hand. Despite not having a full GUI editor, MakeMKV still makes editing this setting somewhat easy.
First, you need to "activate" the drive. Launch MakeMKV so it sees the drive, open preferences, do not change anything, press OK, close MakeMKV. The program would write a default empty speed setting for all drives. Now you just have to edit the speed setting string. The name of the setting is speed_DRIVE_UNIQUE_ID, something like speed_HL-DT-ST_BD-RE_BU40N_1.00_211612201528_KNAS16L2381 . The location of MakeMKV preferences is OS-dependent.

Windows - settings are stored in registry. Open regedit and navigate to HKEY_CURRENT_USER\Software\MakeMKV . Then double-click the desired setting to edit. Note: Do not put quotes around registry values.

Mac OS X - settings are stored in a text file at ~/Library/MakeMKV/settings.conf . One way to edit the file - open terminal and type

Code: Select all

nano ~/Library/MakeMKV/settings.conf
Linux - settings are stored in a text file at ~/.MakeMKV/settings.conf . You know how to edit text files on Linux.

So, for example, to set the max speed to maximum on Max OS X and Linux , one would have the following string in settings.conf (for an example drive above):

Code: Select all

speed_HL-DT-ST_BD-RE_BU40N_1.00_211612201528_KNAS16L2381 = "0=99"

mike admin
Posts: 4075
Joined: Wed Nov 26, 2008 2:26 am
Contact:

Re: MakeMKV drive speed control

Post by mike admin » Thu Oct 01, 2020 9:17 pm

Starting with 1.15.3 MakeMKV manages read speed more actively. Specifically, it switches to the minimum speed not only on errors, but also around disc edges and layer breaks. Passing the layer switch on minimum speed eliminates many firmware bugs relayed to high-speed seek errors.

Locked