Let's Get WideVine Working

WideVine for DRM access is vital for my use case. I have tested a number of distributions and this is the last piece of the puzzle.

Here’s what I’ve tried and where that’s taken me.
o extract ChromeOS for arm64 device and pull the libwidevinecdm.so and manifest, this ended up being a 32-bit lib:
libwidevinecdm.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked

o chased down a confirmed arm64 version here (second link in the comment): https://github.com/raspberrypi/Raspberry-Pi-OS-64bit/issues/248

o copied the manifest.json from another linux box along with the indicated directory tree:
WidevineCdm/
├── 4.10.2557.0
│ ├── LICENSE
│ ├── _metadata
│ │ └── verified_contents.json
│ ├── _platform_specific
│ │ └── linux_arm64
│ │     └── libwidevinecdm.so
│ ├── manifest.fingerprint
│ └── manifest.json
└── latest-component-updated-widevine-cdm

Making sure the correct arm64 libwidevinecdm.so was in place.

o first test was with Chromium since it has acceleration by placing copies in the expected dir for the chromium-browser version:
~/.config/chromium/WidevineCdm/

That didn’t result in WideVine showing via: chrome://components or playing drm content.

For good measure, also tested the snap version via:
~/snap/chromium/common/chromium/WidevineCdm/

o deleted the above Chromium local entries and tested the global location: /usr/lib/chromium-browser/

o symlinked other possible architecture names to linux_arm64 including:
linux_arm
arm64
aarch64

o tested firefox by adding the WidevineCdm dir to:
~/snap/firefox/common/.mozilla/firefox/PROFILE.default-release/gmp-widevinecdm/ where PROFILE is specific to your install
and
~/snap/firefox/common/.mozilla/extensions/gmp-widevinecdm

As neither of those browsers worked and Vivaldi has some details about WideVine, I tested it after installing their arm64 deb pkg. By default, this has a symlink to the Google Chrome location, so I copied the files there: /opt/google/chrome/WidevineCdm/

Interestingly, Vivaldi now correctly shows WideVine’s version in:
Widevine-in-Vivaldi

It looks like it sees widevine but content decryption fails:

Before Widevine, each browser gives the same message with amazon video content:

After symlinking in Vivaldi, the video starts to play but then errors with:

The options with the Rock5 open way up once this is working.

Anybody have experience with WideVine and have some thoughts on next steps?

Much appreciated!

1 Like

Thank you very much ! Im gonna have a look into this at home. I did installed vivaldi 64bits and the method for 64 didnt worked … someone had mentioned the 32 bits is working but… I wasnt sure about that (to reinstall vivaldi into 32 bits would require arquitecture change yatta yatta yatta)…

Update: Yes I did the whole supposed tutorial on vivaldi moved files into it and still couldnt get it to update its version from 0.0.0.0.0 mostly because widevine 64 is not meant to work on vivaldi 64…so I guess u can with the widevine 32… but idk if it requires vivaldi 32 instead…

Update 2: In your explanation you are meant to run vivaldi with this:

/usr/bin/vivaldi-stable --disable-seccomp-filter-sandbox --user-agent="Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"

Also turn on the vivaldi://flags Override software rendering
See if it works. Follow the bottom of my topic here if it helps you: https://forum.radxa.com/t/guide-openfyde-rock-5b-the-best-options/15338

widevine just works till l3

I think monka made an image recently with it working.

that is l3 , man 15 characters

1 Like

Original post with instructions was this one that I had found before: https://forum.armbian.com/topic/16288-linux-os-with-drm-enable-gpu-hardware-accelerated-–-how-to/

December 4, 2020 is that post and things chnage a lot in 3 years

and if you followed it there seems a lib issue

2 Likes

Thanks Folks, I appreciate the ideas.

Testing the user-agent startup change and ensuring HW support is enabled didn’t appear to make any headway:

That RK3399 thread did lead me to check the installed libdrm pkgs:
apt list --installed | grep libdrm
libdrm-amdgpu1/jammy-updates,now 2.4.113-2~ubuntu0.22.04.1 arm64 [installed,automatic]
libdrm-common/jammy-updates,now 2.4.113-2~ubuntu0.22.04.1 all [installed,automatic]
libdrm-nouveau2/jammy-updates,now 2.4.113-2~ubuntu0.22.04.1 arm64 [installed,automatic]
libdrm-radeon1/jammy-updates,now 2.4.113-2~ubuntu0.22.04.1 arm64 [installed,automatic]
libdrm2/jammy-updates,now 2.4.113-2~ubuntu0.22.04.1 arm64 [installed,automatic]

Comparing an amd64 system, it has quite a few more installed. By installing: libdrm-dev, a few more came along for the ride:
libdrm-etnaviv1
libdrm-freedreno1
libdrm-tegra0
libpciaccess-dev

There appear to be amd and nvidia specific pkgs, so I wonder if this is what’s missing for our sbc and its gpu?

The only mention of DRM in the vivaldi://gpu page appears to be an AMD specific:

I may look at installing 32-bit compatibility libs along with 32-bit Vivaldi then use the ChromeOS armhf libwidevinecdm.so I previously pulled.

Open to any other thoughts or experience in the meanwhile?

Much thanks!

Tbh… we are not there yet … Yes we can do a few shenenigans changing arquitecture to run vivaldi hmrf and its widevine plugin its said to work that way. But tbh… its not a permanent solution. I have no more clues.
I guess we are not there yet.

useless topic can be closed

Dont be rude leave it be. If someone finds a solution this is the wey \w/

it is rude to think as non linux user that when it is even explained to you what the issue is and what the solution is to have a opinion so bad

Poor guy Im gonna cry a river over your behind the screen bullyness. What is this ? what are we now TK vs Igor Specky?
Fuck off.

1 Like

keep your rude comments at yourself

and there is no … vs …

it is explained what and why on the discord yesterday and if you still think it is solved with some package mixing , yep then your even not only a non-linux user but also a non computer user .

Mate this is not my thread… and if the owner decide its easier this way to have an understanding about widevine drm since another post from back 2020 made almost clear it works with the 32 bits version and as for the main subject to have drm working with widevine its still relevant.
Now this is not yours or mine and you are not owning nothing here. Stop saying stupid shit like:

Maybe this help a bit: https://www.da.vidbuchanan.co.uk/blog/netflix-on-asahi.html
Detailed guide but looks like glibc patch is also required.

1 Like

Thanks @Damien, this is helpful. I’m going through this code to look for a way to apply to ubuntu jammy on the Rock5. :beers:

Super guide ! Really interesting to read. Thanks.

Here is the Widevine repo from Rockchip Android SDK. Not sure if that can be used on Linux.

1 Like

We need a patched glibc and a widevine enabled chromium.
Chromium is on the way: https://launchpad.net/~liujianfeng1994/+archive/ubuntu/rockchip-multimedia/+build/25689009
Glibc will also get uploaded to my rockchip-multimedia ppa soon.
I have made chromium pass https://bitmovin.com/demos/drm

2 Likes