Chromium 113.0.5672.63 (Official Build) on Raspberry Pi not able to play protected content (DRM)

I tried installing chromium on my pi, chromium version is 113.0.5672.63 (Official Build) Arch Linux ARM (64-bit). then I tried playing content from prime video but I still see protected content error. I tried the following steps but couldn’t get it working in chromium and firefox browser.

  1. I downloaded the deb package of widevine libwidevinecdm0_4.10.2252.0+3_arm64.deb from packages/widevine-aarch64 then converted it to aarch64 packege and installed on my pi. Tried rebooting pi, checked the settings in chromium and firefox but the option was not found.

  2. I tried running the script by cloning the widevine-aarch64 file from widevine-aarch64.git as follows
    cd /home/user/Downloads
    sudo pamac build widevine-aarch64 glibc-widevine
    when I ran the above command I got error
    Checking inter-conflicts…
    Error: Failed to prepare transaction: - glibc needs to be removed but it is a locked package
    also I tried running the python script widevine_fixup.py present inside downloaded widevine-aarch64 file. Also tried running ./register_widevine_chromium and ./register_widevine_firefox present in the same folder but I had no luck so far.

Can anyone please guide upon this…

Did you try widevine-aarch64 from the AUR?

I was going to try that but I can not get it’'s depend glibc-widevine from AUR to compile. The guy has not updated it since last February.

syslog.c:113:30: error: inlining failed in call to ‘always_inline’ ‘syslog’: function not inlinable
  113 | ldbl_strong_alias (__syslog, syslog)
      |                              ^~~~~~
./../include/libc-symbols.h:143:26: note: in definition of macro ‘_strong_alias’
  143 |   extern __typeof (name) aliasname __attribute__ ((alias (#name))) \
      |                          ^~~~~~~~~
../sysdeps/generic/math_ldbl_opt.h:14:44: note: in expansion of macro ‘strong_alias’
   14 | #define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname)
      |                                            ^~~~~~~~~~~~
syslog.c:113:1: note: in expansion of macro ‘ldbl_strong_alias’
  113 | ldbl_strong_alias (__syslog, syslog)
      | ^~~~~~~~~~~~~~~~~
syslog.c:155:17: note: called from here
  155 |                 syslog(INTERNALLOG,
      |                 ^~~~~~~~~~~~~~~~~~~
  156 |                     "syslog: unknown facility/priority: %x", pri);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

off topic, but
got chromium play youtube A/V not sync, what to do?

I revisited building glibc-widevine today. It appears that after a certain glibc version an extra compile flag needs to be added in the PKGBUILD.

-  CPPFLAGS=${CPPFLAGS/-D_FORTIFY_SOURCE=2/}
+  CPPFLAGS=${CPPFLAGS/-D_FORTIFY_SOURCE=2/} # Before and
+  CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2,/} # after https://github.com/archlinux/svntogit-packages/commit/a790c38

I do not have any paid subscriptions to test and not really familiar how things work.

Notes from the author:

"mogwai commented on 2023-02-23 07:37 (UTC) (edited on 2023-03-09 11:55 (UTC) by mogwai)

Please make sure to run the registering scripts register_widevine_firefox and/or register_widevine_chromium for every user that needs to be able to use widevine. This script only needs to be run once; no need to repeat it after upgrade.

The latest version no longer requires the LD_PRELOAD!!!

In order to get netflix to run, you need to spoof the user agent of the browser by setting it to ChromeOS."

I built this on the unstable branch so do not know if it will even work on the stable branch but should work on the testing since it has a recent snap today; if it works at all. lol…

Link to the packages I built this mourning. (glibc-widevine will replace your existing glibc with extra support for widevine):

glibc-widevine 2.35-5.2-
glibc-widevine-debug 2.35-5.2
widevine-aarch64-4.10.2257.0-4

md5sum:
c7e9e36b076fb066e25cbd136d9bc1ab widevine.tar

https://drive.google.com/file/d/1Rm4aPCuxRRMsDCC_I5sJi0TMmSZ-1mA7/view?usp=sharing

2 Likes

Yes I tried it out, but I am not sure what I did was correct or not.

Thank you @Darksky for your support… I really appreciate it. I tried installing al the packages that you have provided and also ran the script register_widevine_firefox and/or register_widevine_chromium then tried reopening the browser but still couldn’t get it running prime video in it. Let me know If I should try anything else please…
Thank you :slight_smile:

Could anyone able to get it working with this method ? If yes could you informe how is it done step by step please…

I can confirm it’s working (amazon prime and tv). I have just installed widevine-aarch64 from aur with yay and ran the script .
Launch chromium in a terminal and post the output.
You can try also in a terminal :

  env LD_PRELOAD=/opt/WidevineCdm/libgcc_hide.so /usr/bin/chromium

Thanks for the report. I had tried this on some widevine test sites and it seemed to work but they are not the same as actual paid subscriptions sites.

According to the author the LD_PRELOAD was not necessary any more but maybe it is… Also supposedly a patch was submitted upstream for glibc so the glibc-widevine package may not be needed sometime in the future.

The problem with widevine and linux is that only L3 widevine is supported. For parity with X86 processor it is OK but i don’t understand the point of view of the industry. You must ‘legally’ download a movie if you want to see it in 1080p. And if you use linux you are more that expected capable to do that. What is the utility ? It’s counterproductive.

By the way I am not seeing /opt/WidevineCdm/libgcc_hide.so in your LD_PRELOAD path in the package I built. Is it in yours?

[ray@jellyfin WidevineCdm]$ tree
.
├── chromium
│   ├── libwidevinecdm.so
│   ├── manifest.json
│   └── _platform_specific
│       └── linux_arm64
│           └── libwidevinecdm.so -> ../../libwidevinecdm.so
└── firefox
    └── 4.10.2257.0 -> ../chromium

i have deleted the package but

yay -Ql widevine-aarch64 | grep widevine
widevine-aarch64 /opt/
widevine-aarch64 /opt/WidevineCdm/
widevine-aarch64 /opt/WidevineCdm/chromium/
widevine-aarch64 /opt/WidevineCdm/chromium/_platform_specific/
widevine-aarch64 /opt/WidevineCdm/chromium/_platform_specific/linux_arm64/
widevine-aarch64 /opt/WidevineCdm/chromium/_platform_specific/linux_arm64/libwidevinecdm.so
widevine-aarch64 /opt/WidevineCdm/chromium/libwidevinecdm.so
widevine-aarch64 /opt/WidevineCdm/chromium/manifest.json
widevine-aarch64 /opt/WidevineCdm/firefox/
widevine-aarch64 /opt/WidevineCdm/firefox/4.10.2257.0
widevine-aarch64 /usr/
widevine-aarch64 /usr/bin/
widevine-aarch64 /usr/bin/register_widevine_chromium
widevine-aarch64 /usr/bin/register_widevine_firefox
widevine-aarch64 /usr/lib/
widevine-aarch64 /usr/lib/firefox/
widevine-aarch64 /usr/lib/firefox/browser/
widevine-aarch64 /usr/lib/firefox/browser/defaults/
widevine-aarch64 /usr/lib/firefox/browser/defaults/preferences/
widevine-aarch64 /usr/lib/firefox/browser/defaults/preferences/widevine.js
widevine-aarch64 /usr/share/
widevine-aarch64 /usr/share/licenses/
widevine-aarch64 /usr/share/licenses/widevine-aarch64/
widevine-aarch64 /usr/share/licenses/widevine-aarch64/eula_text.html

i confirm no need to specify LD_PRELOAD now.

1 Like

I tried loading chromium using env LD_PRELOAD=/opt/WidevineCdm/libgcc_hide.so /usr/bin/chromium but it didn’t work, when I checked in /opt/WidevineCdm, I couldn’t find libgcc_hide.so inside.
Also when I grep Widevine
yay -Ql widevine-aarch64 | grep widevine

I get error: package ‘widevine-aarch64’ was not found

But I did install libwidevinecdm0-4.10.2252.0-1-aarch64.pkg.tar.zst

The widevine-aarch64 author in AUR updated his package today. The are several changes in his PKGBUILD and and a redo of the register_widevine_firefox script. The actual .deb’s used are the same version. Since he updated a couple of weeks ago I can only assume that today’s changes are bug fixes.

It still depends on the same glibc-widevine package I built in my post #5 above. You will have to rerun the register_widevine_firefox script after installing this new package from the link below.

mdsum:
292f481ebe8a0dc02b7f02b5e00dbb87 widevine-aarch64-4.10.2257.0-6-aarch64.pkg.tar.zst

https://drive.google.com/file/d/1dDtsiUb_FWlbi6TZOxgrUIsC3l-Hr126/view?usp=drive_link

1 Like

Thanks for all your support.
I am finally able to get it working :grinning::grinning:
Since i am new to aarch environment I was not aware of most of the commands. I have now used the aarch Linux helper tool “yay” to do all the installation. Here are the steps that i followed

Initially by default yay is not installed and in order to install it we need fakeroot which can be installed with
sudo pacman -S base-devel
Then we have to clone the yay from git repo for which if git is required
sudo pacman -S git
Then open a terminal and go to opt folder (where i installed yay)
cd /opt
Then clon yay
sudo git clone https://aur.archlinux.org/yay-git.git

Change the file permissions from the root to the sudo user as follows
(Note : change user as per the name of your system)
sudo chown -R user:user ./yay-git

cd yay-git
For installing yay below command is used
makepkg -si
With this you should get yay installed in your system.
Now i have downloaded the widevine.tar file containing glibc-widevin shared by @Darksky
widevine.tar - Google Drive 6

Then go to downloaded folder and extract the widevine.tar file and open the terminal inside the extracted folder where you can find the glibc-widevine package and install it using yay
yay -U glibc-widevine… (I installed non debug version)
Then Download the latest Widevine packege
widevine-aarch64-4.10.2257.0-6-aarch64.pkg.tar.zst - Google Drive 3
similar way provided by @Darksky and installed using yay command
yay -U widevine-aarch64-4.10.2257.0-6-aarch64.pkg.tar.zst

Then you have to download and run the registration script in terminal like ./register_widevine_chromium
./register_widevine_firefox

Special thanks to @Darksky and others for their contribution and support :blush::bouquet: