Page 1 of 1
What is LibreDrive?
Posted: Sat Feb 02, 2019 1:19 pm
by mike admin
A LibreDrive is a mode of operation of an optical disc drive (DVD, Blu-ray or UHD) when the data on the disc are accessed directly, without any restrictions or transformations enforced by drive firmware. A LibreDrive would never refuse to read the data from the disc or declare itself “revoked”. LibreDrive compatible drive is required to read UHD discs.
Please read below the overview of LibreDrive architecture.
What is an optical disc drive? It is a device that scans the surface of a disc with a laser and passes this information to a controlling software on a PC. Back in time when CD was invented, the optical drive was just that - device that scanned disc surface and passed this data to PC. Many data formats were invented at the time (sector mode 2, p/q channels, sub-channel-data,etc), but in the end it was all about positioning the laser pickup head, scanning the disc, and handling these data over for processing.
Things changed for DVD, with the CSS protection scheme. The disc was divided into two areas - one area could be read as usual. However in order to read the data from another area of the disc, the software had to know a certain secret key. This was part of so-called CSS protection and was used both for rights management and to enforce disc region price fixing. A drive locked for Europe would not allow reading the data from the disc that was locked for South East Asia, where exactly same disc could be bought at a cheaper price. This data partitioning was further “enhanced” for blu-ray. In the end, any regular optical disc drive has a complex set of rules that dictate what areas of the disc can be accessed on on what conditions.
The drive itself can easily read all the data technically. It is the drive embedded software (firmware) that “plays police” - decides what area of the disc can be accessed and on what conditions.
So, how can one read the data from any area on the disc? The data on the optical disc is encoded as a series of small cavities called pits, that are organized in a spiral called a track. Had we had a sharp enough eye, we could've seen them directly. One way is to use a microscope - with a microscope one can clearly see the pits, apply standard (publicly defined) decoding algorithm and get the raw data from the disc. Obviously, this is a rather time consuming and expensive method. There is however a third way - take the drive back to the basic level. Change the optical drive embedded software in a way that the drive becomes a “primitive” device - one that just positions a laser, reads and decodes the data. Make a drive free from “policing” functionality, a drive that just passes all data from the disc to the user. We call this drive a LibreDrive.
What happens in LibreDrive mode
Posted: Sat Feb 02, 2019 1:22 pm
by mike admin
When MakeMKV (or any other application that uses LibDriveIo library) talks to the drive, the library checks if drive firmware version is supported. If it is supported, the library uploads a small software (a firmware extension) into drive volatile memory. This extension exposes a new (alternative) interface to read any data from the disc. The firmware extension stays only in drive volatile memory (RAM) and drive firmware is not changed in any way. The moment you turn off your drive, it is gone without a trace. As long as your drive firmware is compatible with LibreDrive, and you do not update your drive firmware, the LibreDrive mode will work forever.
LibreDrive and AACS
Posted: Sat Feb 02, 2019 2:03 pm
by mike admin
One famous “feature” of AACS is a so-called host revocation. It was designed to ensure that only “approved” software can use your drive. Every Blu-ray disc contains a file that has a list of host keys known to be used by "unauthorized" software. This list has a version number. The moment you insert the disc into your drive, the drive checks if the list is newer than the one it knows about, and if it is, the drive re-flashes itself (updates firmware). With LibreDrive mode your drive just became immune to this nonsense.
In LibreDrive mode you always would be able to use this drive with MakeMKV or any other software that uses (open source) LibDriveIo library. No AACS revocation or other update would affect usability of your drive in LibreDrive mode.
Please note that LibreDrive mode is not about hacking or meddling with AACS code. In LibreDrive mode the updated software communicates to the drive hardware directly, not touching or hacking AACS DRM code in any way at all. So your drive will continue to self-revoke on MKB updates and require authentication before releasing key material to the "authorized" software - it is just with LibreDrive mode all of it is no longer relevant.
LibreDrive library and SDF.bin
Posted: Tue Mar 19, 2019 12:36 pm
by mike admin
LibreDrive functionality is implemented as part of open-source LibDriveIO library (at the time of this writing the library source code is not yet released). One of the main design goals of LibreDrive runtime is portability and stability of the code base. For this reason, the LibreDrive logic is data-driven. The library itself is just a simple interpreter, while all low-level logic for a particular drive is defined by a firmware-specific data blob (called SDF). This data blob defines how to perform a certain action (like reading a disc structure) by translating requested action (called Entrypoint) and its parameters into a set of firmware-specific SCSI commands.
The master data file that contains firmware-specific blobs for all known firmware versions is called SDF.bin . This file contains SDF blobs for each particular firmware and a master SDF blob that exports an API (yet another Entrypoint) to uniquely fingerprint a drive firmware version. This fingerprint data (called Firmware hash) is then used by the library to select an appropriate SDF blob for particular firmware.
This design ensures that the library itself would change very rarely, if at all. Adding support for a new drive model or firmware version doesn't require any changes to the library code – instead only update of SDF.bin file is required. Even adding a new major functionality, like flashing or dumping a firmware, doesn’t require library change – the host application just need to call updated API and SDF blob has to define a new Entrypoint.
With this approach it is possible to create a set of universal tools that are not tied to a specific drive platform, model or firmware version. A universal disc access library is already part of MakeMKV, and an universal firmware flashing tool is coming soon and will be released under open-source license as well.
LibreDrive firmware status
Posted: Tue Oct 15, 2019 12:06 pm
by mike admin
The list below shows all currently known firmware versions for which LibreDrive support is (or is not) possible.
Code: Select all
SDF v0061, total 232 firmwares
supported - MK firmware: 35 firmware(s):
ASUS-BC-12B1ST_b-3.01-WM00900-211711291725
ASUS-BC-12D2HT-3.01-WM00900-211711151926
ASUS-BW-16D1H-U-A204-WM01001-211901041044
ASUS-BW-16D1HT-3.10-WM01601-211901041014
HL-DT-ST-BD-RE_BE16NU50-1.02-NM00500-211711201953
HL-DT-ST-BD-RE_BH14NS50-1.01-NM00000-211711281847
HL-DT-ST-BD-RE_BH14NS58-1.01-NM00500-211711161557
HL-DT-ST-BD-RE_BH16NS40-NS50-1.03-NM00000-211711201943
HL-DT-ST-BD-RE_BH16NS50-1.01-NM00000-211712071200
HL-DT-ST-BD-RE_BH16NS55-1.04-NM01701-211901041342
HL-DT-ST-BD-RE_BH16NS58-1.01-NM00500-211711161545
HL-DT-ST-BD-RE_BH16NS60-1.00-NM00500-211804030945
HL-DT-ST-BD-RE_BP50NB40-NB50-1.02-NM00700-211811011016
HL-DT-ST-BD-RE_BP55EB40-NB50-1.01-NM00200-211711231626
HL-DT-ST-BD-RE_BP60NB10-1.00-NM00200-211711211720
HL-DT-ST-BD-RE_BU40N-BN11-0M00300-211711201351
HL-DT-ST-BD-RE_BU40N-BU12-OM01001-211902230922
HL-DT-ST-BD-RE_BU40N-FR07-JM02202-211801221536
HL-DT-ST-BD-RE_BU40N-1.03-NM00000-211810241934
HL-DT-ST-BD-RE_BU40N-1.01-RM00000-211712221221
HL-DT-ST-BD-RE_BU40N-U101-MM01201-211711301153
HL-DT-ST-BD-RE_BU50N-1.00-NM00100-211711211006
HL-DT-ST-BDDVDRW_CH12NS40-1.01-NM00400-211711211606
HL-DT-ST-BDDVDRW_UH12NS40-1.01-NM00200-211711231550
HL-DT-ST-BD-RE_WH14NS40-NS50-1.03-NM00600-211711211658
HL-DT-ST-BD-RE_WH16NS40-NS50-1.03-NM00600-211711211653
HL-DT-ST-BD-RE_WH16NS58-1.V5-NM00900-211802070957
HL-DT-ST-BD-RE_WH16NS60-1.02-NM00100-211810291936
HL-DT-ST-BD-RE_WP50NB40-NB50-1.01-NM00200-211711231646
ASUS-BW-16D1H-U-A203-WM01501-211801111117
ASUS-BW-16D1HT-3.03-WM00000-211801191558
HL-DT-ST-BD-RE_BH16NS55-1.03-NM00000-211711201704
HL-DT-ST-BD-RE_BP50NB40-NB50-1.01-NM00200-211711231615
HL-DT-ST-BD-RE_BU40N-1.02-NM01201-211711301218
HL-DT-ST-BD-RE_WH16NS60-1.01-NM00100-211711202000
supported - original vendor firmware: 68 firmware(s):
ASUS-BW-16D1H-U-A201-W000000-211601141358
ASUS-BW-16D1HT-3.00-W004504-211508101633
ASUS-BW-16D1HT-3.00-W006706-211511031110
ASUS-BW-16D1HT-3.01-W000800-211703311426
ASUS-BW-16D1HT-3.02-W000800-211711241413
HL-DT-ST-BD-RE_BE16NU50-1.00-N000800-211603171336
HL-DT-ST-BD-RE_BE16NU50-1.01-N000900-211606090920
HL-DT-ST-BD-RE_BE16NU50-1.01-N001101-211703130907
HL-DT-ST-BD-RE_BH14NS58-1.00-N004204-211512221504
HL-DT-ST-BD-RE_BH16NS40-NS50-1.00-N002502-211508191146
HL-DT-ST-BD-RE_BH16NS40-NS50-1.01-N000500-211511051001
HL-DT-ST-BD-RE_BH16NS40-NS50-1.02-N000200-211512111436
HL-DT-ST-BD-RE_BH16NS40-NS50-1.02-N001901-211703101637
HL-DT-ST-BD-RE_BH16NS50-1.00-N000500-211512230930
HL-DT-ST-BD-RE_BH16NS55-1.00-N000600-211508191151
HL-DT-ST-BD-RE_BH16NS55-1.01-N000500-211511051004
HL-DT-ST-BD-RE_BH16NS55-1.02-N000200-211512111440
HL-DT-ST-BD-RE_BH16NS55-1.02-N001901-211703101630
HL-DT-ST-BD-RE_BH16NS58-1.00-N002302-211512071657
HL-DT-ST-BD-RE_BH16NS58-1.00-N006206-211512221501
HL-DT-ST-BD-RE_BH40N-A1B0-D014214-211510131446
HL-DT-ST-BD-RE_BH40N-A1B0-D015815-211703101705
HL-DT-ST-BD-RE_BP40N-GP01-V001701-211504221450
HL-DT-ST-BD-RE_BP50NB40-1.00-N002602-211409031732
HL-DT-ST-BD-RE_BP50NB40-1.00-N004304-211412161016
HL-DT-ST-BD-RE_BP50NB40-1.00-N005505-211504221517
HL-DT-ST-BD-RE_BP50NB40-NB50-1.00-N000900-211609091048
HL-DT-ST-BD-RE_BP50NB40-NB50-1.00-N002802-211702151837
HL-DT-ST-BD-RE_BP55EB40-1.00-N001501-211504221534
HL-DT-ST-BD-RE_BP55EB40-NB50-1.00-N000700-211701030941
HL-DT-ST-BD-RE_BP55EB40-NB50-1.00-N002802-211702151828
HL-DT-ST-BD-RE_BU10N-GS01-V001701-211305020921
HL-DT-ST-BD-RE_BU20N-1.00-G002202-211405090917
HL-DT-ST-BD-RE_BU20N-1.00-G004504-211412160950
HL-DT-ST-BD-RE_BU20N-1.00-G005705-211504221429
HL-DT-ST-BD-RE_BU20N-1.00-N005305-211504211939
HL-DT-ST-BD-RE_BU20N-T.02-V001301-211405091428
HL-DT-ST-BD-RE_BU40N-1.00-N003103-211612201528
HL-DT-ST-BD-RE_BU40N-1.00-R002202-211609090954
HL-DT-ST-BD-RE_BU40N-1.00-R004504-211703231903
HL-DT-ST-BD-RE_BU40N-1.01-N000000-211706291017
HL-DT-ST-BD-RE_BU40N-A101-D000700-211703131630
HL-DT-ST-BD-RE_BU40N-BU10-O002602-211701060941
HL-DT-ST-BD-RE_BU40N-BU10-O003703-211705301728
HL-DT-ST-BD-RE_BU40N-FR07-J001101-211612201651
HL-DT-ST-BD-RE_BU40N-T.00-V003403-211606241658
HL-DT-ST-BD-RE_BU50N-0420-N000000-211605241901
HL-DT-ST-BD-RE_BU50N-CCT5-V000700-211705182023
HL-DT-ST-BD-RE_BU50N-GE02-V000700-211705182030
HL-DT-ST-BD-RE_WH14NS40-NS50-1.00-N001401-211508180940
HL-DT-ST-BD-RE_WH14NS40-NS50-1.01-N000500-211511050956
HL-DT-ST-BD-RE_WH14NS40-NS50-1.02-N000100-211512111503
HL-DT-ST-BD-RE_WH14NS40-NS50-1.02-N001401-211703101655
HL-DT-ST-BD-RE_WH16NS40-NS50-1.00-N001401-211508180932
HL-DT-ST-BD-RE_WH16NS40-NS50-1.02-N000100-211512111459
HL-DT-ST-BD-RE_WH16NS40-NS50-1.02-N001401-211703101650
HL-DT-ST-BD-RE_WH16NS60-1.00-N000500-211704251756
HL-DT-ST-BD-RE_WP50NB40-1.00-N000400-211502161437
HL-DT-ST-BD-RE_WP50NB40-1.00-N001501-211504221546
HL-DT-ST-BD-RE_WP50NB40-NB50-1.00-N000800-211701031453
HL-DT-ST-BD-RE_WP50NB40-NB50-1.00-N002802-211702151823
hp-BD-RE_BU20N-BU24-P005005-211504221344
hp-BDRW_BU20N-BW20-P018518-211504221413
hp_HLDS-BDRE_BU40N-BW40-P01C01C-211608101011
hp_HLDS-BDRE_BU40N-BW41-P000200-211608161528
hp_HLDS-BDRE_BU40N-BW41-P001101-211612220920
hp_HLDS-BDRE_BU50N-BW50-P01C01C-211608101014
hp_HLDS-BDRE_BU50N-BW50-P01D11D-211612221052
unsupported - old firmware type 1: 20 firmware(s):
TSSTcorp-BDDVDW_SE-506BB-TS00-02.20-
TSSTcorp-BDDVDW_SE-506BB-TS00-11.13-
TSSTcorp-BDDVDW_SE-506BB-TS01-05.21-
TSSTcorp-BDDVDW_SE-506CB-TS00-12.12-
TSSTcorp-BDDVDW_SE-506CB-TS01-05.28-
TSSTcorp-BDDVDW_SE-506CB-TS02-01.07-
TSSTcorp-BDDVDW_SN-506BB-AF04-04.22-
TSSTcorp-BDDVDW_SN-506BB-GT01-01.31-
TSSTcorp-BDDVDW_SN-506BB-GT06-01.05-
TSSTcorp-BDDVDW_SN-506BB-GT08-06.17-
TSSTcorp-BDDVDW_SN-506BB-SB00-07.10-
TSSTcorp-BDDVDW_SN-506BB-TM01-09.23-
TSSTcorp-DVDWBD_SE-406AB-TS00-04.20-
TSSTcorp-DVDWBD_SH-B123A-MD03-03.31-
TSSTcorp-DVDWBD_SH-B123A-SB03-12.03-
TSSTcorp-DVDWBD_SH-B123A-SB04-03.31-
TSSTcorp-DVDWBD_SH-B123L-SB00-05.11-
TSSTcorp-DVDWBD_SH-B123L-SB02-08.16-
TSSTcorp-DVDWBD_SH-B123L-SB03-12.03-
TSSTcorp-DVDWBD_SH-B123L-SB04-03.31-
unsupported - old firmware type 2: 56 firmware(s):
ASUS-BW-12B1ST_a-1.00-E101701-211304231147
ASUS-BW-14D1XT-1.00-M103703-210000000000
HL-DT-ST-BD-RE_BE14NU40-1.00-N0G43G4-211206262029
HL-DT-ST-BD-RE_BE14NU40-1.01-N001601-211406161935
HL-DT-ST-BD-RE_BE14NU40-1.01-N003803-211406251441
HL-DT-ST-BD-RE_BE14NU40-1.01-N005905-211408221631
HL-DT-ST-BD-RE_BH14NS40-1.00-N1A11A1-211201171401
HL-DT-ST-BD-RE_BH14NS40-1.00-N1A37A3-211205021346
HL-DT-ST-BD-RE_BH14NS40-1.00-N1A44A4-211206161823
HL-DT-ST-BD-RE_BH14NS40-1.02-N0A02A0-211312061453
HL-DT-ST-BD-RE_BH14NS40-1.03-N0A09A0-211405071012
HL-DT-ST-BD-RE_BH16NS40-1.00-N1A29A2-211210311917
HL-DT-ST-BD-RE_BH16NS40-1.01-N1A12A1-211304042250
HL-DT-ST-BD-RE_BH16NS40-1.02-N0A02A0-211312061535
HL-DT-ST-BD-RE_BH16NS40-1.03-N0A03A0-211403261115
HL-DT-ST-BD-RE_BH16NS40-1.03-N0C06C0-211505261714
HL-DT-ST-BD-RE_BH16NS48-1.02-N0A02A0-211312061545
HL-DT-ST-BD-RE_WH14NS40-1.00-N1A26A2-211202091126
HL-DT-ST-BD-RE_WH14NS40-1.00-N1A37A3-211204261630
HL-DT-ST-BD-RE_WH14NS40-1.00-N1A44A4-211206161828
HL-DT-ST-BD-RE_WH14NS40-1.01-N1A12A1-211304042325
HL-DT-ST-BD-RE_WH14NS40-1.02-N0A02A0-211312061523
HL-DT-ST-BD-RE_WH14NS40-1.03-N0A09A0-211403261105
HL-DT-ST-BD-RE_WH14NS40-1.03-N0C08C0-211505261653
HL-DT-ST-BD-RE_WH16NS40-1.00-N1A12A1-211304041441
HL-DT-ST-BD-RE_WH16NS40-1.01-N0A02A0-211312061658
HL-DT-ST-BD-RE_WH16NS40-1.02-N0A00A0-211405071026
HL-DT-ST-BD-RE_WH16NS40-1.02-N0C00C0-211505261638
HL-DT-ST-BD-RE_WH16NS48-1.D3-N000700-211602041103
HL-DT-ST-BDDVDRW_CH12NS30-1.00-N0A13A1-211303221728
HL-DT-ST-BDDVDRW_CH12NS30-1.00-N0A20A2-211306131532
HL-DT-ST-BDDVDRW_CH12NS30-1.01-N0A02A0-211312061614
HL-DT-ST-BDDVDRW_CH12NS30-1.02-N0A05A0-211404241908
HL-DT-ST-BDDVDRW_CH30N-AS00-S002102-211306141459
HL-DT-ST-BDDVDRW_CP50NS20-1.00-N004904-211409041512
HL-DT-ST-BDDVDRW_CP50NS20-1.00-N007307-211412161028
HL-DT-ST-BDDVDRW_CU20N-1.00-N003203-211412161022
HL-DT-ST-BDDVDRW_UH12NS30-1.00-N0A13A1-211303221725
HL-DT-ST-BDDVDRW_UH12NS30-1.00-N0A20A2-211306131457
HL-DT-ST-BDDVDRW_UH12NS30-1.01-N0A02A0-211312061625
HL-DT-ST-BDDVDRW_UH12NS30-1.02-N0A04A0-211403261141
HL-DT-ST-BDDVDRW_UH12NS30-1.03-N0A05A0-211404241900
HL-DT-ST-BDDVDRW_UH12NS40-1.00-N000200-211602231042
HL-DT-ST-DVDRWBD_CH30N-A101-D000300-210000000000
hp-BD-RE_BH40N-B7C6-P0A12A1-211303262313
hp-BDDVDRW_CH30L-BC56-P0B00B0-210000000000
hp-BDDVDRW_CU10N-B1C0-P015115-211307031530
hp-DVDWBD_SN-406AB-HH01-0116-
TSSTcorp-BDDVDW_SE-506AB-TS00-09.06-
TSSTcorp-BDDVDW_SE-506AB-TS01-01.31-
TSSTcorp-BDDVDW_SN-506AB-SB00-01.31-
TSSTcorp-DVDWBD_SN-406AB-AS02-03.05-
TSSTcorp-DVDWBD_SN-406AB-SB00-10.05-
TSSTcorp-DVDWBD_SN-406AB-SC00-06.18-
TSSTcorp-DVDWBD_SN-406AB-TM00-07.11-
TSSTcorp-DVDWBD_SN-406AB-TM01-05.15-
upgrade required - MK firmware available: 44 firmware(s):
ASUS-BC-12B1ST_b-1.00-_130614-x-211306141158
ASUS-BC-12B1ST_b-3.00-W004704-211512151340
ASUS-BC-12B1ST_b-3.01-W000900-211711291725
ASUS-BC-12D2HT-1.00-_130614-x-211306141200
ASUS-BC-12D2HT-3.00-W004704-211512091147
ASUS-BC-12D2HT-3.01-W000900-211711151926
ASUS-BW-16D1H-U-A101-W000600-211412080959
ASUS-BW-16D1H-U-A203-W001501-211801111117
ASUS-BW-16D1H-U-A204-W001001-211901041044
ASUS-BW-16D1HT-1.01-W100600-211302051930
ASUS-BW-16D1HT-3.03-W000000-211801191558
ASUS-BW-16D1HT-3.10-W001601-211901041014
HL-DT-ST-BD-RE_BE16NU50-1.02-N000500-211711201953
HL-DT-ST-BD-RE_BH14NS50-1.01-N000000-211711281847
HL-DT-ST-BD-RE_BH14NS58-1.01-N000500-211711161557
HL-DT-ST-BD-RE_BH16NS40-NS50-1.03-N000000-211711201943
HL-DT-ST-BD-RE_BH16NS50-1.01-N000000-211712071200
HL-DT-ST-BD-RE_BH16NS55-1.03-N000000-211711201704
HL-DT-ST-BD-RE_BH16NS55-1.04-N001701-211901041342
HL-DT-ST-BD-RE_BH16NS58-1.01-N000500-211711161545
HL-DT-ST-BD-RE_BH16NS60-1.00-N000500-211804030945
HL-DT-ST-BD-RE_BP50NB40-NB50-1.01-N000200-211711231615
HL-DT-ST-BD-RE_BP50NB40-NB50-1.02-N000700-211811011016
HL-DT-ST-BD-RE_BP55EB40-NB50-1.01-N000200-211711231626
HL-DT-ST-BD-RE_BP60NB10-1.00-N000200-211711211720
HL-DT-ST-BD-RE_BU40N-1.01-R000000-211712221221
HL-DT-ST-BD-RE_BU40N-1.02-N000100-211711202017
HL-DT-ST-BD-RE_BU40N-1.02-N001201-211711301218
HL-DT-ST-BD-RE_BU40N-1.03-N000000-211810241934
HL-DT-ST-BD-RE_BU40N-BN11-0000300-211711201351
HL-DT-ST-BD-RE_BU40N-BU12-O001001-211902230922
HL-DT-ST-BD-RE_BU40N-FR07-J002202-211801221536
HL-DT-ST-BD-RE_BU40N-U101-M001201-211711301153
HL-DT-ST-BD-RE_BU50N-1.00-N000100-211711211006
HL-DT-ST-BD-RE_WH14NS40-NS50-1.03-N000600-211711211658
HL-DT-ST-BD-RE_WH16NS40-NS50-1.03-N000600-211711211653
HL-DT-ST-BD-RE_WH16NS58-1.V1-N002102-211711201947
HL-DT-ST-BD-RE_WH16NS58-1.V2-N000100-211711231023
HL-DT-ST-BD-RE_WH16NS58-1.V5-N000900-211802070957
HL-DT-ST-BD-RE_WH16NS60-1.01-N000100-211711202000
HL-DT-ST-BD-RE_WH16NS60-1.02-N000100-211810291936
HL-DT-ST-BD-RE_WP50NB40-NB50-1.01-N000200-211711231646
HL-DT-ST-BDDVDRW_CH12NS40-1.01-N000400-211711211606
HL-DT-ST-BDDVDRW_UH12NS40-1.01-N000200-211711231550
Legend:
supported - The firmware is fully supported
unsupported - old firmware type 1 - The firmware uses a very old memory layout and codebase. While hardware is supported, it is very unlikely that firmware from this list would be ever supported.
unsupported - old firmware type 2 - The firmware uses an old memory layout. Currently these are not supported, but support may be added at any time - all necessary vendor commands are exposed by the firmware. Supporting these is somewhat time-consuming process, and the current plan is to add support on secondary basis, only after other features are done. Note that for many drives the next version of official firmware is supported.
This list will be updated periodically.