Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Widevine for Helium Browser

Installs Widevine DRM for Helium Browser on Arch Linux.

Helium does not ship Widevine due to licensing costs. This script downloads the official Google Chrome .deb package, extracts only the Widevine CDM binary, formats it for Chromium's component updater, and patches your desktop entry so DRM content plays without launching from the terminal.

Tested on Arch Linux and Helium 0.16.x with GNOME Wayland.

What It Does

  1. Downloads google-chrome-stable_current_amd64.deb from Google's servers.
  2. Extracts WidevineCdm/ using ar and bsdtar (both in base Arch).
  3. Parses the CDM version from manifest.json.
  4. Installs the CDM to ~/.config/net.imput.helium/WidevineCdm/<version>/.
  5. Writes the latest-component-updated-widevine-cdm hint file.
  6. Patches helium.desktop with --widevine-cdm-path and --widevine-cdm-version flags.
  7. Cleans up all temporary files.

Requirements

  • Arch Linux
  • Helium Browser installed (helium-browser-bin from cachyos repositories or aur)
  • Helium opened at least once (generates config directory)
  • binutils (provides ar) - installed automatically if missing
  • libarchive (provides bsdtar) - in base
  • curl, grep, sed - in base

Installation

git clone https://github.com/fernbacher/widevine-helium.git
cd widevine-helium
chmod +x install-widevine-helium.sh
./install-widevine-helium.sh

Options

-h, --help        Show help
-v, --verbose     Verbose output
-d, --dry-run     Show actions without executing
-V, --version     Print version

Examples

# Standard install
./install-widevine-helium.sh

# Verbose install
./install-widevine-helium.sh --verbose

# Preview without making changes
./install-widevine-helium.sh --dry-run

How It Works

Chromium forks load Widevine via the Component Updater. The updater expects:

~/.config/<browser>/WidevineCdm/<version>/manifest.json
~/.config/<browser>/WidevineCdm/<version>/_platform_specific/linux_x64/libwidevinecdm.so
~/.config/<browser>/WidevineCdm/latest-component-updated-widevine-cdm

This script creates that exact structure and writes the hint file so the updater recognizes the locally installed CDM. It then patches the desktop entry with explicit launch flags as a fallback, since some Chromium forks disable the component updater at compile time.

Verifying

After running the script:

  1. Close Helium completely.
  2. Open Helium normally (from app grid, rofi, or taskbar).
  3. Go to https://listen.tidal.com and play a track.
  4. Or test with https://bitmovin.com/demos/drm for general DRM verification.

If playback works, the installation is successful.

Uninstall

# Remove the Widevine CDM directory
rm -rf ~/.config/net.imput.helium/WidevineCdm

# Restore the original desktop file
rm -f ~/.local/share/applications/helium.desktop
rm -f ~/.local/share/applications/helium.desktop.bak

# Update desktop database
update-desktop-database ~/.local/share/applications

Updating

Re-run the script. It detects the new Chrome version, installs the updated CDM, removes old version directories, and re-patches the desktop entry.

./install-widevine-helium.sh

Troubleshooting

Script says "Helium config directory not found"

Open Helium once, close it, then re-run the script. The config directory ~/.config/net.imput.helium/ is created on first launch.

Tidal shows error S6001 after install

The component updater may be disabled in your Helium build. Launch manually:

helium-browser \
  --widevine-cdm-path="$HOME/.config/net.imput.helium/WidevineCdm/$(cat ~/.config/net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm)/_platform_specific/linux_x64/libwidevinecdm.so" \
  --widevine-cdm-version="$(cat ~/.config/net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm)"

If this works, the desktop patch failed. Check ~/.local/share/applications/helium.desktop and verify the Exec= lines contain the flags.

"Failed to download Chrome"

Check your network connection and DNS. Google blocks some regions and VPNs.

Script fails on ar or bsdtar

Install the missing tools:

sudo pacman -S binutils libarchive

Security Notes

  • The script only downloads from https://dl.google.com.
  • No system files are modified. All changes are in ~/.config/ and ~/.local/share/applications/.
  • The Widevine binary is proprietary and owned by Google. This script does not redistribute it.
  • No AUR packages are installed. No Flatpak. No sudo required for the DRM itself.

License

MIT. Widevine CDM binary remains property of Google LLC.

About

Installs Widevine DRM for Helium Browser on Arch Linux

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages