Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Offering info - Jellyfin working on evansport arch CPUs NASes like DS214Play (x86) #5941

Open
smymm opened this issue Nov 26, 2023 · 3 comments

Comments

@smymm
Copy link

smymm commented Nov 26, 2023

Hi!
I'm new here. I only registered to try to provide some info here to help with Synology NASes mounting Intel 32 bit processors (x86), like the DS214Play or DS415Play (CPU Intel Atom CE5335 "Evansport") to have Jellyfin working, if someone want to try.

I really wanted Jellyfin working in my DS214Play with DSM6, and I noticed that a package for these evansport CPUs doesn't exist and it's officially not supported, so I tried myself and I succeeded. I don't need transcoding (my players/client devices supports all codecs, so it's OK for me). Did some "quick an dirty" job on the existing Jellyfin spksrc in my Linux box to compile everything, and the result was a working package (For DSM 6.2.4, my DSM version). Finally I have a good media server working in my old NAS! (If you want to try the package in your NAS, I uploaded it here: https://github.com/smymm/miscSpksrcReleases/blob/main/Jellyfin-evansport/jellyfin_evansport-6.2.4_10.8.12-12.spk ). It's working OK if you dont' need transcoding (which is slow).

I don't have a lot of time now to explain everything with details, and someone here with the proper knowledge could add the correct way to do it to the repository (even though I guess it won't be added officially as 32 bit support is not welcome here for JF, and I understand it.), but these are some useful tips for getting this to compile and to get it working if you want to try, to give these old NASes a chance (I compiled Jellyfin v10.8.12):

  • The main problem is the lack of DotNet SDK for linux-x86 and the same happens with NodeJS for linux-x86 (jellyfin-web). These unofficial packages solve the problem, as they are close to the originals:

I calculated digests for the digests files required in the spksrc:

dotnet-sdk-6.0.417-linux-x86.tar.gz SHA1 539D2F97A0495A9497737A2EB3C5A5F573224879
dotnet-sdk-6.0.417-linux-x86.tar.gz SHA256 FE192CD9497CE0E66AC2FEFDBD8E3859EA0A84C82C51F544218BD1B230DFD335
dotnet-sdk-6.0.417-linux-x86.tar.gz MD5 975FFC9C3F954E350A15A0A68298C46C
node-v18.4.0-linux-x86.tar.xz SHA1 6E25CE573AE108F5CA9801C8A8B68F73E662EF8C
node-v18.4.0-linux-x86.tar.xz SHA256 EE38A001F25DED65FBBE3043E5884B32479AB7AC6770D8BFECE2BFF030F28F7B
node-v18.4.0-linux-x86.tar.xz MD5 3B2C42D2C4527314FB016C7641C2DA3C
  • You will also need (for the Docker of spksrc) some utils required by dotnet x86 in x86 binaries, so if you get errors when the scripts run "dotnet", like libicu, liblldb, others.... you'll need to install them, first adding the arch: dpkg --add-architecture i386 , and then install the required tools with the i386 support: apt install tool:i386

  • Makefile files also need to be modified (this is not the right way, but I did a quick and dirty modifications just for my needs)

  • For the native dotnet-sdk-6.0 it's like:
PKG_VERS = 6.0.417
PKG_EXT = tar.gz
PKG_DIST_NAME = dotnet-sdk-$(PKG_VERS)-linux-x86.$(PKG_EXT)
PKG_DIST_SITE = https://github.com/Servarr/dotnet-linux-x86/releases/download/v6.0.25-72/
  • For the native nodejs, it's like:
PKG_VERS = 18.4.0
PKG_EXT = tar.xz
PKG_DIST_NAME = node-v$(PKG_VERS)-linux-x86.$(PKG_EXT)
PKG_DIST_SITE = https://unofficial-builds.nodejs.org/download/release/v$(PKG_VERS)
PKG_DIR = node-v$(PKG_VERS)-linux-x86
  • For the spk/jellyfin:

Comment / remove line: #UNSUPPORTED_ARCHS = $(32bit_ARCHS)

  • For the cross-dotnet-env.mk:

Remove $(i686_ARCHS) from the UNSUPPORTED_ARCHS var

  • You will also need to add the *.nupkg files to a directory (for example, create /spksrc/native/dotnet-sdk-6.0/nuget) and add a local path for NuGet to get the correct packages for dotnet, because the online official pacakges will not be found, as they don't exist online:

<add key="Local" value="/spksrc/native/dotnet-sdk-6.0/nuget" />

If everything is Ok, it should compile, using the evansport arch, like: make arch-evansport-6.2.4

It worked for me, I'm happy with it using as a server for my devices' media apps. I don't know if this would be useful for someone like me, with an old NAS but wanting to have a very good media server if you don't need transcoding.

... Smy.

@ymartin59
Copy link
Contributor

Thanks for pointing existenc of these DotNet port for x86. We will see how to integrate and reuse in our build chain.

@hgy59

This comment was marked as off-topic.

@ElfsRage
Copy link

ElfsRage commented Nov 11, 2024

Hello,
Very good job!!
I just tested your jellyfin version for evansport DSM6 on my DSM7.
Overall, it works but I have a lot of errors:
[ERR] [3] Emby.Server.Implementations.Dto.DtoService: Failed to determine primary image aspect ratio for "/volume1/@appdata/jellyfin/data/metadata/library/ea/xxxxxx/poster.jpg"
System.NotImplementedException: The method or operation is not implemented.
at Emby.Drawing.NullImageEncoder.GetImageSize(String path)
at Emby.Drawing.ImageProcessor.GetImageDimensions(BaseItem item, ItemImageInfo info)
at Emby.Server.Implementations.Dto.DtoService.GetPrimaryImageAspectRatio(BaseItem item)
Could you help me because I am a novice in this field.
Thanks!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants