A question I see often is “how do you edit your videos?” The answer is I use DaVinci Resolve. While a lot of programs that I promote are open-source programs that can be freely inspected, distributed, and modified. However, I have tried all open-source video editors and all of them have disappointed me. Instead, I settled on DaVinci Resolve, one of the most popular free (as in cost) video editors. It’s been growing in popularity since Adobe continues to push their users to the brink with subscription prices and AI chicanery. While it might not be as featured filled as Premiere, Resolve gets the job done over and beyond most of its competition and one of the few commercial companies that supports Linux.

However, just because DaVinci Resolve supports Linux, that doesn’t mean it’s all smooth sailing. I don’t think it’s a secret that most of Black Magic’s employees all use Macs, because who in their right mind would use Windows? At least in my experience, I’ve noticed that when it works, Resolve outperforms and is generally smoother on Linux than on Windows, although I would chalk that up to 2 things:

  • The Mac version is easier to port to Linux as since macOS is also Unix-like.
  • Black Magic uses Linux as the backend for database servers, managing their products, or embedded systems.

And I am all about paying for a good product. If you use a product, whether it’s your favorite open-source project or a proprietary product, if you like a product, give them money and show your support. This especially goes for desktop Linux users since meeting one in real life is like finding a unicorn. If you pay for a product and you like how it works, you show your support and that the thing they offer is worth continuing.

But emphasis on “works.” Because if you scour the internet looking into Resolve, people complain about not getting it to work. Windows and Linux in particular are hard targets because of the diverse types of hardware out there. On Linux especially, it’s an uphill battle and I want to walkthrough some of these issues, some solutions, and debunking some claims online about how DaVinci Resolve functions on Linux right now.

Codec Complications

Resolve paywalls specific video codecs, or video format compatibility, from working. Some codecs like AAC audio, the standard for audio in MP4 files, don’t work at all! It might be easy to point the finger at Black Magic Design for crippling Linux users, but reality is they aren’t the enemy.

Did you know the popular video codec for MP4 and QuickTime files, H.264 is run by the MPEG LA, or as I call them, the scummy patent squatting body that monopolizes video on your computers and phones. Google, Microsoft, and Apple pay the MPEG LA truckloads of money every year (and you’d only know this by reading the Microsoft or Apple EULA, who doesn’t?).

Nobody likes them, especially the companies that pay them and it’s gotten so bad they’re trying to promote their own alternative: the AV1 codec to finally put an end to the H.264 reign of terror. Resolve only paywalls it because the license of H.264 requires the operating system pays money. No way would your distribution give into petty extortion like this.

Converting Media

Resolve blocks specific codecs from working for Linux users or paywalls them. For example, there’s a massive spreadsheet in their support manual describing all of the codecs that don’t work.

However, this means that using Resolve will require you to convert your existing “incompatible” media. You can use tools like ffmpeg and HandBrake to convert video or audio into the desired outputs.

If you don’t know what codec your file uses, VLC or MPV allow you to view the codec (Ctrl + j in VLC or i in mpv)

I typically do Nvidia NVENC H.264 for hardware acceleration, but if you don’t pay and especially if you want to support the future, use AV1. For audio, you need to use PCM wav.

Below are some sample commands.

Resolve Free

ffmpeg -i "incompatible.mp4" -vcodec libaom-av1 -acodec pcm_s16le "compatible.mkv"

Resolve Studio

ffmpeg -i "incompatible.mp4" -vcodec copy -acodec pcm_s16le "compatible.mov"

My Resolve Scripts

On my GitLab, I have 2 Resolve scripts:

  1. First, run davinci-resolve-distrobox-1.sh. This installs all the dependencies and prompts you to download Resolve.
  2. Second, run davinci-resolve-distrobox-2.sh. This fixes the prepacked libraries and integrates it into your system through Distrobox.

GitLab scripts

Distro(box) of Choice

Resolve is very picky about what distro you run it on. Officially, Rocky Linux is recommended, but very few people run Rocky Linux on desktop Linux. Instead, you can run Distrobox, a utility that lets you run applications in a Podman/Docker container.

  • No matter what flavor of Linux, you can run a container where Resolve thinks it’s installed in the distro of your choosing.
  • Distrobox gives the container full access to your home folder and can integrate installed programs as GUI or command line shortcuts.
  • Since Resolve recommends Rocky Linux, we should use Fedora because it is more updated and has better hardware support.
  • Since Resolve is running in a container, updates to the container are independent of your host system (the one you run your containers on). This way, Resolve runs in a stable environment without impacting other programs you use.

Lacking Libraries

Resolve requires specific applications and libraries in order to correctly run the installer and Resolve itself.

  • The installer requires FUSE and various other libraries for the installation process. This is because the installer is a glorified AppImage.
  • You need PulseAudio, the XDG libraries, and X11. Resolve will work in XWayland, but your window decorations will be invisible.
  • RPMFusion is needed to run all the video codecs.
  • You will need to download the desired version of Resolve from Black Magic’s website. If you use the free version, you can submit bogus information and get the download link. If you use the Studio version, you can click the “Download only” link. You also need the required libraries for your respective graphics card.
  • If you use Nvidia, you need to download akmods-nvidia and xorg-x11-nvidia-cuda. In a container, the installation might fail, but don’t worry if it does. Your Distrobox container needs to be built with the --nvidia flag.
  • If you use AMD, you need to use rocm-opengl. You might also need to install the Nvidia driver too.
  • Intel Arc is untested.

After Resolve is installed, Resolve’s codecs are outdated and Resolve will fail to launch. First, copy the codecs from the RPMFusion folder and put them in Resolve’s folder.

sudo cp /lib64/libglib-2.0.so.0* /opt/resolve/libs

Pulling Old Fedora Libraries

Resolve’s codecs are still so old that even Fedora is leaving them in the dust. You need to download an archive of older Fedora 38 libraries, unpack the archive, and copy them into Resolve’s folder as well. Even if you use a newer version like Fedora 39, the 38 libraries still work.

Since this video, the link has been officially removed from the Fedora repositories. I saved a copy on the Wayback Machine

sudo dnf install cpio -y
wget https://web.archive.org/web/20231220041143if_/https://dl.fedoraproject.org/pub/fedora/linux/releases/38/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.42.10-2.fc38.x86_64.rpm
rpm2cpio ./gdk-pixbuf2-2.42.10-2.fc38.x86_64.rpm | cpio -idmv
sudo cp -r usr/lib64/* /opt/resolve/libs
rm -r usr
rm gdk-pixbuf2-2.42.10-2.fc38.x86_64.rpm

Reverse Engineering Resolve’s DRM

If you are a free user, this section is not relevant to you.

If you harden your Linux network settings, you will encounter problems ensuring your Resolve installation stays registered. If you use a randomized MAC address, Resolve needs to know your real MAC address, probably to check your vendor OUI.

TL;DR: Resolve is quite sound privacy-wise, but relies on you using a static MAC address if you use Studio.

There are 2 types of license: the dongle or internet activated code. When you first open Studio, you will be prompted to enter in your code or insert your dongle. I use an internet code, but many others have tested the dongle.

Privacy-wise, DaVinci Resolve collects no telemetry and attempts to keep network calls to a minimum. The only time Resolve phones home is when you enter in your license code and to check for updates. Resolve then generates a certificate in its /opt/resolve folder that attests that you are using a device with a specific vendor identifier. Otherwise, it will ask you enter your code again if you reboot your device or restart NetworkManager.

If you use my NetworkManager configuration /etc/NetworkManager/conf.d/00-macrandomize, comment out the following:

#wifi.cloned-mac-address=random
#ethernet.cloned-mac-address=random

There’s also conjecture on fat-tire’s Resolve container that DaVinci might use the Linux machine-id to identify uniqueness. While this is possible in theory, machine-id has no impact on Resolve’s DRM. Linux machine-id is just generated when you first install your OS, but this can be deleted or modified. For example, I use the Kicksecure machine-id, since they make it so all of their users use the same Linux machine-id. I replicated this with Studio and my license was retained.

echo "b08dfa6083e7567a1921a715000001fb" | sudo tee /etc/machine-id

Discrete GPU Troubles

Using Distrobox with discrete GPUs doesn’t work. I have no idea why. Still works fine on Desktops.

Misc Problems

  • All window decorations are invisible in Wayland. They are visible in X11.
  • The file picker doesn’t use portals. It’s their own machination.
  • If you are an AMD user, you cannot export video as H.264.
  • If you make changes to the Nvidia driver and Resolve fails to boot on Wayland claiming “make sure all displays are unplugged from your integrated GPU,” run Resolve in X11 once, then it will open again in XWayland.

Donate

This was the culmination of months of experimentation. If you like the work I do, please consider donating money.

Donate

Referenced: