Jellyfin Forum
A310 Transcoding help - 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: A310 Transcoding help (/t-a310-transcoding-help)



A310 Transcoding help - aeto - 2024-11-29

Hello Jellyfin forums,
I'm having issues with hardware transcoding on my Jellyfin server.
I've tried getting some help on Discord, but the people there couldn't really assist (they tried, but didn't have much experience with intel GPUs), so I thought I should try the forums.
Here is some info on my setup:
CPU: Intel 4790K
GPU: Intel A310
OS: Debian with backported kernel (6.11.5+bpo-amd64)
Jellyfin deployment: Docker, deployed with a compose YAML through Portainer (see my YAML at the end)
Jellyfin version: v10.10.3
What currently happens when HW transcoding is turned on is that my CPU no longer spikes in usage, but the GPU spikes, as seen when trying to play this 4K HEVC HDR10 video file:
https://imgur.com/XzvNzfr

After buffering for a bit, I get the following error:
Playback Error
A fatal error was encountered in the HLS stream.
This event creates, as far as I can tell, three log files. I assume these are three attempts to start the transcode.
Log 1: https://pastebin.com/sHA0AupU
Log 2: https://pastebin.com/W2RQi1HK
Log 3: https://pastebin.com/LWBfw5sH
When HWA transcoding is turned off, the movie starts buffering, and my CPU quickly hits 100% usage (which is expected since it's 10 years old). With lower-resolution movies, it will start playing eventually (e.g., 720p footage). So, I assume the issue is unrelated to permissions for my media files (all folders/files are owned by the same user:group mapped to the container).

Following are screenshots of my current test settings inside of Jellyfin:
https://imgur.com/Ffnjjy7
https://imgur.com/PrkmRkt
https://imgur.com/aeVGrFW
https://imgur.com/9Sx6py4

Lastly, here is some extra info on my driver/hardware situation on my server:

$ inxi -b
System:
  Host: OfficeDeb1 Kernel: 6.11.5+bpo-amd64 arch: x86_64 bits: 64 Console: pty pts/0 Distro: Debian
    GNU/Linux 12 (bookworm)
Machine:
  Type: Desktop Mobo: ASRock model: Z97X Killer serial: <superuser required>
    UEFI-[Legacy]: American Megatrends v: P2.60 date: 03/06/2018
CPU:
  Info: quad core Intel Core i7-4790K [MT MCP] speed (MHz): avg: 1080 min/max: 800/4400
Graphics:
  Device-1: Intel DG2 [Arc A310] driver: i915 v: kernel
  Display: server: No display server data found. Headless machine? tty: 116x72
  API: OpenGL Message: GL data unavailable in console. Try -G --display
Network:
  Device-1: Qualcomm Atheros Killer E220x Gigabit Ethernet driver: alx
Drives:
  Local Storage: total: raw: 476.95 GiB usable: 238.35 GiB used: 17.59 GiB (7.4%)
Info:
  Processes: 370 Uptime: 12h 10m Memory: 15.57 GiB used: 4.12 GiB (26.5%) Init: systemd
  target: graphical (5) Shell: Bash inxi: 3.3.26

$ ls /dev/dri/
by-path  card0  renderD128

getent group render | cut -d: -f3
105

The following is the YAML I used in portainer

services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000
group_add:
- "105"
network_mode: 'host'
volumes:
- /docker/jellyfin/config:/config
- /docker/jellyfin/cache:/cache
- /mnt/nas/data/data/media:/media (note: yes the /data/data/ is intentional)
- /docker/jellyfin/fonts:/usr/local/share/fonts/custom
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
#environment:
#- JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
#extra_hosts:
#- 'host.docker.internal:host-gateway'


I hope you can help me find a solution to my issue. I've been working on this for almost two weeks now, and I just want it to work. It's been using up a lot of my time and energy.
If you need any extra information, please feel free to ask.
Thank you in advance,
aeto


RE: A310 Transcoding help - TheDreadPirate - 2024-11-29

Just checking that this Debian host is not like a VM or LXC or something, right?

Can you share the output of this command?

Code:
sudo dmesg | grep i915



RE: A310 Transcoding help - aeto - 2024-11-29

(2024-11-29, 02:34 AM)TheDreadPirate Wrote: Just checking that this Debian host is not like a VM or LXC or something, right?
Yes, Debian runs on bare metal.

(2024-11-29, 02:34 AM)TheDreadPirate Wrote: Can you share the output of this command?
Code:
sudo dmesg | grep i915

$ sudo dmesg | grep i915
[    2.911389] i915 0000:03:00.0: [drm] Found DG2/G11 (device ID 56a6) display version 13.00
[    2.912266] i915 0000:03:00.0: [drm] VT-d active for gfx access
[    2.912288] i915 0000:03:00.0: vgaarb: deactivate vga console
[    2.913609] i915 0000:03:00.0: [drm] Can't resize LMEM BAR - platform support is missing
[    2.913667] i915 0000:03:00.0: [drm] Using a reduced BAR size of 256MiB. Consider enabling 'Resizable BAR' or sim
ilar, if available in the BIOS.
[    2.928302] i915 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    2.931370] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin (70.12.1) is recommended, but only i91
5/dg2_guc_70.bin (70.5.1) was found
[    2.931373] i915 0000:03:00.0: [drm] GT0: Consider updating your linux-firmware pkg or downloading from https://g
it.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[    2.931993] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[    2.932002] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[    2.932004] i915 0000:03:00.0: [drm] *ERROR* GT0: HuC firmware i915/dg2_huc_gsc.bin: fetch failed -ENOENT
[    2.932007] i915 0000:03:00.0: [drm] GT0: HuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/l
inux/kernel/git/firmware/linux-firmware.git/tree/i915
[    2.932876] i915 0000:03:00.0: [drm] Finished loading DMC firmware i915/dg2_dmc_ver2_08.bin (v2.8)
[    2.936923] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 70.5.1
[    2.947999] i915 0000:03:00.0: [drm] GT0: GUC: submission enabled
[    2.948002] i915 0000:03:00.0: [drm] GT0: GUC: SLPC enabled
[    2.948205] i915 0000:03:00.0: [drm] GT0: GUC: RC enabled
[    2.985934] [drm] Initialized i915 1.6.0 for 0000:03:00.0 on minor 0
[    3.008926] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[    3.056921] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[    3.056927] snd_hda_intel 0000:04:00.0: bound 0000:03:00.0 (ops i915_audio_component_bind_ops [i915])
[    3.080921] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes



RE: A310 Transcoding help - TheDreadPirate - 2024-11-29

Do you have "non-free" and "non-free-firmware" in your debian sources?

What is the output of this command?

Code:
sudo apt list --installed | grep firmware

If you don't have any "non-free" listings here, read this forum post on how to add non-free sources.

https://forums.debian.net/viewtopic.php?t=159039

Then

Code:
sudo apt update ; sudo apt install firmware-linux-nonfree

Reboot and check that you don't see these messages anymore.

Code:
[    2.931370] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin (70.12.1) is recommended, but only i91
5/dg2_guc_70.bin (70.5.1) was found
[    2.931373] i915 0000:03:00.0: [drm] GT0: Consider updating your linux-firmware pkg or downloading from https://g
it.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[    2.931993] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[    2.932002] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[    2.932004] i915 0000:03:00.0: [drm] *ERROR* GT0: HuC firmware i915/dg2_huc_gsc.bin: fetch failed -ENOENT



RE: A310 Transcoding help - nyanmisaka - 2024-11-29

1. bpo kernel does not include bpo firmware package (bookworm does not provide those you need trixie/sid repo)
2. ARC GPU does not officially support 4th Gen Core processors


RE: A310 Transcoding help - aeto - 2024-11-29

(2024-11-29, 04:50 AM)TheDreadPirate Wrote: Do you have "non-free" and "non-free-firmware" in your debian sources?

I do have non-free packages activated.
Which btw has been the default setting since Debian 12 :)

(2024-11-29, 06:24 AM)nyanmisaka Wrote: 1. bpo kernel does not include bpo firmware package (bookworm does not provide those you need trixie/sid repo)
Ugh, I guess I'll have to reinstall my operating system then, as my previous experiments with Sid as few years ago did not go too well and I ended in dependency hell. Probably going for Ubuntu LTS in that case.
Or do you have any other concerns/recommendations for me? Personally not a huge fan of Canonical but if that the best option it's fine.
(2024-11-29, 06:24 AM)nyanmisaka Wrote: 2. ARC GPU does not officially support 4th Gen Core processors
This is very disheartening to hear. I wanted to use arc because I wanted to work against ewaste and deemed it cost effective, as the CPU is outside of transcoding still more than capable enough for what I've thrown at it for far with all of the rest of services running. The A310 seemed like a good cheap option to increase the lifespan and feature set, for relatively cheap. Additionally I was planning on using a 7th gen LGA 2066 CPU at some point, which is still in a PC that is in need of an upgrade, but that platform also doesn't support ReBar.

I did some more research specifically on what is not supported here, and it seems to be ReBar mainly?
Realistically how much performance am I losing or am I missing something else here? On your Hardware Selection page you say around 10%, but on Reddit I found figures as high as 70%. Considering this is mainly just for my girlfriend and I with the occasional friend or family, I don't think more than 2 simultaneous trans codes is the case for me.

I also still have a GTX 980 Ti laying around (which was originally in that system) But energy and AV1 support concerns made me get the Arc.



So is my Hardware that I currently own just not recent enough for Jellyfin transcodes? Playing original files is more than okay.
I use an nvidia shield TV (2019) in my living room and my main issue is the bad subtitle support that Android apparently has (according to a good friend who does Anime Fan-Subs who has talked to a Plex developer, so my info may be wrong). This makes watching Anime with more advanced subtitles basically unusable. Which is why I wanted to be able to transcode in the first place.

Thanks so much for your help so far. Knowing Debian doesn't support Arc at least sheds light on why I've lost so much hair over this (and there is not that much left), and eliminates the search for now. Switching to a new OS is annoying, but since I run everything in docker it should be fairly easy to re-deploy.

aeto


RE: A310 Transcoding help - nyanmisaka - 2024-11-29

The good news is that it is detected by your motherboard and linux kernel. But due to the lack of ReBAR support, the speed will be greatly reduced in some scenarios.

You can also refer to the documentation and pull the firmware files directly from the linux repo.

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-and-verify-lp-mode-on-linux


RE: A310 Transcoding help - aeto - 2024-11-29

(2024-11-29, 01:24 PM)nyanmisaka Wrote: The good news is that it is detected by your motherboard and linux kernel. But due to the lack of ReBAR support, the speed will be greatly reduced in some scenarios.

You can also refer to the documentation and pull the firmware files directly from the linux repo.

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-and-verify-lp-mode-on-linux

So,  it'll work, but I need to enable low power mode?
Am I understanding that correctly?
Should I still switch to Ubuntu LTS 24.04?


RE: A310 Transcoding help - TheDreadPirate - 2024-11-29

Low power encoding is mandatory for Arc, which the HuC and GuC firmware enable. Switching to Ubuntu 24.04 would make it a bit easier to use Arc since a new enough version is installed by default.