Resolve aborts on first launch on systems without a DeckLink card (default Local.Audio.Type = DeckLink), and Resolve's audio engine retries forever enumerating raw ALSA hardware when PipeWire owns every real card — the "render queue stuck in progress with no output" hang. Patches default-config.dat (and any existing user config.dat) to ALSA, then loads snd-aloop as a virtual ALSA card PipeWire ignores, persists it via /etc/modules-load.d/, and writes a PipeWire loopback bridge so monitor audio remains audible during playback. Skip with RESOLVE_NO_ALOOP=1. Ported from the Intel Arc installer where the fix was originally debugged. |
||
|---|---|---|
| Omarchy_resolve_v2.sh | ||
| README.md | ||
DaVinci Resolve - Omarchy
Video Guide
Install DaVinci Resolve on Omarchy (Arch Linux + Hyprland) with NVIDIA GPU support.
Handles all the compatibility quirks of running Resolve on Arch Linux — library conflicts, XWayland setup, RPATH patching, and legacy library shims — so you don't have to.
Requirements
- OS: Omarchy (Arch Linux)
- GPU: NVIDIA with proprietary drivers installed and working
- Disk space: ~10GB free in ~/Downloads for extraction (temporary)
- DaVinci Resolve ZIP: Downloaded from Blackmagic's website
Quick Start
-
Download DaVinci Resolve from blackmagicdesign.com
- Choose "DaVinci Resolve" (free) or "DaVinci Resolve Studio" (paid)
- Select Linux and download the ZIP file
- Save it to
~/Downloads/
-
Run the installer:
git clone https://git.no-signal.uk/nosignal/DaVinci-Resolve-Omarchy.git
cd DaVinci-Resolve-Omarchy
chmod +x Omarchy_resolve_v2.sh
./Omarchy_resolve_v2.sh
- Launch Resolve from your app menu or run
resolve-nvidia-open
What It Does
1. Installs Dependencies
Build/extraction tools:
| Package | Purpose |
|---|---|
unzip |
Extracts the Resolve ZIP archive |
patchelf |
Modifies library search paths (RPATH) in binaries |
libarchive |
Archive handling library |
desktop-file-utils |
App menu integration |
file |
Identifies ELF binaries for RPATH patching |
Runtime dependencies:
| Package | Purpose |
|---|---|
libxcrypt-compat |
Provides legacy libcrypt.so.1 (Arch dropped it) |
ffmpeg4.4 |
Older FFmpeg version that Resolve links against |
glu |
OpenGL Utility Library for 3D rendering |
gtk2 |
GTK2 toolkit (some Resolve UI components use it) |
fuse2 |
AppImage compatibility layer |
2. Extracts Resolve
The download is a ZIP containing a .run file (self-extracting AppImage). The script unpacks it in stages:
ZIP → .run file → squashfs-root (actual application files)
Temporary files are cleaned up automatically when the script finishes.
3. Handles Library Conflicts (ABI-Safe)
This is the tricky part. Resolve bundles its own libraries, but some conflict with Arch's newer versions:
| Library | Action | Why |
|---|---|---|
libglib-2.0.so |
Replace with system | Stable C ABI, safe to swap |
libgio-2.0.so |
Replace with system | Stable C ABI, safe to swap |
libgmodule-2.0.so |
Replace with system | Stable C ABI, safe to swap |
libc++.so |
Keep bundled | C++ ABI mismatch causes crashes |
libc++abi.so |
Keep bundled | C++ ABI mismatch causes crashes |
4. Patches RPATH
Every ELF binary in Resolve gets its RPATH patched to point to /opt/resolve/libs/ and subdirectories. Without this, binaries would look for libraries in the original AppImage paths that no longer exist.
5. Creates XWayland Wrapper
Resolve doesn't support native Wayland. The wrapper script (resolve-nvidia-open) forces XWayland mode by setting QT_QPA_PLATFORM=xcb, and also clears stale Qt lockfiles that can prevent Resolve from starting after a crash.
6. Desktop Integration
- Installs
.desktopfiles for the app menu - Installs icons at proper hicolor sizes
- Installs udev rules for Blackmagic hardware (capture cards, control panels)
- Points all launchers at the XWayland wrapper
7. Audio Backend Fix (DeckLink → ALSA + snd-aloop)
Two issues are fixed automatically:
Default audio backend. Resolve's shipped default-config.dat sets
Local.Audio.Type = DeckLink, which causes Resolve to abort on first launch
on systems without a Blackmagic DeckLink capture/playback card. The script
patches both the system template and any existing user config to use ALSA
(backing up the user config to config.dat.bak.<timestamp>).
Render-blocker hang. Resolve's audio engine opens raw ALSA hardware
(hw:N) and enumerates every card under /dev/snd/control*. When all real
ALSA cards are owned/contested by PipeWire's session manager, the
enumeration retries forever — the render queue never spawns the encoder, the
job sits at "in progress" with growing ETA, no output file appears, and
nothing useful lands in ResolveDebug.txt. strace shows tens of thousands
of SNDRV_CTL_IOCTL_PCM_INFO ENXIO ioctls per failed render.
The fix is to load the kernel's snd-aloop module. PipeWire ignores it (no
ACP profile, not auto-acquired), so Resolve can fully own it and the render
proceeds normally. The script:
- Runs
modprobe snd-aloopfor the current session - Writes
/etc/modules-load.d/snd-aloop.confso it autoloads at boot - Writes a PipeWire loopback bridge at
~/.config/pipewire/pipewire.conf.d/50-resolve-aloop-bridge.confso monitor audio routes from the loopback's capture side to the system default sink (without it, Resolve renders fine but you hear nothing during playback; headphone/HDMI sink switching keeps working through the bridge) - Restarts user PipeWire services so the bridge loads immediately
Set RESOLVE_NO_ALOOP=1 to skip this entirely (useful if you have a
dedicated audio interface Resolve already uses cleanly).
Files Installed
Application
| Path | Purpose |
|---|---|
/opt/resolve/ |
Main application directory |
/opt/resolve/bin/resolve |
Resolve binary |
/opt/resolve/libs/ |
Bundled libraries |
Scripts
| Path | Purpose |
|---|---|
/usr/local/bin/resolve-nvidia-open |
XWayland wrapper (main launcher) |
/usr/bin/davinci-resolve |
Convenience symlink to wrapper |
Desktop Entries
| Path | Purpose |
|---|---|
/usr/share/applications/DaVinciResolve.desktop |
System app menu entry |
~/.local/share/applications/davinci-resolve-wrapper.desktop |
User entry (takes priority) |
Icons
| Path | Purpose |
|---|---|
/usr/share/icons/hicolor/128x128/apps/davinci-resolve.png |
App icon |
Hardware Support
| Path | Purpose |
|---|---|
/usr/lib/udev/rules.d/99-BlackmagicDevices.rules |
Blackmagic capture cards |
/usr/lib/udev/rules.d/99-ResolveKeyboardHID.rules |
Resolve Editor Keyboard |
/usr/lib/udev/rules.d/99-DavinciPanel.rules |
DaVinci control panels |
Configuration
Full System Upgrade
By default, the script syncs the package database without upgrading. To include a full system upgrade:
RESOLVE_FULL_UPGRADE=1 ./Omarchy_resolve_v2.sh
Skip the snd-aloop Audio Fix
If you have a dedicated audio interface (e.g. Focusrite Scarlett, MOTU, etc.) that Resolve already uses cleanly, you don't need the virtual loopback card:
RESOLVE_NO_ALOOP=1 ./Omarchy_resolve_v2.sh
This skips the modprobe snd-aloop, the /etc/modules-load.d/ entry, and
the PipeWire loopback bridge. The DeckLink → ALSA config patch still runs.
Hybrid GPU Laptops (Optimus)
If you have an Intel iGPU + NVIDIA dGPU, edit the wrapper to force Resolve onto the NVIDIA GPU:
sudo nano /usr/local/bin/resolve-nvidia-open
Uncomment these lines:
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
Troubleshooting
Resolve won't start / crashes immediately
- Check logs:
~/.local/share/DaVinciResolve/logs/ResolveDebug.txt - Verify NVIDIA driver is working:
nvidia-smi - Try launching from terminal to see errors:
resolve-nvidia-open
"Cannot open display" error
- Make sure XWayland is enabled in Hyprland (it is by default on Omarchy)
- Check the wrapper is using xcb:
grep QT_QPA_PLATFORM /usr/local/bin/resolve-nvidia-open
Resolve says "single instance already running"
Stale lockfiles from a previous crash. The wrapper clears these automatically, but if it persists:
rm -f /tmp/qtsingleapp-DaVinci*
Render queue says "in progress" forever, no output file
This is the audio render-blocker hang — Resolve's audio engine is stuck
enumerating ALSA cards. Confirm snd-aloop is loaded:
lsmod | grep snd_aloop
If absent, load it and retry:
sudo modprobe snd-aloop
If you ran the installer with RESOLVE_NO_ALOOP=1 and want to opt back in,
re-run the installer without that variable, or do it manually:
sudo modprobe snd-aloop
echo 'snd-aloop' | sudo tee /etc/modules-load.d/snd-aloop.conf
If lsmod shows snd_aloop is loaded but renders still hang, check the
clip codec with ffprobe — ProRes RAW will hang silently on Linux without
Apple's ProRes RAW SDK plugins, which is a separate issue from this audio
fix.
No audio during playback / monitor sink switches don't work
The PipeWire loopback bridge at
~/.config/pipewire/pipewire.conf.d/50-resolve-aloop-bridge.conf routes
the snd-aloop capture side to your default sink. If headphone/HDMI
switching stops working for Resolve playback, restart user PipeWire
services:
systemctl --user restart pipewire pipewire-pulse wireplumber
To remove the bridge entirely:
rm ~/.config/pipewire/pipewire.conf.d/50-resolve-aloop-bridge.conf
systemctl --user restart pipewire pipewire-pulse wireplumber
Missing library errors
Re-run the installer — it will re-patch RPATH and re-check dependencies:
./Omarchy_resolve_v2.sh
GPU not detected / OpenCL errors
- Ensure NVIDIA drivers are installed:
pacman -Qi nvidia-utils - Check GPU is visible:
nvidia-smi - Verify OpenCL:
pacman -S --needed opencl-nvidia
Updating Resolve
- Download the new version ZIP from Blackmagic's website to
~/Downloads/ - Run the installer again — it automatically picks the newest ZIP:
./Omarchy_resolve_v2.sh
The previous installation at /opt/resolve will be replaced.
Uninstalling
# Remove application
sudo rm -rf /opt/resolve
# Remove scripts
sudo rm -f /usr/local/bin/resolve-nvidia-open
sudo rm -f /usr/bin/davinci-resolve
# Remove desktop entries
sudo rm -f /usr/share/applications/DaVinciResolve.desktop
sudo rm -f /usr/share/applications/DaVinciControlPanelsSetup.desktop
sudo rm -f /usr/share/applications/blackmagicraw-player.desktop
sudo rm -f /usr/share/applications/blackmagicraw-speedtest.desktop
rm -f ~/.local/share/applications/davinci-resolve-wrapper.desktop
# Remove icons
sudo rm -f /usr/share/icons/hicolor/128x128/apps/davinci-resolve.png
sudo rm -f /usr/share/icons/hicolor/128x128/apps/davinci-resolve-panels-setup.png
sudo rm -f /usr/share/icons/hicolor/256x256/apps/blackmagicraw-player.png
sudo rm -f /usr/share/icons/hicolor/256x256/apps/blackmagicraw-speedtest.png
# Remove udev rules
sudo rm -f /usr/lib/udev/rules.d/99-BlackmagicDevices.rules
sudo rm -f /usr/lib/udev/rules.d/99-ResolveKeyboardHID.rules
sudo rm -f /usr/lib/udev/rules.d/99-DavinciPanel.rules
# Remove the snd-aloop autoload entry + PipeWire bridge (optional)
sudo rm -f /etc/modules-load.d/snd-aloop.conf
rm -f ~/.config/pipewire/pipewire.conf.d/50-resolve-aloop-bridge.conf
systemctl --user restart pipewire pipewire-pulse wireplumber
# Remove user data (WARNING: deletes all projects and settings)
rm -rf ~/.local/share/DaVinciResolve
# Update caches
sudo update-desktop-database
sudo gtk-update-icon-cache -f /usr/share/icons/hicolor
Credits
- Omarchy - The Arch Linux distribution this was built for
- Blackmagic Design - DaVinci Resolve
- Hyprland - Wayland compositor (XWayland support)
License
This project is provided as-is for the Omarchy community.