The Guide to Preserving DVD, Blu-Ray, and 4K Movies Easily (MakeMKV, ARM)
Looking to preserve your physical library without a larger effort than setting up the software and loading DVDs. Stop no further than with ARM, or automatic ripping machine, a bundle of scripts used to rip movies. The installation is a little involved, but after that, it runs by itself, preserving all of your movies.
This free software runs on a server (a computer running 24/7) running a server operating system. This just means you will need a couple of things: a primary computer (Windows 10/11, you can flash on Mac/Linux but it's easier on Windows), at least 8GB flash drive, a spare computer, a lot of internal or external storage (think TBs), a 4K optical drive, an ethernet connection (or the world's most stable WiFi connection), and some time (weekend project for sure). The more movies you have, the more storage you'll need.
Preparation
You will need a UHD-compatible drive (works with regular Blu-Rays, DVDs) for your server if you are ripping 4K Blu-Ray's because special software on them needs to be altered in order to read and rip (copy and convert into a file). If you aren't worried about 4K and just want regular Blu-Rays, DVDs, any Blu-Ray drive will work, and you can skip the 4K flashing process.
4K Flashing
In order to read and rip 4K drives, you need to purchase specific drives listed here. I got mine for under 100 dollars. They are specific; apparently, not all 4K drives will work for flashing and ripping, and it has been a community effort to figure out what works and doesn't. You may also need an enclosure for flashing and using it if you can't install the drive in your computer or server. Again, you need specific hardware, and I got the OWC Mercury Pro 5.25 to connect to my computer for flashing. Additionally, you will need the firmware pack (extract somewhere) and the flasher tool (extract somewhere) to get started. You don't need to flash on Windows, but it makes it easier! Plug in your optical drive so we can get started.

If you want to see a before-and-after, download MakeMKV on your computer, install it, and open it. Check the side panel under "LibreDrive Information" and take note of the Firmware Type. After flashing, it should say Patched.
Select your drive from the top dropdown, and it should look something like the above image. If you have encrypted firmware according to the window, go here to learn more about what to do before flashing. First, what we will do is back up the firmware in case anything happens. Click READ Firmware, then START. It should back up, and then you can hit WRITE Firmware. Pick the correct firmware, listed here:
WH16NS60 on any Firmware directly to > WH16NS60 1.02MK
WH14NS40 on any Firmware directly to > WH16NS60 1.02MK
WH16NS40 on any Firmware directly to > WH16NS60 1.02MK
BH16NS55 on any Firmware directly to > WH16NS60 1.02MK
UH12NS40 on any Firmware directly to > WH16NS60 1.02MK
Asus BW-16D1HT on any Firmware directly to > Asus BW-16D1HT 3.10MK
BU40N on any Firmware directly to > BU40N 1.03MK
WP/BP50NB40 to > BP50NB40-NB50-1.03MK then to > BP60NB10 1.02MK or 1.00MK
NB52 to > BP50NB40-NB50-1.03MK with enc > BP50NB40-NB50-1.03MK with bootloader/full flash > BP60NB10 1.00_HBD from Marty download/file.php?id=2143
if using command line add "full" after rawflash
BP60NB10 on any Firmware directly to > BP60NB10 1.02MK
After flashing successfully, you can now read 4K discs with the drive. If you looked at MakeMKV earlier, close the app and reopen it to confirm success. Time to go to the server. Install the drive via USB or SATA if you have the space.
If you are using a spare computer, you will be installing Ubuntu Server (which requires a flash drive and another tutorial). You will need the spare computer to be connected to the internet and on the same network as your primary computer24/7. SSH (Secure Shell) into your server with ssh username@hostname
from the primary computer using the command prompt/terminal.
Installing Docker after setting up Ubuntu Server is easy. You can copy and paste the following commands (referenced from Docker Docs):
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Then run: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
.
Then run sudo groupadd docker
.
Then run sudo usermod -aG docker $USER
.
You are now done! You can now start the process of installing ARM.
Installation
The documentation suggests using Docker instead of bare metal, so that is what I will introduce. This will be basically a copy of the existing documentation (thanks, microtechno9000). Installation is a bit involved, so I will try to make it as easy as possible. Make sure your optical drive is plugged in.
The first thing you will do is get lsscsi,
which is a package that will allow us to see what drives are connected to our host system. You can run this command anywhere after being logged in.
sudo apt install wget lsscsi
lsscsi -g
After installing lsscsi, run it and take note of the drive you have to burn with. For example, my drive is a WN16NS40
LG drive I got from eBay. Take note of the /dev/sr0
and /dev/sg0
columns; your values may be different. After writing the values you got, we are going to set up the installer.
wget https://raw.githubusercontent.com/automatic-ripping-machine/automatic-ripping-machine/main/scripts/installers/docker-setup.sh
sudo chmod +x docker-setup.sh
Run ./docker-setup.sh
. This will download a prep script, which will create a dedicated user for ARM activities and services. For this next step, we will run a couple of commands, and you will take note of them for one of the final installation steps.
Run these commands separately:
id -u arm #ARM_UID
id -g arm #ARM_GID
timedatectl show -p Timezone --value #TZ
sudo mkdir -p /home/arm/{music,logs,media,config}
sudo chown 1001:<REPLACE WITH #ARM_GID VALUE> -R /home/arm/config
Now we need to edit the start command script that was created with docker-setup.sh
by running nano ~/arm/start_arm_container.sh
.
Edit ARM_UID and ARM_GID with the values acquired earlier. Replace the lines starting with -v like this:
-v "/home/arm:/home/arm" \
-v "/home/arm/music:/home/arm/music" \
-v "/home/arm/logs:/home/arm/logs" \
-v "/home/arm/media:/home/arm/media" \
-v "/home/arm/config:/etc/arm/config" \
Then add any devices not already in the file.
--device="/dev/sr0:/dev/sr0" \
--device="/dev/sr1:/dev/sr1" \
--device="/dev/sr2:/dev/sr2" \
--device="/dev/sr3:/dev/sr3" \
--device="/dev/sr3:/dev/sg0" \ # Added line
Edit --cpuset-cpus
to equal '2,3,4', which will limit CPU cores that arm
can use. Then run sudo ./start_arm_container.sh
. Then visit http://<IP_OF_MACHINE>:8080
on a browser from your primary computer. Username is admin and password is password. Recommended to change credentials.
Log in with the above credentials, and you will be greeted by the ARM dashboard. Go to settings to verify the drive is connected. You can burn movies at this state if you have verified that the drive is in the settings. However, if you want ARM to identify the movie you are ripping, you will need to do one more thing.
Automatically Identifying Movies
There is a "free" (limit of 1000 per day) service ARM uses to get information on what movie is being ripped, called OMDb, that contains information on tons of movies. By acquiring access to the service and using the key from the service you will also get the movie data embedded when you rip!
OMDb signup is located here, and you just have to click Free and insert the required fields. You can say for "Use": "Automatic metadata lookups for ripping movies" or something similar. In your email, you should get the key, and we will SSH into your server and edit the config file with this command:
sed -i 's/^OMDB_API_KEY: ""/OMDB_API_KEY: "APIKEYGOESHERE"/' config.yaml
Now we need to restart the application with this command: sudo docker restart arm-rippers
. You should be able to put a disk in and go to http ://<IP_OF_MACHINE>:8080 again and go to settings on your primary computer and see if the movies show up. It should! Rips eat a lot of storage, so make sure you have external drives at the ready
Now you are ready to start preserving your library automatically. After a rip is done, the tray will eject, and you can just cycle through. However, if you want to have a bit more peace of mind, you can back up your configuration and media.
Backup & Restore
Backups can help protect your configuration and media in case of an emergency, so restoration makes it feel like nothing ever happened. You will need to back up your configuration and media. I recommend backing them up separately (different drives). The only thing of note is that the movies you backup will take a LOT of space (1 4k rip = ~100GB), so make sure you have a lot of external or NAS storage.
I won't introduce the whole process here, but for both your config and media, you want to follow: 3-2-1. A process where you have three copies of data, on two different types of media, one off-site (cloud or physically not where other copies are). The "configuration" for the app is located in /home/arm/db
, /home/arm/config/
,/home/arm/logs
, and /home/arm/start_arm_container.sh
. The media is /home/arm/media
and /home/arm/music
.
All you would need to do is connect an external hard drive to the server, copy the files to the hard drive, and it is highly recommended to back up to a cloud service as well to satisfy 3-2-1.
Restoring is as simple as moving the latest backup in place on a new setup. Putting /home/arm/
back together with the config, db, logs, media, music folders and start script. Then run:
chmod +x /home/arm/start_arm_container.sh
./home/arm/start_arm_container.sh
Conclusion
That largely concludes the tutorial for preserving movies. You aren't locked to movies being in certain locations on your computer, and much of the information can be altered. If you get stuck anywhere, feel free to email me or drop by the community Discord.
References:
https://forum.makemkv.com/forum/viewtopic.php?t=19634
https://github.com/automatic-ripping-machine/automatic-ripping-machine
https://forum.makemkv.com/forum/viewtopic.php?f=16&t=22896