Adventures in 4K – Ripping 4K UHD Blu-Ray

For my birthday a few months ago, I got a copy of The Matrix in 4k. Previously I had only the original DVD that I bought when it first came out. I popped the 4k blu-ray into my blu-ray drive and started up MakeMKV only to discover that my system was unable to read a UHD disc.

Thankfully the 4k blu-ray comes with a normal blu-ray that contains a 1080p copy of the movie and I was able to rip that to my personal collection. While I do have a 4k capable TV, my primary projection setup is still only 1080p so having more bits available isn’t actually a better setup. Still, owning a 4k disc and not being able to use it bugged me.

It turns out the MakeMKV folks run a forum, and there are recommendations there for the right drives to buy in order to rip the 4k discs. There is a thread Ultimate UHD Drives Flashing Guide Updated 2024 which is required reading if you want to get started. I also checked out CanadaComputers which is my local go-to computer store, often having better prices than you can find online.

My pick was the LG WH16NS40 which was both low cost, and appeared to be well supported by the MakeMKV forum. Of course, it isn’t as simple as buy the drive and rip 4k media, you need to modify the firmware. The fact that I had to modify the drive to get it to do what I wanted made this a must have item so it went on my Christmas list. Thankfully I was on the good list and when it was time to unwrap gifts I had my hands on a new drive.

Installing the drive into my Linux machine was pretty straight forward. I ended up replacing another older DVD drive I had in there. On the label of my new drive, I could see the model number (WH6NS40) and manufacture date (June 2024). There was also an indication of the ROM version (1.05).

I run MakeMKV in a container, for me this is a great way to encapsulate the right setup and make it easy to repeat. The new drive showed up just fine to MakeMKV – but I didn’t expect it to support 4k UHD discs just yet.

I will summarize things further down, so you can skip to the summary if you want. However, the bulk of this post will be my discovery process on re-flashing the drive.

Time to head off to the guide and read it carefully.

The first thing I took note of was the correct firmware I wanted based on my drive. This was in the “Recommandation” section near the top.

WH16NS40 on any Firmware directly to > WH16NS60 1.02MK

So I want the 1.02MK version, and it seems I can get there with a single flash vs. needing to do multiple steps.

A bit further down in the same guide, I came across

LG 1.04+ / BU40N 1.03 / Asus 3.10+ and similar
The newer OEM firmwares cannot be flashed easily due to the additional downgrade checks implemented by the drive/firmware manufacturer.

Oh oh. So I may have problems? I am pretty sure I have the 1.05 firmware.

As I read on, it seems the recommended flashing tool is for Windows, and while I have a few Windows systems the drive is installed in a box that only has Linux on it. I spent some time reading through various forum posts and searching for other related material.

At this point I have more confidence that yes, my drive is supported – but it’s a question about how exactly to fix this drive (under Linux) to make it go. Bonus points if I manage to do this all inside of a container.

I did find an older thread that discusses flashing things under Linux. It pointed at a stand alone flashing tool on github, but it was reading through this thread when I discovered that MakeMKV itself contains the sdftool and supports the flashing process. This means I already have the tool inside the MakeMKV container.

Here is how I run the container

For your system you will want to adjust the volume mappings and device mappings to match what is on your host system. This works great for me, and I can access both of the blu-ray drives on my system and write newly ripped files to my host filesystem.

Looking at the browser view of the MakeMKV container I can see that the new drive is recognized, and in the right side panel it even calls out the details for LibreDrive support.

Shelling into the docker container, I can see that sdftool is a link to makemkvcon.

I had read about the possibility of dumping the original firmware as a backup plan in case things go very badly, but it seems this is actually not possible. It seems the manufacturers have made this more complicated in the name of security or something.

I grabbed the “all you need firmware pack” from the guide. This is a very small set of alternative firmwares, only one matches my LG ‘desktop’ sized drive so it was easy to identify the one I wanted to use.

I also needed the SDF.bin file that is hosted on the makemkv site.

In theory, I have all the bits I need. The sdftool, the SDF.bin, and the modified firmware.

At this point, I’m back following the guide. The Mac/Linux portion which walks you through things. I can dump information about the current firmware from my drive

Now I know the existing firmware version, it does not appear to be an exact match to the ones in the list from the guide under “Newer OEM Firmwares and encrypted”. However, the following is a pretty close match:

This drive was made in June 2024 and most probably has a firmware from after 2020 – so a very close match to the list above, and the date of manufacture makes it very likely that my drive has ‘encrypted’ firmware.

Ok – to recap what the plan looks like.

  1. Grab the sdf.bin file
  2. Download the modified firmware(s)
  3. Dump existing firmware versions – determine if you are encrypted or not (likely you are)
  4. Flash the drive

Easy right?

From outside the container we can copy in the firmware we need

And inside the container we can pull down the SDF.bin file.

Then we just need to do the very scary flash part.

There is a very long (minutes) pause where the flashing is taking place.. longer than I can hold my breath.. uh.. did I just make a brick?? fuuuuuu….

I can see from another terminal session that it is eating CPU, pegged at 100%.

After 10+ mins of hanging.. I hesitantly CTRL-C’d the thing..

Thankfully, everything seems ok – I’m exactly where I started. Whew.

I found that adding the verbose (-v) flag was probably a good idea, and a forum thread that indicated that there should be more output from the command. Maybe it’s getting stuck starting up?

I had a few thoughts. Maybe I need to run the container with less restrictions? (docker –privileged) No, that didn’t change anything.

Then I found someone having the same problem recently. It seems the solution they used was to just use Windows. I did ponder how I might setup a temporary Windows install to do this. Then I found this thread that discusses MakeMKV hanging after loading the SDF.bin file, this feels like it may be the same problem. In that case the issue is with the most recent version of MakeMKV (1.17.8).

I started looking for an older version of the container I’ve been using, one that has MakeMKV (1.17.7). It turns out that jlesage/makemkv:v24.07.1 is a few tags back, but has that version. Let’s see if using this version will work better.

This seems to be much better, I’m now getting an error message instead of a 100% CPU hang. Also, apparently I need to remove the disc from the drive which is something I can do.

I only very briefly held my breath as I typed in ‘yes’ and let it continue to do the work. It only took a minute or so to flash the drive and report success.

I needed to re-start the makemkv container. Then it was showing me my drive was good to go

As you can see the LibreDrive information now shows

And I can now read 4k UHD blu-ray discs without problem. I was able to rip the 4k version of the Matrix (53Gb) without issue. My setup was only showing [4x] speed, but I suspect this is more a limitation of my overall system vs. the drive which I suspect can go faster. I’m still very pleased to be able to pull the bits.

Summary – the TL;DR version

Recent versions of the LG WH16NS40 can be modified to read 4k UHD blu-ray discs. This can be accomplished under Linux, using the MakeMKV container.

There is a bug in MakeMKV version 1.17.8 which causes it to hang with 100% CPU. Using version 1.17.7 still works as of the date of this post.

Absolutely read the guide.

Start up the MakeMKV container.

I downloaded the firmware bundle, and picked the matching one for my drive. I then copied it from my host filesystem into the container

Then shell into the container and download the SDF.bin file.

Now we issue the flash command

That’s it. We have a modified firmware installed.  Time to enjoy 4k goodness.

Epson 1080UB: Lamp swap

Way, way back in 2008 I purchased the Epson 1080UB. While I wasn’t new to having a home theater setup, this was my first step into digital projectors. I run the projector in ‘low brightness mode’ as I’ve got a dedicated room that has complete light control. This lets me extend the lifetime of the lamp, as per the manual you should get 3000 hours.

Lamp life: 2500 hours (in high brightness mode, for select color modes) to 3000 hours (in low brightness mode, for select color modes), depending on usage

Around the 3000 hour mark, the 1080UB will start to show you a warning on screen shortly after you power it on. This warning thankfully goes away after a short time, but it returns every power on.

I’ve been living with the warning for some time (apparently years). As I understand it, the light output will drop over time. While human vision is quite adaptable, eventually you’ll get to a point where it’s obviously too dim. Honestly, this didn’t happen for me – my original bulb was still going strong. Still, this same one had been running since 2008, more than 15 years. It had also seriously exceeded the expected lifetime.

During the Black Friday sales, I grabbed a deal on a new lamp. The Araca lamp for the Epson 1080UB wasn’t the cheapest option, but it had good reviews and it was one of the options I’d been watching for a while.

6036 hours over 15 years is 251 days of display time. That’s an average of 16 days of viewing time every year. If I had exclusively watched movies that would be more than 2400. It is an impressive number no matter how you slice it up. While I’ve occasionally had the upgrade bug, there hasn’t been a good reason to retire the Epson 1080UB.

