RSS Feed
Jan 24

HowTo: Rip a Blu-ray movie using an LG GGC-H20L Blu-ray drive with Ubuntu

Posted on Saturday, January 24, 2009 in Tutorials

The Blu-ray disc format has brought with it the ability to easily provide the next generation of High-Definition 1080p movie content. There’s just one problem – Ubuntu and Linux in general has no official support for Blu-ray, and its encryption scheme is vastly different to that of DVD – it’s not just a simple case of installing a library like the libdvdcss2 library for decrypting DVD’s – the protection is done both at a software and hardware level.

This article discusses how I used my recently purchased LG GGC-H20L Blu-ray ROM drive to successfully read and watch movies using Ubuntu Intrepid.

DISCLAIMER: This article describes decrypting BD titles using an Intel or AMD based PC with Ubuntu Linux. While you can use a PlayStation3′s BD drive to read and decrypt a title using known decryption keys using the PS3 version of Ubuntu, at this time of writing you cannot use Ubuntu installed on a PlayStation3 console to identify unknown decryption keys of a given BD title because the application used to derive those keys from the disc is not available for the PPC processor used by the PS3. You must use a consumer BD-ROM drive on an Intel or AMD based PC instead.

Hang on, you say – if there is no support for playback of Blu-ray movies on Linux, then why buy a Blu-ray drive if you can’t watch the movies? Well, I might not be able to watch them directly, but I can certainly rip the little buggers and watch a file version of it instead. But wait again, you say, if there’s no official Blu-ray support, and you can’t watch the discs directly, then how on earth do you rip them?? I’m glad you asked, and even if you didn’t ask, I’m about to tell you anyway. :)

First up, a little Blu-ray 101.

Blu-ray movies feature Digital Rights Management (DRM). Like DVD’s before it, most Blu-ray movies are encrypted. This is to stop those naughty pirate types from making illegal backups of the movie and giving or selling it to their mates. In the case of DVD’s, however, there was only one decryption key which was eventually discovered and from then on allowed all DVD’s to be easily decrypted using a simple library (called libdvdcss2). The movie industry as a whole were not impressed by this and insisted that the next format be more difficult (preferably impossible) to decrypt, so Blu-rays (and HD-DVD’s, but I’ll concentrate on Blu-ray for this article) each have a different decryption key now. But to complicate this further, this key is kept hidden from you by an authentication mechanism to ensure that there isn’t a repeat of the De-CSS scandal that brought the DVD encryption scheme undone.

Each and every player out there, hardware or software, has a unique player authentication key which is passed to the Blu-ray optical drive, essentially like giving your passport to Customs at the country border, to validate whether or not you are legally authorised to  playback a movie. If the drive has not got a blacklisted record of your authentication key, and the key is accepted as a generally valid key that has been paid for, THEN the drive will give up the movie’s decryption key and movie playback can commence.

Blacklist?? What blacklist? Well, like DVD players, it’s not difficult to pick up a Blu-ray player’s authentication key that is used to prompt the drive for the disc’s decryption key, after all, it has to be held in memory somewhere. Once an industry authority discovers that an authentication key has been compromised, it is added to a blacklist so that it will not work anymore. This is why hardware Blu-ray players need to be firmware-upgradable, and why software players need to be upgraded to the next version periodically with patches, etc, so that new, non-blacklisted authentication keys can be provided.

OK, that sounds all well and good, but if the Blu-ray drive itself is doing the blacklisting, how exactly does it know when a given authentication key is no longer valid? Simple – its blacklist will get updated with the next latest-release movie you buy.

Say what?

Every Blu-ray movie you buy has a little file on the disc under the “AACS” folder called “ContentRevocation.lst”. This file contains a complete list of blacklisted authentication keys for the drive to update itself with, and – get this – you can’t stop the drive loading it. Well, actually to be more accurate this file is simply a copy of the same list that is actually hidden in a non-tamperable, non-user-readable area elsewhere on the disc for the drive to read, but basically the instant you stick that movie disc in, the hidden version of this file is read and the drive automatically updates its blacklist right away with any new blacklist data, even before the disc icon appears on your desktop. Sneaky, huh?

So the next time your legal (or more specifically, pirated) copy of PowerDVD or whatever tries to playback a movie, all of a sudden you’ll see an error message instead saying that your player’s authentication key has been revoked – thus the movie is now unplayable. What’s worse is that you won’t be able to watch any of your older discs that worked previously either! It’s this exact reason that many people have called for the Blu-ray (and HD-DVD) formats to be boycotted.

But not all is lost. Remember, this is an encryption technology created by Man, and therefore can be broken by Man with a bit of help from the Open Source Community at large. :) With a little help from a few external resources including the Ubuntu Community Documentation and the Doom9 forums, I discovered a plethora of projects by various people, from dumping discs to breaking the encryption and authentication.

On the surface are general applications to dump the movie, decrypted, to a file. One of the best projects is DumpHD which is a Java app that provides a nice easy to use GUI that can rip a movie with a minimum of fuss (see detail about how to use it later in this article), however it requires that you already know what the decryption key for a given movie is which you can only obtain if you have authenticated with the drive. If you have the decryption key already, however, then authentication is not necessary and you can rip the movie right away without a problem, so this project is heavily supported by people posting up various decryption keys for all sorts of movie releases. The problem with this approach, however, is that different countries usually get different releases of the same movie, so for example a release of “Batman Begins” in Australia might have a completely different decryption key to the release of “Batman Begins” in America or Europe. This is not always the case of course, a good example being the Ewan McGregor movie “The Island” – the Australian release is actually the UK release, right down to the age-rating and film-office classification markings on the disc itself – only the box bears any Australian ratings markings!

Click for full size
Click for full size (228K)

So, how do you find out the decryption key of your locally purchased movie then? You don’t want to keep buying a commercial player, especially one that doesn’t run under Ubuntu, just to get a valid authentication key. There’s got to be a better way! Well, there is! How about we just bypass the authentication procedure altogether? How? Again, through another great contribution on the Doom9 forums.

The LG GGC-H20L drive is but one of many Blu-ray/HD-DVD drives which have had their firmware reverse-engineered. Firmware is largely just a computer program that operates the drive. Since the firmware is upgradable to fix bugs and add new features to the drive, it means the program can be altered by a third party. A Doom9 contributor has provided modified firmware for various popular drives, including the GGC-H20L that effectively allow the drive to ignore the authentication procedure no matter what player authentication key is provided, blacklisted or not, thus making the drive give up the decryption key for the Blu-ray movie currently inserted every time!

EDIT 10th Jan 2012: It appears the firmware is no longer available from the Doom9 forums as it has not been updated in quite some time. Here is a mirror of the v1.03 modified firmware to suit the LG GGC-H20L only.

In the case of the LG GGC-H20L that I use, the firmware is provided as a Windows Executable file. There are three ways to run this, either via a native Windows installation on your PC, a virtualised Windows installation on your PC, or via the Wine compatibility layer. I successfully upgraded my drive using the Wine option as follows:

WARNING: The following information can damage or even brick your LG Blu-ray drive if not followed correctly, or if you have a power failure during firmware update. You proceed at your own risk and I will not be held responsible for any damage incurred by your drive, or for loss of hair being torn out, by following these instructions.

  1. You need a normal Wine installation. If you’ve never installed it before, then type in:
    $ sudo apt-get install wine

    …and this will install the Ubuntu-repository version of Wine.

  2. Since we’ll be modifying a physical device, only root can do that, so we will need to use sudo to execute the firmware upgrade, however Wine will not work as root until we change permissions of your Wine configuration in your Home directory, so type in the following to make root the owner of your Wine configuration:
    $ sudo chown -R root:root ~/.wine
  3. Now execute the downloaded firmware file:
    $ sudo wine GGC-H20L_1.03_VolumeID_Patch.exe
  4. The Upgrade GUI will appear. Click on the button to commence update and let it do its thing. After a minute or two, it will tell you that the drive firmware has been successfully updated. At this point, you will need to reboot your PC, but before you do, remember to change the owner of your Wine installation back to yourself. If your login was “jbloggs”, then you’d type in:
    $ sudo chown -R jbloggs:jbloggs ~/.wine

Upon returning from restart, every time you query the drive for the inserted disc’s decryption key, the drive will now happily give it to you without question. Nice.

So how do we query the drive for that decryption key anyway? A simple tool to do this is aacskeys (version 0.4.0c at this time of writing, but check further along the thread for newer releases) written by another Doom9 member, which queries the drive and tells you its Volume Unique Key and its Disc ID, which you can then copy and paste into DumpHD’s keys config file and happily begin dumping your movie.

$ ./aacskeys /media/cdrom aacskeys 0.3.6 by arnezami, KenD00 Volume Unique Key:              5D9BCD44522B6940F8705400DA612ED9 Unit Key File Hash (Disc ID):   837487B4D6F614D5B4D5F566387B41C2D284F393 $ 

