script.module.inputstreamhelper icon indicating copy to clipboard operation
script.module.inputstreamhelper copied to clipboard

inputstreamhelper downloaded wrong arch of libwidevinecdm.so?

Open lameventanas opened this issue 6 months ago • 6 comments

I started the Netflix addon after a long time, and I was prompted to update libwidevinecdm, so I followed the wizard. Once finished, I couldn't play the stream and I found this in the log file:

2025-05-22 16:52:18.232 T:15226    info <general>: Creating InputStream
2025-05-22 16:52:18.359 T:15226 warning <general>: AddOnLog: inputstream.adaptive: Warning "inputstream.adaptive.manifest_type" property is deprecated and will be removed next Kodi version, the manifest type is
 now automatically detected.
                                                   If you are using a proxy remember to add the appropriate "content-type" header to the HTTP manifest response
                                                   See Wiki page "How to provide custom manifest/license" to learn more about it.
2025-05-22 16:52:18.368 T:15226    info <general>: AddOnLog: inputstream.adaptive: [Repr. chooser] Resolution set: 1920x1080, max allowed: 1920x1080, Adjust refresh rate: 0
2025-05-22 16:52:18.373 T:15226   error <general>: AddOnLog: inputstream.adaptive: [WV-CDM-Library] Initialize: Failed to load library: /storage/.kodi/cdm/libwidevinecdm.so: wrong ELF class: ELFCLASS64
2025-05-22 16:52:18.373 T:15226   error <general>: AddOnLog: inputstream.adaptive: Unable to load widevine shared library (/storage/.kodi/cdm/libwidevinecdm.so)
2025-05-22 16:52:18.373 T:15226   error <general>: AddOnLog: inputstream.adaptive: PreInitializeDRM: OpenDRMSystem failed

I checked the new library, it seems to be arm 64-bit: libwidevinecdm.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=109fbe02a16653d8c9d55344548a1096c5a2583f, stripped

On an identical system (without updating the library), it shows: /storage/.kodi/cdm/libwidevinecdm.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=e7680c2cd57cd5c8210706aebe5ead67278ec5ae, stripped

I'm running CoreELEC on an Odroid C-4

# uname -a
Linux htpc1 4.9.269 #1 SMP PREEMPT Sun Jan 19 10:25:02 CET 2025 aarch64 GNU/Linux
# head .kodi/temp/kodi.log
2025-05-22 16:22:03.754 T:2806     info <general>: -----------------------------------------------------------------------
2025-05-22 16:22:03.754 T:2806     info <general>: Starting Kodi (21.2 (21.2.0) Git:0452c5d37b47ab4470d5b3283498321a02d626c5). Platform: Linux ARM 32-bit
2025-05-22 16:22:03.754 T:2806     info <general>: Using Release Kodi x32
2025-05-22 16:22:03.754 T:2806     info <general>: Kodi compiled 2025-01-19 10:31:32 by GCC 13.2.0 for Linux ARM 32-bit version 4.9.255 (264703)
2025-05-22 16:22:03.754 T:2806     info <general>: Running on Hardkernel ODROID-C4 with CoreELEC (official): 21.2-Omega, kernel: Linux ARM 64-bit version 4.9.269
2025-05-22 16:22:03.754 T:2806     info <general>: FFmpeg version/source: 6.0.1
2025-05-22 16:22:03.754 T:2806     info <general>: Host CPU: Amlogic S905X3 rev b, 4 cores available
2025-05-22 16:22:03.754 T:2806     info <general>: ARM Features: Neon enabled
2025-05-22 16:22:03.754 T:2806     info <general>: special://xbmc/ is mapped to: /usr/share/kodi/
2025-05-22 16:22:03.754 T:2806     info <general>: special://xbmcbin/ is mapped to: /usr/lib/kodi

lameventanas avatar May 22 '25 21:05 lameventanas

Same problem since I updated the widevine addon two days ago in Libreelec Kodi on a RapsberryPi 2 (for the Retrospect plugin). Error log shows Failed to load library: /storage/.kodi/cdm/libwidevinecdm.so: wrong ELF class: ELFCLASS64

RaspberryPi 2 (uname -a: Linux LibreELEC 6.6.70 #1 SMP Mon Jan 20 00:43:39 UTC 2025 armv7l GNU/Linux) Kodi 21.2 Omega inputstream v 0.7.0

It seems to have picked the wrong ChromeOS recovery image to extract the libwidevinecdm.so lib.

There is no older version I can revert back to.

Regards,

Paul

pschoond avatar May 26 '25 15:05 pschoond

I have the same issue.

I need the 32-bit binary, but inpustream.helper is downloading the 64-bit one by mistake.

I'm using webOS which is 32-bit OS using softfp with neon.

025-05-27 09:46:16.371 T:7694    error <general>: AddOnLog: inputstream.adaptive: [WV-CDM-Library] Failed to load library: /media/developer/apps/usr/palm/applications/org.xbmc.kodi/.kodi/cdm/libwidevinecdm.so: wrong ELF class: ELFCLASS64

uname -a

Linux LGwebOSTV-bedroom 5.4.268-320 #1 SMP PREEMPT Mon Jun 17 01:25:25 UTC 2024 aarch64 GNU/Linux

file libwidevinecdm.so

libwidevinecdm.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=109fbe02a16653d8c9d55344548a1096c5a2583f, stripped

getconf LONG_BIT

32

kodi.log

2025-05-27 09:19:39.830 T:4833     info <general>: -----------------------------------------------------------------------
2025-05-27 09:19:39.830 T:4833     info <general>: Starting Kodi (22.0-ALPHA1 (21.90.700) Git:20250508-83f8baabec). Platform: webOS ARM 32-bit
2025-05-27 09:19:39.830 T:4833     info <general>: Using Release Kodi x32
2025-05-27 09:19:39.830 T:4833     info <general>: Kodi compiled 2025-05-09 by GCC 12.2.0 for webOS ARM 32-bit version 3.10.19 (199187)
2025-05-27 09:19:39.830 T:4833     info <general>: Running on webOS TV 9.2.1, kernel: Linux ARM 64-bit version 5.4.268-320
2025-05-27 09:19:39.830 T:4833     info <general>: FFmpeg version/source: 7.1.1-Kodi
2025-05-27 09:19:39.830 T:4833     info <general>: 4 CPU cores available
2025-05-27 09:19:39.830 T:4833     info <general>: ARM Features: Neon enabled

cscd98 avatar May 27 '25 09:05 cscd98

Same issue here. I am running coreELEC with Kodi 21.2 on an Odroid N2 (Linux system with arm architecture). It currently has a 64bit Widevine version, while it should be a 32bit. Temporarily solved it as follows: Check the image file overview: https://dl.google.com/dl/edgedl/chromeos/recovery/recovery.conf Download the image for an Acer R13 Chromebook: https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_15886.44.0_elm_recovery_stable-channel_mp-v6.bin.zip The .zip file contains a .bin file. Extract this. Open the .bin file with 7-zip file manager. It contains approx. 10 .img files. Extract: 2.ROOT-A.img Open 2.ROOT-A.img and extract this file: opt/google/chrome/WidevineCdm/_platform_specific/cros_arm64/libwidevinecdm.so

SSH into the Odroid device and copy this file to: \storage.kodi\cdm\libwidevinecdm.so (overwriting the existing file) Now reboot and test.

koekiemonster99 avatar May 31 '25 17:05 koekiemonster99

I found that inputstreamhelper keeps several backups. You can restore them via de Configuration option of the addon. I got an error message during the restore but after a reboot it was working again. Easiest temp solution.

pschoond avatar May 31 '25 20:05 pschoond

Also affects me, on Raspberry Pi 4 with LibreELEC.

wanted0 avatar May 31 '25 21:05 wanted0

Also affects me, on Raspberry Pi 4 with LibreELEC.

Same here. For the temp fix I basically followed this post https://github.com/emilsvennesson/script.module.inputstreamhelper/issues/589#issuecomment-2925506156 by @koekiemonster99 An AI told me that Acer R13 Chromebook fits for the Pi4 LibreELEC as well.

In LibreELEC and when InputStream Helper is installed (which I assume people ending up here have), there is actually no need unzip several times down to the partitions and extract the lib manually.

Some more details, for those who struggled, like me (click to expand) ... Just download the chromeos zip and bring it to your kodi device here:
> LibreELEC (official): 10.0.4 (RPi4.arm)
> Linux ... 5.10.110 #1 SMP Sat Jan 7 12:15:32 UTC 2023 aarch64 GNU/Linux

I did it directly within the my LibreELEC device (enable ssh and log on with the root user):

mkdir /storage/downloads
# I recommend to use such a 'near /'-path as the AddOn cannot access a hidden path like .kodi -
# e.g. the InputStream Helper AddOn usually stores the chromeos.zip downloads under 
#  /storage/.kodi/userdata/addon_data/script.module.inputstreamhelper/

cd /storage/downloads
wget https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_15886.44.0_elm_recovery_stable-channel_mp-v6.bin.zip

As explained you can also download on your PC and transfer the zip on whatever way to the Kodi device.

Now (via Kodi UI) -> Open the InputStream Helper AddOn Konfig.

System > AddOns > User AddOns > Program AddOns -> InputStream Helper (open settings / konfig - don't remember the name ) Go to "Debug" and Select Install Widevine

Per default it would download and install the chromeos from the url you provided (one setting below -> so actually you can also copy in the URL and skip the whole download or transfer steps). Anyway I had it on my device already, so choose no, when you start the install dialog. It will then allow you, to select a zip manually. Go to '/storage/downloads' and select 'chromeos_15886.44.0_elm_recovery_stable-channel_mp-v6.bin.zip' let it install.

When it was finished, it asks for an update. Abort that!, otherwise you will get the latest non working one installed again.

I would disable the InputStream Helper AddOn for now. Also in the Apps like Disney+, Netflix, RTL+ (whatever you use and needs widewine) look for a setting to disable the widevine update/check, otherwise you will get bothered (and potentially trigger the update again), when you start the AddOn or a stream.

Remember all settings you disabled!
-> Once the issue is fixed, you want to use the automatic update of widevine again.

Smojo avatar Jun 26 '25 19:06 Smojo

The hana board uses aarch64 binaries, instead of arm binaries, see: https://www.chromium.org/chromium-os/developer-library/reference/development/developer-information-for-chrome-os-devices/

I selected Acer Chromebook Spin 311 (Jacuzzi, arm): https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_16267.51.0_jacuzzi_recovery_stable-channel_JacuzziMPKeys-v18.bin.zip

Same result :-(

More image versions: https://chromiumdash.appspot.com/serving-builds?deviceCategory=ChromeOS

pgillich avatar Jul 13 '25 20:07 pgillich

I selected an older model: AOpen Chromebox Mini I extracted the libwidevinecdm.so from https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_14388.61.0_veyron-fievel_recovery_stable-channel_fievel-mp.bin.zip

It works, but the version number is older.

Does Google build new images for 32-bit ARM yet?

pgillich avatar Jul 13 '25 21:07 pgillich

Today I'd try to set up a RPI 4 with OSMC. Got VRTMax and Goplay working, but when Inputstream Helper is asking to install Widevine it keeps crashing. Tried to install the version mentioned above (https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_15886.44.0_elm_recovery_stable-channel_mp-v6.bin.zip), but keeps asking for update, when ignoring this update playback is failed. When disabling Inputstream Helper playback fails. Any help/suggestions? Thanks

deurenkletser avatar Aug 05 '25 12:08 deurenkletser

Yesterday's update installed the 64bit version for me as well:

$ file libwidevinecdm.so 
libwidevinecdm.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=109fbe02a16653d8c9d55344548a1096c5a2583f, stripped

Expected was

$ file libwidevinecdm.so 
libwidevinecdm.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=e7680c2cd57cd5c8210706aebe5ead67278ec5ae, stripped

Maybe the device selector in https://github.com/emilsvennesson/script.module.inputstreamhelper/blob/master/lib/inputstreamhelper/widevine/arm.py selects an inappropriate image? The config map in https://github.com/emilsvennesson/script.module.inputstreamhelper/blob/master/lib/inputstreamhelper/config.py#L91 already mentions that "elm" and "hana" might be "probably 64bit soon", so maybe that's what happened?

Environment: Hardware: Raspberry Pi 3B+ Distribution: LibreELEC (official): 12.0.2 (RPi2.arm) uname -a: Linux kodi 6.6.70 #1 SMP Mon Jan 20 00:43:39 UTC 2025 armv7l GNU/Linux

fakingignorance avatar Aug 11 '25 07:08 fakingignorance

I selected an older model: AOpen Chromebox Mini I extracted the libwidevinecdm.so from https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_14388.61.0_veyron-fievel_recovery_stable-channel_fievel-mp.bin.zip

It works, but the version number is older.

I agree. This file works for a Pi 3 (32 bit)

cat /sys/firmware/devicetree/base/model
Raspberry Pi 3 Model B Plus Rev 1.3
uname -a
Linux MediaCentre 6.6.70 #1 SMP Mon Jan 20 00:43:39 UTC 2025 armv7l GNU/Linux

Note libwidevinecdm.so is in 2.ROOT-A.img\opt\google\chrome\

All I have to solve now is why ViwX ignores the input helper maximum bandwidth setting. (I have a slow internet connection and bandwidth is limited)

HLFCode avatar Aug 21 '25 14:08 HLFCode

This issue should be solved in version 0.8.1: https://github.com/emilsvennesson/script.module.inputstreamhelper/releases/tag/v0.8.1

mediaminister avatar Sep 22 '25 11:09 mediaminister