The new lamp arrived well boxed. It included a white cotton glove for handling it to help avoid transferring any oils from your skin to the lamp – any contaminants can cause early failure. The Epson 1080UB manual cover the replacement process (page 50). There was also a disposable Phillips screwdriver included, but I didn’t use it as it was terrible.

I took my projector down from the ceiling mount. Did a careful dusting, and cleaned out the filter. I then put on some nitrile gloves, then put on the (one) cotton glove on my dominant hand to handle the lamp.

Removing the lamp is straight-forward but after loosening the two screws I found the lamp was still fairly tightly connected to the projector. After a little fiddling around I discovered that it does take a pretty firm tug to lift the lamp out as it is seated in a power socket under the lamp.

I’ve indicated the approximate location circled in red. Make sure the screws are fully loosened, then it should come out with a firm pull straight up. It did take a few tries, and more force than I anticipated. Once it unseats from the connector, it will lift out easily.

There was a tiny bit of dust in the lamp compartment that I wiped out with a dry dusting cloth. Installing the new lamp was uneventful. It required a firm push to fully seat. The new lamp fit perfectly.

After re-installing the projector, the new lamp started up without any drama. This new lamp may take a slightly bit longer to warm up than the original. The first thing I did was to reset the hour counter on the 1080UB as per the manual.

For the first hour or two there was a strong ‘new electronics’ smell, I left it running to let that clear out and to ‘burn’ the new lamp in. During this time I made sure the projector was well aligned, and focused on my screen. I left it running while we had dinner to let the smell work itself out. After dinner I turned it off and let it cool down for an hour or so.

Later, we all sat down to watch a movie. Again the power on warm up phase feels a bit slower to me than the original. I do think the overall light output is a bit brighter once it has reached operating temperature, but it is hard to say. The viewing experience isn’t that different. The smell is either very faint, or gone completely at this point. I’ve kept the original as a backup in case this one fails.

 

 

Review: AKIYO O1 Mini Projector

I may completely lose my credibility as a home theater enthusiast, but hear me out. We are fortunate to have a cottage where we can get away from it all, and one of our rules there is “no tech”. Over the years this has eroded a little as we’ve ended up with generous mobile data plans, and our kids have become more technology attached. I also put the cottage on the internet for some automation setting up a remote site with openwrt and wireguard. Still, as a general rule we put our devices away and enjoy the sounds of nature and the freedom of being disconnected.

Under the guise of making things more fun for our teenage son, we decide to bring a movie to watch the other day. Watching Ratatouille on a 16″ laptop screen on the screened in porch after sunset was pretty nice. You can imagine the slippery slope we are on, and it was not a huge leap to think about setting up a projector and getting the ‘outdoor movie’ experience.

There are many great, low cost, projectors now. A local dealer has a great Epson 1080p projector for $700, and I’m certain with a little shopping we can cut that price down significantly – or look on the used market for a great deal at half the price. The Epson would be suitable for a ‘home theater’ space, and I don’t need my “no tech get away” to have an amazing audio video setup. This sent me looking at much less expensive solutions.

There is a whole class of low cost “mini” projectors out there, with so many choices. How do you pick one? You also have to wade through all of the technical mumbo-jumbo descriptions and marketing claims, many of them which are there to confuse you. There is also the misleading ‘sponsored’ reviews. The only good news here is there are many low cost choices so you’re not risking a lot, but remember the golden rule here: You get what you pay for.

I settled on the Akiyo O1 Mini Projector which I found on Amazon.ca. It had enough reviews which helps gives some confidence that they are not all sponsored/bought reviews. The price is well under $100 including taxes and delivery. If you bump your budget to $150 there are many more options, and many more features they promise. I decided that I was going to keep my outlay low and avoid too many features, I just needed a display.

This is what came in the box: The projector, a remote (2 AAA batteries not included), mini-tripod, power supply, HDMI cable and a couple of wooden q-tips (for cleaning?). The projector itself is very small, roughly 5.5″ x 4.5″ x 2.5″ – literally about two soda cans side by side. The HDMI cable is fairly long (5 feet?), but the power cable lead is quite short (3 feet?).

My initial impression was the fan was much quieter than I expected, and this was setup in my dedicated theater room which is nearly silent. The focus is pretty finicky, it feels like getting precise focus will be challenging as the control is quite loose. Keystone is limited, and appears to interact badly with focus. If you use keystone (which you probably will want) it becomes impossible to focus the top and bottom of the screen as the focus plane appears to be on an angle. It is all trade-offs here. This is still impressive for the cost.

Above is the start up screen (once you’ve done the initial setup) on my 80″x45″ screen (92″ diagonal). The projected image is larger than this screen by a good 8″ all around and there is ambient light in the room (dim, but not dark). Compared to my normal setup (native 1080p) the image feels soft, based on the image quality I’m starting to doubt if this is 720p.

Above is a screen shot of the projected image. Not bad eh? Image is fed to the project from my Macbook via HDMI. Now let’s look at the Macbook screen and the projected image together.

Ah, very different. This is a completely unfair comparison of course. While the projected image is watchable, the overall brightness and detail is lacking. The listed specifications for the Akiyo O1 are supposed to be 5500 lumens, but if there is any truth to this it’s the peak output of the light source not the amount of light coming out of the lens. I’ve seen guesses as to this being either 100 ANSI lumens, or 300 ANSI lumens. Maybe I’ll try measuring it one day, but it doesn’t matter for my needs.

I then moved the projector much closer to the screen, resulting in an approximately 45″ diagonal image. This made a huge difference, the on screen image now pops. Dark details are nice and visible now, and we still have good contrast. Viewing Ted Lasso, the colors were nice and bright and surprisingly good looking. No measurements here, and the human eye is very forgiving, but the feel of the image is impressive.

At this point in my notes, I call out that the fan noise is notably higher than my home theater projector. Certainly audible over the sound track of the movie during quiet parts.

My next steps were to put together something to feed the projector content. I tried just sticking one of my movies on USB stick and giving it to the projector, but this didn’t work. I decided while it was possible for me to figure out the right type of movie encode to feed the projector, having to re-encode any movie would be a pain. My choice here was to take a Raspberry Pi 3B I had sitting around and turn that into my media player.

To setup the Raspberry Pi, I visited the site and used the OSX specific installer. I took advantage of installer tool capability to pre-configure the install with a ssh server, my user and wifi information. The Pi booted and came up on my network with remote access, pretty slick.

I then installed mosh, one of my go-to utilities. To get sound working over HDMI I needed to run sudo raspi-config and navigate System->Sound->Output and change it from the headphone jack to HDMI. I also installed a screen keyboard: sudo apt-get install matchbox-keyboard, as I have a mouse plugged in but no keyboard. I finished up doing a system upgrade, just to make sure things are current.

Since VLC is built in to the base install, I was able to run that and play the movie just fine without having to worry about the format details.

The projected image is again around 45″ diagonal, and the photo was taken close to the projector itself making it look much larger. This isn’t a great reference image because it is fairly dark content and mostly blue/black. Still, a very watchable image – especially considering there was ambient light in the room too. Also, the wall being projected on is (mustard) yellow. The screenshot may not be selling you on this, but this convinced me I’d made a pretty good purchase. Fed via the Raspberry Pi I’m getting both sound and audio out, and the audio is quite loud enough. The image is bright enough to be engaging, and the focus isn’t that bad.

A couple more software tweaks. I wrote a simple bash script to watch for the USB drive to be mounted (so I could boot the Pi and then insert the movie later). Once the drive is detected, the first movie found will be played using VLC. I then used cron’s @reboot to run this script on start up. I discovered that while I could ssh into the machine and run the script and it would work, for some reason the cron invocation would lack sound. A simple work around was to setup key based ssh access, and from the script ssh to localhost to fix this, works fine this way.

I notice the Raspberry Pi was detecting the projector as a 1080p display and setting the screen up that way. I used the desktop GUI to force the HDMI input to 720p, this helped make the image sharper because we now have the native resolution matched. I believe this was the root problem with the ‘soft’ image I’d noted at first, with a proper 720p source things were pretty sharp.

The real test was taking a movie up to the cottage and having this all work there. We had the opportunity to try this soon after I had this figured out and it worked brilliantly.

The screen is a white bed sheet we pinned up, you can see the wrinkles and waves. The movie was Charlie and the Chocolate Factory. The displayed image was not anything close to videophile levels, but still I found myself sucked into the movie and deeply enjoying the experience. Yes, from time to time the fact that the image was distorted due to the waves in the sheet did distract a little. The fan noise was not an issue at all, the natural sound of the woods was louder than the fan, and the projector speakers plenty loud enough even at about half volume. It was overall a fantastic experience and easy to look past any of the imperfections, some of which are compromises in the setup vs. the technology.

When I consider my start in home theater, with expensive and large CRT projectors which had loud fans and could only resolve 720p images at best – this sub $100 unit with a long lasting LED light source is amazing value.