If your drive’s firmware was not patched, instead of seeing the Volume Unique Key and Disc ID, you would get this error message instead: “The given Host Certficate / Private Key has been revoked by your drive.”.

We now need to take the output data and copy it to DumpHD’s “keydb.cfg” file. Each key is placed on its own line in the following format:

DISC ID = Movie Title | D | YYYY-MM-DD | V | VOLUME UNIQUE KEY

Thus in the example above, we would enter:

837487B4D6F614D5B4D5F566387B41C2D284F393 = The Island | D | 2007-03-22 | V | 5D9BCD44522B6940F8705400DA612ED9 

Now technically it appears that the date is largly irelevant, and most people just use 0000-00-00 instead of a real date (which is supposed to be the file date of the “Unit_Key_RO.inf” file in the “AACS” folder of the disc). I have tested this and I can’t see any difference in how DumpHD handles the disc.

Once you have finished editing the keydb.cfg file, save it.

NOTE: DumpHD (below) can now use AACSKeys directly, saving you having to edit to the keydb.cfg file manually, because DumpHD now does all the work for you. See this article for more information.

Since DumpHD is a Java application, you will need Java installed to run it. If you haven’t already got it installed, you can install it with the following command:

sudo apt-get install java-common

…or more realistically you should install it as part of the ubuntu-restricted-extras package which also installs a number of other useful packages:

sudo apt-get install ubuntu-restricted-extras

Once that is done, launch DumpHD by simply running the “dumphd.sh” script by either double-clicking on it and select “Run” when prompted, or in a terminal, change to where you extracted the DumpHD program and type in:

$ sh ./dumphd.sh

When loaded, you will be presented with the following interface:

Click for full size
Click for full size (63K)

At the top-right of the window, there is the Source Browse button. Click on it and a new window will appear. In that window, type in or select “/media/cdrom” and then click OK. After a few seconds, the disc should be identified and you will see the window change as follows:

Click for full size
Click for full size (85K)

Now all you need to do is click on the Destination Browse button, specify a place to store the decrypted movie and then click the Dump button to start the whole process! Once finished, you will have every video title found on the disc dumped in its originally encoded (video-wise) format, but without DRM. You can then use MPlayer to play these files directly. Generally the movie itself is the largest file, so in the case of my example, it’s the “00000.m2ts” file. I can play it simply with:

$ mplayer -fs 00000.m2ts

