-
Notifications
You must be signed in to change notification settings - Fork 258
Widevine AARCH64 support #1128
Copy link
Copy link
Closed
Labels
Issue Type: New featureissue has requested a new featureissue has requested a new featureResolution: Fixedissue was resolved by a code changeissue was resolved by a code changeTriage: Has proposed fixIssue has been reproduced and has a pending proposed fixIssue has been reproduced and has a pending proposed fix
Metadata
Metadata
Assignees
Labels
Issue Type: New featureissue has requested a new featureissue has requested a new featureResolution: Fixedissue was resolved by a code changeissue was resolved by a code changeTriage: Has proposed fixIssue has been reproduced and has a pending proposed fixIssue has been reproduced and has a pending proposed fix
We have aarch64 version of libwidevinecdm.so available now, as detailed here: emilsvennesson/script.module.inputstreamhelper#530
However to use it is still a challenge. I will document the requirements in this issue.
libnspr4.so dependency
not sure if this is new, but the libnspr4 package must be installed because libwidevinecdm.so depends on libnspr4.so
glibc patch for
_dt_determine_tlsoffsetthis patch is required: https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/devel/glibc/patches/arm/glibc-tls-libwidevinecdm.so-since-4.10.2252.0-has-TLS-with.patch
without it, there will be a SEGV when running
dlopen(). note that RPIOS already includes this patch in theirlibc6==2.31-13+rpt2+rpi1+deb11u5packageglibc patch for
GLIBC_ABI_DT_RELRsupport (if using glibc >= 2.36)patch found here: https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/devel/glibc/patches/arm/glibc-HACK-Don-t-check-GLIBC_ABI_DT_RELR-support-for-Chrom.patch
not currently required on ubuntu (using glibc 2.35) or debian/rpios (using glibc 2.31)
LSE atomic symbols present in .dynsym
inside the .so file, there are references to two required symbols:
it seems on chromeos they have modified glibc/gcc packages to provide these as dynamic symbols inside various libraries. on stock linux glibc systems, these are not present because they are only used as static/hidden methods provided by
libgcc.aand embedded inside every library that uses them. we would expect that these definitions would be embedded inside the widevine.so, but instead they are undefined and expected to be provided by an external library