2 hours ago
I'm running TrueNAS Scale 25.10 and just installed an ARC A310 as the latest version of Scale dropped support for my aging NVIDIA Quadro P620. I've got Jellyfin installed as a TrueNAS App and have selected to pass through the GPU to the App, however, I can't get hardware transcoding to work. I'm checking when streaming from a remote client over mobile where I've capped the remote bitrate to something quite low, but the A310 doesn't seem to come into play. Some deets:
On startup the logs show:
And the Transcoding setup has QSV selected and I've manually entered as the device, and all three options are selected under "Hardware encoding options"
I checked and the container was not running with group permissions that had write access toso I changed the group for the App to "render"
Here's what log output looks like when I start streaming from a mobile device connected over LTE:
I'll note I'm running on some fairly old hardware, circa-2018 Xeon E5-2640 machine, so I don't know if that's part of the problem or not.
What might I be missing here?
Code:
intel_gpu_topCode:
sudo dmsg - i | grep i915Code:
[ 9.641667] i915 0000:0a:00.0: enabling device (0000 -> 0002)
[ 9.641695] i915 0000:0a:00.0: [drm] Found DG2/G11 (device ID 56a6) display version 13.00 stepping C0
[ 9.642589] i915 0000:0a:00.0: [drm] VT-d active for gfx access
[ 9.642637] i915 0000:0a:00.0: [drm] Can't resize LMEM BAR - platform support is missing
[ 9.642650] i915 0000:0a:00.0: [drm] Using a reduced BAR size of 256MiB. Consider enabling 'Resizable BAR' or similar, if available in the BIOS.
[ 9.657741] i915 0000:0a:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[ 9.662369] i915 0000:0a:00.0: [drm] Finished loading DMC firmware i915/dg2_dmc_ver2_08.bin (v2.8)
[ 9.672217] i915 0000:0a:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 70.36.0
[ 9.672223] i915 0000:0a:00.0: [drm] GT0: HuC firmware i915/dg2_huc_gsc.bin version 7.10.16
[ 9.681806] i915 0000:0a:00.0: [drm] GT0: GUC: submission enabled
[ 9.681810] i915 0000:0a:00.0: [drm] GT0: GUC: SLPC enabled
[ 9.682067] i915 0000:0a:00.0: [drm] GT0: GUC: RC enabled
[ 9.745664] [drm] Initialized i915 1.6.0 for 0000:0a:00.0 on minor 1
[ 9.825129] i915 0000:0a:00.0: [drm] Cannot find any crtc or sizes
[ 9.825139] snd_hda_intel 0000:0b:00.0: bound 0000:0a:00.0 (ops i915_audio_component_bind_ops [i915])
[ 9.865131] i915 0000:0a:00.0: [drm] Cannot find any crtc or sizes
[ 10.591044] i915 0000:0a:00.0: [drm] GT0: HuC: authenticated for all workloads
[ 10.591051] mei_pxp i915.mei-gsc.2560-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:0a:00.0 (ops i915_pxp_tee_component_ops [i915])On startup the logs show:
Code:
MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan"]And the Transcoding setup has QSV selected and I've manually entered
Code:
/dev/dri/renderD128I checked and the container was not running with group permissions that had write access to
Code:
/dev/dri/renderD128Here's what log output looks like when I start streaming from a mobile device connected over LTE:
Code:
2025-11-16 00:22:11.397689+00:00[14:22:11] [INF] [52] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for darren. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
2025-11-16 00:22:11.398166+00:00[14:22:11] [INF] [52] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 4000000, RemoteIP: 10.0.1.101, IsInLocalNetwork: True
2025-11-16 00:22:12.336517+00:00[14:22:12] [INF] [47] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
2025-11-16 00:22:12.361523+00:00[14:22:12] [INF] [47] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -fflags +genpts -f matroska -i file:"<REDACTED>" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -tag:v:0 dvh1 -strict -2 -bsf:v hevc_mp4toannexb -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 6 -hls_segment_type fmp4 -hls_fmp4_init_filename "1ecdade647ff0fbd2a36e2a23971e66a-1.mp4" -start_number 0 -hls_segment_filename "/cache/transcodes/1ecdade647ff0fbd2a36e2a23971e66a%d.mp4" -hls_playlist_type vod -hls_list_size 0 -hls_segment_options movflags=+frag_discont -y "/cache/transcodes/1ecdade647ff0fbd2a36e2a23971e66a.m3u8"
2025-11-16 00:22:13.865123+00:00[14:22:13] [INF] [46] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Stopping ffmpeg process with q command for /cache/transcodes/1ecdade647ff0fbd2a36e2a23971e66a.m3u8
2025-11-16 00:22:14.023952+00:00[14:22:14] [INF] [46] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 0
2025-11-16 00:22:14.029840+00:00[14:22:14] [INF] [46] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
2025-11-16 00:22:14.030878+00:00[14:22:14] [INF] [46] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -ss 00:30:14.300 -noaccurate_seek -fflags +genpts -f matroska -i file:" <REDACTED> " -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -tag:v:0 dvh1 -strict -2 -bsf:v hevc_mp4toannexb -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 6 -hls_segment_type fmp4 -hls_fmp4_init_filename "1ecdade647ff0fbd2a36e2a23971e66a-1.mp4" -start_number 302 -hls_segment_filename "/cache/transcodes/1ecdade647ff0fbd2a36e2a23971e66a%d.mp4" -hls_playlist_type vod -hls_list_size 0 -hls_segment_options movflags=+frag_discont -y "/cache/transcodes/1ecdade647ff0fbd2a36e2a23971e66a.m3u8"
2025-11-16 00:22:27.870983+00:00[14:22:27] [INF] [52] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 0 I'll note I'm running on some fairly old hardware, circa-2018 Xeon E5-2640 machine, so I don't know if that's part of the problem or not.
What might I be missing here?