The -fs parameter plays the movie full-screen. I can toggle audio tracks using the hash (#) key (as for some reason, English is generally not the first audio track on the disc).

Remember that Blu-ray movies are very large. In my example, “The Island” is a good 21GB! It’s now up to you to decide whether or not you want to provide storage for your rips of this size, or whether or not you want to compress them down to save space. In my case, I was able to compress the movie down to about 4GB with negligible quality loss at a bitrate of 1200 using the x264 codec. I’ll probably increase this bitrate and allow the filesize to go to 8GB so I can maintain as near-perfect image quality to the original Blu-ray as possible. I personally choose to preserve the audio tracks as-is without down-converting them – they really don’t eat up that much space – a few hundred megabytes only.

Happy ripping!

Woah! After I’ve ripped the movie, it plays but it’s all corrupted! What’s going on?

The movie you have ripped is likely protected using BD+ protection. This is where some or much of the movie is deliberately corrupted to annoy you. I have written a guide on how to deal with this and correct the corruption here.

10 people like this post.

Bring on the comments!

  1. [...] Instead, my primary use of this drive will be to make file backups of decrypted Blu-ray movies I purchase and watch them that way instead (because I’m a sucker for high-definition). I have written up a separate post detailing how I did this, the results of which are playable in both Totem and MPlayer – you can read it here. [...]

  2. Rick Boyer says:

    I just stopped by your blog and thought I would say hello. I like your site design. Looking forward to reading more down the road.

  3. HyRax says:

    Cheers, Rick – thanks for visiting and taking the time to post a comment! :)

  4. jason says:

    Anybody ever heard of a .m2ts file not actually proven, but mplayer will play the file with several audio tracks, but doesn’t have english as an option. Have seen this on several movies, while others work fine. Is this mplayer or ffmpeg problem likely.

  5. HyRax says:

    Yes, you’ll find that the English track is stored in another file. It’s a deliberate move by movie studios to annoy the heck out of you when ripping titles.

  6. Gizmonty says:

    Hey HyRax,

    have just been trying to follow your instructions after you directed me here from Whirlpool. I’ve got me one of these same drives, but when I run the firmware updater it comes up with “Can’t find the target drive”. Any ideas?

    When I first ran wine it came up with an error because I didn’t have MFC42.DLL. I downloaded this file from somewhere and this seemed to fix that problem. Should I have found a particular version of that file or is it not important?

    Hoping you can help.

  7. HyRax says:

    Did you run Wine as root? The application will not be able to access the drive to flash it without root access. You might also want to try using the latest and greatest version of Wine instead of the Ubuntu-supplied version.

    Also make absolutely sure that the firmware you are using exactly matches the model of your drive.

    The firmware archive I used was called “GGC-H20L_1.03_EW_.zip”. I haven’t checked to see if there’s a newer firmware than this since I wrote this article, but I’m still using 1.03 with no problems.

    Going through my own Wine setup, I note that I DO have the MFC42.DLL file though I don’t recall manually installing it.

  8. Gizmonty says:

    Thanks. Definitely the right firmware version – “sudo hdparm -L /dev/dvd” returns the following;

    /dev/dvd:

    ATAPI CD-ROM, with removable media
    Model Number: HL-DT-ST BDDVDRW GGC-H20L
    Serial Number: xxxxxxxxxxx
    Firmware Revision: 1.03

    I’m definitely running as root, so I’m not sure what the issue is. I have tried updating Wine from the beta repositories but they seem to be offline at the moment and I’m not too keen to install from source. I’ll try again later.
    I may see if I can install XP and run it from there unless you have any other suggestions.

  9. HyRax says:

    Hmmm – well, the only difference I see so far is that I refer to my drive as /dev/scd0 but that won’t make a lick of difference when flashing it.

    My Wine is also from the WineHQ repositories – you should not need to compile it from source.

    Also, don’t post your serial number to the Internet, because the manufacturer can blacklist it which would prevent you ripping anything – flashed or not. I’ve deleted it for you.

    Short of using a temporary Windows installation (perhaps a VM), I’m not sure what else you can do… Sorry! :(

  10. [...] A fair while back now, I wrote an article detailing how to decode Blu-ray titles using Ubuntu and an LG GGC-H20L Blu-ray optical drive. [...]

  11. John says:

    I am trying to follow the instructions and getting this error in DumpHD:

    Host Nonce (Hn): 2923BE84E16CD6AE529049F1F1BBE9EBB3A6xxx

    AGID: 00

    The given Host Certficate / Private Key has been revoked by your drive.

    ERROR: SENDHOSTCHAL: SK: 0×5, ASC: 0x6F, ASCQ: 0×00, errnr: -2

    aacskeys ERROR: SENDHOSTCHAL: SK: 0×5, ASC: 0x6F, ASCQ: 0×00, errnr: -2
    Failed retrieving keys from source

    What do I wrong?
    Thanks.

  12. HyRax says:

    Your drive has rejected the player certificate used by DumpHD.

    The certificate is blacklisted and will not work with an ordinary Blu-ray drive, therefore you must use a drive that has had its firmware modified to ignore the result of the certificate check (or bypass the check altogether), or use a drive that has been specifically manufactured without the player certificate check (such as many imported drives from China).

    In my case, as per this tutorial, I use a drive with modified firmware which allows me to use any player certificate, blacklisted or not.

    Until you sort that out, DumpHD will not be able to retrieve the two decoding keys (the Disc ID and the Unique Volume ID) for that title.

    ALTERNATIVELY, if you can get the title’s keys from someone else, then DumpHD can use that. The Doom9 forums have a thread trying to tabulate as many keys as they can, but the majority are for American releases, not European or Australian releases which generally use different keys despite being the same movie.

  13. Gizmonty says:

    I eventually got Vista installed on a spare box (man that’s a horrible OS) and transferred the drive into it. The firmware updated fine and after putting the drive back in my Ubuntu machine, aacskeys works fine. Now to get dumping!

    BTW, I tried a VM install of XP as well and that didn’t work. Got the same error. Thought it might have been a permissions issue so tried sudo chmod 777 /dev/sr0. After this, the firmware updater actually did find the drive but gave an error when it tried to do the update.

  14. HyRax says:

    Strange. Well, at least you have it flashed now – it won’t give you any further trouble now.

    Happy ripping!

  15. Jonny says:

    Got my hands on a ggw-h20l today. thought these drives were not available any more as they weren’t restocked in almost any store i checked. Was pretty cheap and included 4 free BD rentals. with your tutorial and the firmware hack i was able to rip and play a bluray movie in almost no time :)
    Many thanks for the great help

  16. Gizmonty says:

    Hyrax,

    It might be worth updating your link to point to aacskeys-0.4.0c so people won’t choke on new disks (like I just did).

  17. HyRax says:

    Good idea – fixed.

  18. Joe says:

    How do non-networked blu-ray players get updated when their keys are blacklisted?

  19. HyRax says:

    They don’t. That’s why manufacturers of player software must release updates to their software with new player keys which the end user downloads and installs manually. It’s why all consumer hardware Blu-Ray players are firmware updateable. It’s why the PS3′s firmware updates also include updated keys for the BD player component.

    However if you have a BD drive running hacked firmware that ignores the Player’s certificate, blacklisted or not, then it becomes irrelevant and you can concentrate on the task of reading the disc.

  20. Pablo says:

    Hi HyRax,

    I just found your site. Thanks so much for all your help. This makes everything so much simpler – your instructions are so clear.

    I bought this LG drive and I’m wondering if the method outlined in this post is still the best way forward (or is it out-dated now?) I’m going to be using Ubuntu 10.04 with my drive and I want to make sure I don’t make a brick of it …

    Thanks,

    Pablo.

  21. HyRax says:

    My instruction should work fine under 10.04. Luckily the update app is a bit intelligent and will not proceed if it senses something is wrong.

    If in doubt, use a real Windows installation. It’s a one-off process – once done, you’ll never need to touch it again.

  22. Pablo says:

    Thanks for the reply! Would it matter which version of Windows I use? I’m thinking of downloading the 90 day trial of Windows 7 Enterprise Edition and using that. Would that work?

    Thanks again,

    Pablo.

  23. HyRax says:

    I see no reason why it wouldn’t work, short of Microsoft crippling the trial version in some way (unlikely until your trial period is over).

  24. Pablo says:

    Just realised that my Blu-Ray drive isn’t actually the GGC-H20L. It’s the CH10LS20 (very similar box though …)

    If I was to follow your instructions (except for patching the firmware – i.e. use DumpHD and aacskeys), would there be a danger of turning the drive into a brick? Is there a better method you would recommend?

    Thanks!

    Pablo.

  25. HyRax says:

    Only the firmware patching can potentially brick you – everything else are just apps which for AACSKeys in particular, will error out on an unpatched drive.

    Look around, no doubt someone has patched the firmware that suits your drive already.

  26. Pablo says:

    Alright, so I’ve now bought the GGC-H20L (I think I mentioned on another page of yours’ that I had the CH10LS20 when I thought I had the GGC-H20L).

    Anyway, I seem to have the same problems Gizmonty was having. To start with, it couldn’t find that MFC42.DLL file. So I installed it using winetricks.

    Now it’s able to run the driver updater program, but it says ‘Can’t find the target drive’ and gives me a dialogue box to enter the drive location. I’m assuming the drive should be displayed there automatically. Or could I try punching in the drive location manually?

    Unfortunately I don’t think I’d be able to plug it into a Windows machine without borrowing someone elses. (The one I was thinking of using is now all nicely configured with Ubuntu 10.04 and MythTV and the partitioning is all just as I want i (thanks largely to you) – I don’t really want to muck around with it).

    I have used the commands

    $ sudo chown -R root:root ~/.wine

    and

    $ sudo wine GGC-H20L_1.03_VolumeID_Patch.exe

    (i.e. I’m running it as root).

    Any ideas on how to get it to recognise the drive or what address to specify for the drive location?

  27. Pablo says:

    I figured it out – I had to insert a disc before running the firmware updater. I’m assuming this is so the drive would mount and therefore be recognised in Wine. Once the firmware updater runs, it tells you to remove the disc before proceeding (easily done) and then the path to the disc drive is still there and you can do the update. Hope that helps someone!

  28. Pablo says:

    Another obstacle – when I play the movie, the audio is in a foreign language. It looks beautiful … but I can’t understand a thing :) Any ideas?

  29. HyRax says:

    You’ve decrypted the first audio track only, which is rarely English. Decrypt the disc, pull out the m2ts file that is the movie and put it through a tool like tsMuxer to extract all the audio tracks, then use a tool like MakeMKV to remux the video track and the chosen audio track(s) back into a single file.

  30. Pablo says:

    Thanks. I’ll give that a shot. In the meantime I’ve tried another Blu-Ray disc. But when I try to dump it using DumpHD, I get the following output:

    Initializing source…
    Disc type found: Blu-Ray BDMV
    Collecting input files…
    Source initialized
    Identifying disc… OK
    DiscID : BEC1D6BAA41B13DBCE28F3210CA58F9B59AF2897
    Searching disc in key database…
    Disc not found in key database
    Retrieving keys from source…
    aacskeys 0.4.0 by arnezami, KenD00

    Current path: /home/*myusername*/Apps/dumphd-0.61

    MKBv: 12
    Could not find a Processing Key or Device Key resulting in the Media Key.
    Possible key tried: 09F911029D74E35BD84156C5635688C0
    Possible key tried: 455FE10422CA29C4933F95052B792AB2
    Possible key tried: F190A1E8178D80643494394F8031D9C8
    Possible key tried: 7A5F8A09F833F7221BD41FA64C9C7933
    Possible key tried: C87294CE84F9CCEB5984B547EEC18D66
    Possible key tried: 452F6E403CDF10714E41DFAA257D313F

    ERROR: PROCESSMKB, errnr: -3

    aacskeys ERROR: PROCESSMKB, errnr: -3
    Failed retrieving keys from source

    Any idea what might be the problem?

    Also, I noticed you were planning on writing a how-to for putting together multiple Blu-Ray streams. I’d be really keen to see it once you’ve done it (one of the Blu-Rays I’m trying to watch is in multiple streams).

    Thanks!

    Pablo.

  31. HyRax says:

    AACSKeys cannot decode MKBv12 titles yet. At this time only titles up to MKBv10 are supported until newer keys are discovered.

  32. Pablo says:

    I used MakeMKV and that did the trick. It looks like a pretty good program that keeps up-to-date with the different versions of MKB. I’ll probably shell out the $ for it at the end of the trial. The only real obstacle in my way is discs like King Kong, which doesn’t have the movie in only one file, but heaps of different files. Do you know of any good tutorials on how to easily stitch together files from discs like that?

    Thanks again for all your help. It’s so good to be this close to having the system all set up!

  33. HyRax says:

    tsMuxer will rejoin a broken up stream based on the playlist file, turning it back into one large m2ts file.

  34. Pablo says:

    Thanks for that. I’m just trying to get it working, but I’m not sure exactly how to do it. Here’s what I’ve tried:

    I went searching for a file called ‘playlist’ in dumped Blu-Ray, but couldn’t find any. There is a folder called ‘PLAYLIST’ which contains 79 numbered .mpls files. So I opened tsMuxer to the Input tab, clicked ‘add’ and tried adding the entire folder. No luck – it only opens individual files. So I went searching for an .mpls file which matches the name of the main .m2ts file in the STREAM folder (i.e. the biggest one). There was no such matching .mpls file. So I tried just adding the first .mpls file in the PLAYLIST folder to tsMuxeR, then specified output as ‘M2TS muxing’ and gave it an output file name. But after a few seconds it errored.

    So I’m not really sure what to try next … any tips?

  35. HyRax says:

    The .mpls files are the playlist files – one for each title on the disc.

    tsMuxer can only deal with unencrypted media, so if this is the MKBv12 disc you were playing with earlier, tsMuxer won’t be able to work on it until you’ve decoded it first with tools like DumpHD, but since you haven’t got an MKBv12 key to do that, you are stuck.

  36. Pablo says:

    I’ve decrypted it with MakeMKV and dumped it to my hard drive (King Kong is actually a movie which DumpHD and AACSKeys were able to decrypt and dump as well – so MKBv10 or earlier). So I’ve got the decrypted movie.

    So if I just need to use one of the .mpls files, how do I know which one? Especially given that there is no .mpls file corresponding to the biggest .m2ts file?

    Thanks!

  37. Pablo says:

    It looks like using the first .mpls file is the way forward – I noticed that it brings up the correct order of .m2ts files in the ‘Input files’ section of tsMuxeR.

    But for some reason I keep getting this error early on in the mux process (at 0.6% each time):

    *** glibc detected *** /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR: munmap_chunk(): invalid pointer: 0x984fd008 ***
    ======= Backtrace: =========
    /lib/tls/i686/cmov/libc.so.6(+0x6b591)[0xb7587591]
    /lib/tls/i686/cmov/libc.so.6(+0x6c80e)[0xb758880e]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x812cec1]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x812ceed]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x807d74d]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x8065a71]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x8065ad9]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x809e730]
    /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb7532bd6]
    /home/*myusername*/Apps/tsMuxeR_1.10.6/tsMuxeR[0x804b401]
    ======= Memory map: ========
    08048000-08184000 r-xp 00000000 00:00 0
    08184000-0819d000 rwxp 00000000 00:00 0
    08e00000-091d7000 rwxp 00000000 00:00 0 [heap]
    93f36000-9864f000 rwxp 00000000 00:00 0
    a1b0c000-a2448000 rwxp 00000000 00:00 0
    a2ee7000-a30f7000 rwxp 00000000 00:00 0
    a3a5d000-a3c58000 rwxp 00000000 00:00 0
    a40d5000-a85e6000 rwxp 00000000 00:00 0
    a85e6000-a85e7000 —p 00000000 00:00 0
    a85e7000-a8de7000 rwxp 00000000 00:00 0
    a920b000-aacdc000 rwxp 00000000 00:00 0
    ab839000-abc5b000 rwxp 00000000 00:00 0
    ac185000-ac396000 rwxp 00000000 00:00 0
    acd8e000-acde9000 rwxp 00000000 00:00 0
    ad5f4000-ad64f000 rwxp 00000000 00:00 0
    adc55000-add5e000 rwxp 00000000 00:00 0
    ade67000-b0090000 rwxp 00000000 00:00 0
    b02a3000-b04b4000 rwxp 00000000 00:00 0
    b07cf000-b3211000 rwxp 00000000 00:00 0
    b62f1000-b6503000 rwxp 00000000 00:00 0
    b6503000-b6504000 —p 00000000 00:00 0
    b6504000-b6d04000 rwxp 00000000 00:00 0
    b74d4000-b74f1000 r-xp 00000000 08:01 1704019 /lib/libgcc_s.so.1
    b74f1000-b74f2000 r-xp 0001c000 08:01 1704019 /lib/libgcc_s.so.1
    b74f2000-b74f3000 rwxp 0001d000 08:01 1704019 /lib/libgcc_s.so.1
    b7505000-b7507000 rwxp 00000000 00:00 0
    b7507000-b751a000 r-xp 00000000 08:01 1704134 /lib/libz.so.1.2.3.3
    b751a000-b751b000 r-xp 00012000 08:01 1704134 /lib/libz.so.1.2.3.3
    b751b000-b751c000 rwxp 00013000 08:01 1704134 /lib/libz.so.1.2.3.3
    b751c000-b766f000 r-xp 00000000 08:01 1841454 /lib/tls/i686/cmov/libc-2.11.1.so
    b766f000-b7670000 —p 00153000 08:01 1841454 /lib/tls/i686/cmov/libc-2.11.1.so
    b7670000-b7672000 r-xp 00153000 08:01 1841454 /lib/tls/i686/cmov/libc-2.11.1.so
    b7672000-b7673000 rwxp 00155000 08:01 1841454 /lib/tls/i686/cmov/libc-2.11.1.so
    b7673000-b7676000 rwxp 00000000 00:00 0
    b7676000-b769a000 r-xp 00000000 08:01 1841457 /lib/tls/i686/cmov/libm-2.11.1.so
    b769a000-b769b000 r-xp 00023000 08:01 1841457 /lib/tls/i686/cmov/libm-2.11.1.so
    b769b000-b769c000 rwxp 00024000 08:01 1841457 /lib/tls/i686/cmov/libm-2.11.1.so
    b769c000-b770d000 r-xp 00000000 08:01 655871 /usr/lib/libfreetype.so.6.3.22
    b770d000-b7711000 r-xp 00070000 08:01 655871 /usr/lib/libfreetype.so.6.3.22
    b7711000-b7712000 rwxp 00074000 08:01 655871 /usr/lib/libfreetype.so.6.3.22
    b7712000-b7713000 rwxp 00000000 00:00 0
    b7713000-b771a000 r-xp 00000000 08:01 1841460 /lib/tls/i686/cmov/librt-2.11.1.so
    b771a000-b771b000 r-xp 00006000 08:01 1841460 /lib/tls/i686/cmov/librt-2.11.1.so
    b771b000-b771c000 rwxp 00007000 08:01 1841460 /lib/tls/i686/cmov/librt-2.11.1.so
    b771c000-b7731000 r-xp 00000000 08:01 1841450 /lib/tls/i686/cmov/libpthread-2.11.1.so
    b7731000-b7732000 r-xp 00014000 08:01 1841450 /lib/tls/i686/cmov/libpthread-2.11.1.so
    b7732000-b7733000 rwxp 00015000 08:01 1841450 /lib/tls/i686/cmov/libpthread-2.11.1.so
    b7733000-b7735000 rwxp 00000000 00:00 0
    b7746000-b7749000 rwxp 00000000 00:00 0
    b7749000-b7764000 r-xp 00000000 08:01 1709858 /lib/ld-2.11.1.so
    b7764000-b7765000 r-xp 0001a000 08:01 1709858 /lib/ld-2.11.1.so
    b7765000-b7766000 rwxp 0001b000 08:01 1709858 /lib/ld-2.11.1.so
    b7766000-b7767000 r-xp 00000000 00:00 0 [vdso]
    bfa8f000-bfaa4000 rwxp 00000000 00:00 0 [stack]

    Looks like it might be a problem with tsMuxeR. Or is there something I’m missing? Would there be a way to step around this error if I didn’t include some of the streams in the mux? (Problem is, I don’t know which ones are necessary and which are superfluous …)

  38. HyRax says:

    OK then that means you didn’t preserve the original on-disc structure. All titles, ie all m2ts files even if it’s just one big file, have an associated playlist file to tell the BD player what to play and in what order in the case of multipart files. You need to find that and load it into tsMuxer. It will then read all the appropriate m2ts files from the BDMV\STREAM directory of the disc (your decrypted version that is) and piece them back together into one big file.

    Can’t help you with the crash issue as I’ve never had tsMuxer crash on me. I would image something didn’t dump properly or became corrupt in the process of decoding.

  39. Pablo says:

    Hmmm … I’ve put the disc back in to search on it directly for the corresponding mpls file (the main title is 00414.m2ts, so I’m searching for 00414.mpls). It’s not there in the PLAYLIST directory, so I ran a search across the whole disc for 00414.mpls and that only turned up two files called 00414.clpi (in separate folders) and the 00414.m2ts file.

    Is it an impossible task if I can’t find 00414.mpls?

    When I bring up the first mpls file (00000.mpls) in tsMuxeR, it gives me the ordering of the m2ts files. So instead of running the mux on 00000.mpls, I’ve tried manually adding together all the m2ts files in the same order. Unfortunately it also returned in error (I don’t think it was a crash – if it would help, I can try it again and post the error message here).

  40. HyRax says:

    There’s a playlist file for every title that a BD player plays from the disc. If you are decoding the disc and preserving the on-disc structure, you will eventually find the corresponding playlist file to load into tsMuxer.

  41. Pablo says:

    Will that playlist filename correspond to the title name (i.e. 00414.mpls corresponding to 00414.m2ts)? If so, I don’t think it’s there … Here’s a site which looks like it has the full structure of the King Kong Blu-Ray on it – [DELETED] You can see that the main title (00414.m2ts) is also the biggest file (14.72G). But if you search for 00414.mpls, you won’t find it.

  42. HyRax says:

    There is no correspondence between the playlist filenames and the m2ts filenames.

    And please don’t post Torrent links.

  43. Pablo says:

    Sorry about that. I’ve figured it out now. I just loaded the first mpls file (00000.mpls in this case) and then in the tsMuxeR interface unchecked all 720:480 resolution videos (these are the director’s commentary etc) and all audio tracks except the DTS-HD one. I haven’t watched all the way through to check that all the transitions are smooth. But I did check the first transition and it was fine. And the whole movie is there now.

    Thanks again for all your help!

  44. Jason says:

    hello,

    I have tried three different discs and I keep geting similar output to this:

    jason@jason-desktop:~$ aacskeys /media/STARTREK11D1AC/
    aacskeys 0.4.0 by arnezami, KenD00

    Could not find a Processing Key or Device Key resulting in the Media Key.
    Possible key tried: 09F911029D74E35BD84156C5635688C0
    Possible key tried: 455FE10422CA29C4933F95052B792AB2
    Possible key tried: F190A1E8178D80643494394F8031D9C8
    Possible key tried: 7A5F8A09F833F7221BD41FA64C9C7933
    Possible key tried: C87294CE84F9CCEB5984B547EEC18D66
    Possible key tried: 452F6E403CDF10714E41DFAA257D313F

    ERROR: PROCESSMKB, errnr: -3

    Any suggestions?

  45. HyRax says:

    That means the disc is encoded using an MKB version which the AACSKeys library does not have a decoding key for (yet – they are added as new keys are discovered). Unfortunately there is no work around for this under Linux unless someone is prepared to pay for a BD decoding license.

  46. Sam says:

    Hi,
    By a miraculous stroke of luck I also have a an LG GGC-H20L. Unfortunately for me, all the original links to the firmware are dead and I can’t find a copy anywhere. Any chance you still have a copy lying around? *crosses fingers*

  47. HyRax says:

    Lucky for you I still have my v1.03 firmware archive. I’ve added a new link to the article near the original download link.

Leave a Reply

Spam Protection by WP-SpamFree