Jellyfin Forum
Unable to setup HW acceleration on Celeron N4500 (Intel UHD 600) - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Unable to setup HW acceleration on Celeron N4500 (Intel UHD 600) (/t-unable-to-setup-hw-acceleration-on-celeron-n4500-intel-uhd-600)



Unable to setup HW acceleration on Celeron N4500 (Intel UHD 600) - Nikojiro - 2025-07-29

Hi,

I'm trying to set up hardware acceleration on a Chuwi Herobox pro 2021 (Celeron N4500, 8GB of RAM, Intel UHD 600). I'm running Ubuntu server and installed the native Jellyfin package (using the official install script), version 10.10.7. I followed the steps from the tutorial for Intel GPUs).

Here's the output of a few commands:


:~$ ls -l /dev/dri
total 0
drwxr-xr-x 2 root root         80 Jul 29 11:33 by-path
crw-rw---- 1 root video  226,   0 Jul 29 11:33 card0
crw-rw---- 1 root render 226, 128 Jul 29 11:33 renderD128


:~$ sudo vainfo 
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: can't connect to X server!
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel® Gen Graphics - 24.1.0 ()
vainfo: Supported profile and entrypoints
     VAProfileNone                   : VAEntrypointVideoProc
     VAProfileNone                   : VAEntrypointStats
     VAProfileMPEG2Simple            : VAEntrypointVLD
     VAProfileMPEG2Main              : VAEntrypointVLD
     VAProfileH264Main               : VAEntrypointVLD
     VAProfileH264Main               : VAEntrypointEncSliceLP
     VAProfileH264High               : VAEntrypointVLD
     VAProfileH264High               : VAEntrypointEncSliceLP
     VAProfileVC1Simple              : VAEntrypointVLD
     VAProfileVC1Main                : VAEntrypointVLD
     VAProfileVC1Advanced            : VAEntrypointVLD
     VAProfileJPEGBaseline           : VAEntrypointVLD
     VAProfileJPEGBaseline           : VAEntrypointEncPicture
     VAProfileH264ConstrainedBaseline: VAEntrypointVLD
     VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
     VAProfileVP8Version0_3          : VAEntrypointVLD
     VAProfileHEVCMain               : VAEntrypointVLD
     VAProfileHEVCMain               : VAEntrypointEncSliceLP
     VAProfileHEVCMain10             : VAEntrypointVLD
     VAProfileHEVCMain10             : VAEntrypointEncSliceLP
     VAProfileVP9Profile0            : VAEntrypointVLD
     VAProfileVP9Profile1            : VAEntrypointVLD
     VAProfileVP9Profile2            : VAEntrypointVLD
     VAProfileVP9Profile3            : VAEntrypointVLD
     VAProfileHEVCMain422_10         : VAEntrypointVLD
     VAProfileHEVCMain444            : VAEntrypointVLD
     VAProfileHEVCMain444            : VAEntrypointEncSliceLP
     VAProfileHEVCMain444_10         : VAEntrypointVLD
     VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP

I've tried using both VAAPI and Intel QSync to no avail. Playback fails with either error 234 or 218 respectively.
Here's the log for a VAAPI playback attempt:

[2025-07-29 11:51:10.107 +00:00] [INF] User policy for "admin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True

[2025-07-29 11:51:10.134 +00:00] [INF] Deleting partial stream file(s) "/var/cache/jellyfin/transcodes/d8b1546347956f9017b0f93d8d03dff9.m3u8"
[2025-07-29 11:51:10.212 +00:00] [INF] Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[2025-07-29 11:51:10.213 +00:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -f avi -hwaccel vaapi -hwaccel_output_format vaapi -noautorotate -i file:\"/media/jellyfin/Animation/Avatar/The Legend of Korra [S01-S04][720p]/[AR] The Legend Of Korra Saison 1 Complete [720p S01 FULL]/Th
e legend of Korra 1x01 Welcome in Republic City [720p Avatar Realms].mp4\" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_vaapi -rc_mode VBR -b:v 5994556 -maxrate 5994556 -bufsize 11989112 -profile:v:0 high -sei -a53_cc -force_key_frames:0 \"expr:gte(t,n_force
d*3)\" -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12:extra_hw_frames=24\" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename \"4f
612c27eadb28e1d8ed1aeeb00979ca-1.mp4\" -start_number 0 -hls_segment_filename \"/var/cache/jellyfin/transcodes/4f612c27eadb28e1d8ed1aeeb00979ca%d.mp4\" -hls_playlist_type vod -hls_list_size 0 -y \"/var/cache/jellyfin/transcodes/4f612c27eadb28e1d8ed1aeeb00979ca.m3u8\""
[2025-07-29 11:51:10.778 +00:00] [ERR] FFmpeg exited with code 234
[2025-07-29 11:51:10.834 +00:00] [ERR] Error processing request. URL "GET" "/videos/a08071c0-e4ff-71d4-57aa-b61a473ccba1/hls1/main/-1.mp4".
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 234
  at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetDynamicSegment(StreamingRequestDto streamingRequest, Int32 segmentId)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetHlsVideoSegment(Guid itemId, String playlistId, Int32 segmentId, String container, Int64 runtimeTicks, Int64 actualSegmentLengthTicks, Nullable1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable
1 segmentLength, Nullable1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable1 enableAutoStreamCopy, Nullable1 allowVideoStreamCopy, Nullable1 allowAudioStreamCopy, Nullable1 breakOnNonKeyFrames, Nullable1 audioSampleRate, Nullable1 maxAudioBitDepth, Nullable1 audioBitRate, Nu
llable1 audioChannels, Nullable1 maxAudioChannels, String profile, String level, Nullable1 framerate, Nullable1 maxFramerate, Nullable1 copyTimestamps, Nullable1 startTimeTicks, Nullable1 width, Nullable1 height, Nullable1 maxWidth, Nullable1 maxHeight, Nullable1 videoBitRate, Nullable1 subtitleStreamI
ndex, Nullable1 subtitleMethod, Nullable1 maxRefFrames, Nullable1 maxVideoBitDepth, Nullable1 requireAvc, Nullable1 deInterlace, Nullable1 requireNonAnamorphic, Nullable1 transcodingMaxAudioChannels, Nullable1 cpuCoreLimit, String liveStreamId, Nullable1 enableMpegtsM2TsMode, String videoCodec, String sub
titleCodec, String transcodeReasons, Nullable
1 audioStreamIndex, Nullable1 videoStreamIndex, Nullable1 context, Dictionary2 streamOptions, Boolean enableAudioVbrEncoding, Boolean alwaysBurnInSubtitleWhenTranscoding)
  at lambda_method1079(Closure, Object)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask
1 actionResultValueTask)

  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
  at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
  at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
  at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
  at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
  at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
  at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
  at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
  at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
  at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
  at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
  at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
  at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
  at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
  at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
  at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
[2025-07-29 11:51:11.139 +00:00] [INF] Deleting partial stream file(s) "/var/cache/jellyfin/transcodes/4f612c27eadb28e1d8ed1aeeb00979ca.m3u8"
[2025-07-29 11:51:12.640 +00:00] [INF] Playback stopped reported by app "Jellyfin Web" "10.10.7" playing "The legend of Korra 1x01 Welcome in Republic City [720p Avatar Realms]". Stopped at "0" ms

I have no idea what's wrong here, thanks for helping.


RE: Unable to setup HW acceleration on Celeron N4500 (Intel UHD 600) - Nikojiro - 2025-07-29

Oh well, it seems I had not understood how transcoding works, and that my issue is on the client side. I've set up Jellyfin Media Player on my PCs and the Jellyfin app + MPV on my Android phone, everything is working now, including HEVC 10bit vids.Before that I was using the web player, beginner mistake...