Flioner 0 Posted May 17, 2025 Posted May 17, 2025 (edited) I'd really appreciate the help (Should I post this here, or is there a more appropiate place?): Hardware Encoding options are empty, however in the embyserver.txt logs FFMPEG succeeds to detect a vaapi decoding, and also quicksync. If I inspect the container in docker desktop, I see: "CpusetMems": "", "Devices": [ { "PathOnHost": "/dev/dri/renderD128", "PathInContainer": "/dev/dri/renderD128", "CgroupPermissions": "rwm" }, { "PathOnHost": "/dev/dri/card0", "PathInContainer": "/dev/dri/card0", "CgroupPermissions": "rwm" } ], However, when it comes to hardware_detection.txt It defaults to software and cant find anything. This is my Docker Compose: emby: image: emby/embyserver:latest container_name: embyserver environment: - UID=1000 - GID=4 - GIDLIST=100,44,110 - LIBVA_DRIVER_NAME=iHD group_add: - "44" #video - "110" #render volumes: - ./emby-data:/config # Configuration directory - /home/plex/Public/14TB/Series:/mnt/share1 # Media directory - /home/plex/Public/14TB/Movies:/mnt/share2 # Media directory ports: - 8096:8096 # HTTP port - 8920:8920 # HTTPS port privileged: true devices: - /dev/dri/renderD128:/dev/dri/renderD128 - /dev/dri/card0:/dev/dri/card0 restart: on-failure I'm mounting the devices individually, but it is the same output when I pass /dev/dri only I've confirmed that both card0 and renderD128 exist. hardware_detection-63883103280.txt embyserver.txt Edited May 17, 2025 by Flioner
Flioner 0 Posted May 17, 2025 Author Posted May 17, 2025 This is using an Intel Core i5 11400 with RocketLake-S GT1 UHD Graphics 730
Flioner 0 Posted May 17, 2025 Author Posted May 17, 2025 Unfortunately switching to the beta image, didn't work. I'm running out of troubleshooting steps
Luke 42077 Posted May 18, 2025 Posted May 18, 2025 @Flionerare you able to try the native package on the host machine directly to see how things compare? 1
Q-Droid 989 Posted May 18, 2025 Posted May 18, 2025 14 hours ago, Flioner said: This is using an Intel Core i5 11400 with RocketLake-S GT1 UHD Graphics 730 I think the current stable release should work for this CPU/iGPU. What OS distro and version are you running? I would start by removing/commenting these entries from your compose: Quote - LIBVA_DRIVER_NAME=iHD group_add: - "44" #video - "110" #render Run these to make sure the kernel is detecting the devices and loading the modules: lspci -nn | grep -i vga lsmod | grep -iE 'drm|video' dmesg | grep -iE 'drm|vga|display|video' And run this to make sure you're using the right groups for the graphics devices and set your GIDLIST to match: ls -n /dev/dri
Flioner 0 Posted May 18, 2025 Author Posted May 18, 2025 I am running ubuntu 22.04.5 LTS with an HDMI dummy plug, using iGPU for video output, intel-opencl-icd is already the newest version (22.14.22890-1). I'll also attach a vainfo output. @Q-Droid $ lspci -nn | grep -i vga 00:02.0 VGA compatible controller [0300]: Intel Corporation RocketLake-S GT1 [UHD Graphics 730] [8086:4c8b] (rev 04) $ lsmod | grep -iE 'drm|video' video 77824 3 asus_wmi,xe,i915 $ dmesg | grep -iE 'drm|vga|display|video' dmesg: read kernel buffer failed: Operation not permitted (Once sudo, it outputs blank) $ ls -n /dev/dri total 0 drwxrwxrwx 2 0 0 80 may 17 16:15 by-path crwxrwxrwx+ 1 0 44 226, 0 may 17 16:15 card0 crwxrwxrwx+ 1 0 110 226, 128 may 17 16:15 renderD128 @LukeI'll run it directlly on the OS in a minute, and apologies for the late reply, I suspect it'll work but that is just speculation. Extra details, and thanks for the help. If I launch the docker-compose.yaml without "privileged" it says that /dev/dri doesnt exist, even though it does and has card0 and renderD128, specifically (Error response from daemon: error gathering device information while adding custom device "/dev/dri/": no such file or directory) Assinging devices: - /dev/dri or - /dev/dri/card0 - /dev/dri/renderD128 results in the same output of: not working while privileged, and Error esponse from daemon when not. Vainfo Output: vainfo libva info: VA-API version 1.14.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_14 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.14 (libva 2.12.0) vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.3.1 () vainfo: Supported profile and entrypoints VAProfileNone : VAEntrypointVideoProc VAProfileNone : VAEntrypointStats VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSliceLP VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSliceLP VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSliceLP VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile1 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileVP9Profile3 : VAEntrypointVLD VAProfileHEVCMain12 : VAEntrypointVLD VAProfileHEVCMain422_10 : VAEntrypointVLD VAProfileHEVCMain422_12 : VAEntrypointVLD VAProfileHEVCMain444 : VAEntrypointVLD VAProfileHEVCMain444 : VAEntrypointEncSliceLP VAProfileHEVCMain444_10 : VAEntrypointVLD VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP VAProfileHEVCMain444_12 : VAEntrypointVLD VAProfileHEVCSccMain : VAEntrypointVLD VAProfileHEVCSccMain : VAEntrypointEncSliceLP VAProfileHEVCSccMain10 : VAEntrypointVLD VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP VAProfileHEVCSccMain444 : VAEntrypointVLD VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP VAProfileAV1Profile0 : VAEntrypointVLD VAProfileHEVCSccMain444_10 : VAEntrypointVLD VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP
Flioner 0 Posted May 18, 2025 Author Posted May 18, 2025 @Lukeapologies for the double tag, I've run it bare metal, and it works quite just fine: However I, for best practices, and a possible future migration to TRUENAS SCALE, would very strongly prefer to run the image in docker. I'm migrating from plex, and everything has been better so far, I really want to be able to just run emby from now on.
Q-Droid 989 Posted May 18, 2025 Posted May 18, 2025 1 hour ago, Flioner said: $ lspci -nn | grep -i vga 00:02.0 VGA compatible controller [0300]: Intel Corporation RocketLake-S GT1 [UHD Graphics 730] [8086:4c8b] (rev 04) $ lsmod | grep -iE 'drm|video' video 77824 3 asus_wmi,xe,i915 $ dmesg | grep -iE 'drm|vga|display|video' dmesg: read kernel buffer failed: Operation not permitted (Once sudo, it outputs blank) $ ls -n /dev/dri total 0 drwxrwxrwx 2 0 0 80 may 17 16:15 by-path crwxrwxrwx+ 1 0 44 226, 0 may 17 16:15 card0 crwxrwxrwx+ 1 0 110 226, 128 may 17 16:15 renderD128 I would have expected to see the DRM kernel modules loaded for the graphics. Do you have any boot customizations for modules or modesetting? Any luck with modified compose after removing the options I listed? Since it's working on bare metal it should also work in Docker. It looks like /dev/dri has been mucked with, permissions and ACLs. But again, if the pkg install works then Docker should as well.
Flioner 0 Posted May 18, 2025 Author Posted May 18, 2025 No luck after removing the options listed. The different permissions/ACLs are due to a chmod command I ran, which is not secure or recommended, but was kind of a desperate attempt at allowing the docker image to access the device.
yocker 1247 Posted May 18, 2025 Posted May 18, 2025 (edited) I'm not good at these docker composes but.. devices: - /dev/dri/renderD128:/dev/dri/renderD128 - /dev/dri/card0:/dev/dri/card0 restart: on-failure Try with just a single /dev/dri or with a single /dev/dri/renderD128 not both or twice. Also it might be --dev/dri (with two - ) I'm not sure though. Edited May 18, 2025 by yocker
Flioner 0 Posted May 18, 2025 Author Posted May 18, 2025 1 hour ago, Flioner said: If I launch the docker-compose.yaml without "privileged" it says that /dev/dri doesnt exist, even though it does and has card0 and renderD128, specifically (Error response from daemon: error gathering device information while adding custom device "/dev/dri/": no such file or directory) Assinging devices: - /dev/dri or - /dev/dri/card0 - /dev/dri/renderD128 results in the same output of: not working while privileged, and Error esponse from daemon when not. @yockerThanks for your response! While I agree with you, I've tried it both ways with no luck, unfortunately. It is a good diagnostic/troubleshooting step.
Flioner 0 Posted May 18, 2025 Author Posted May 18, 2025 So I ran it with sudo and the --build flag. Perhaps a massive oversight by me? I feel like it should have worked even without it.
Flioner 0 Posted May 18, 2025 Author Posted May 18, 2025 Awful clarity from my part: I ran sudo docker compose --build , then sudo docker compose up -d and it worked
Q-Droid 989 Posted May 18, 2025 Posted May 18, 2025 That makes sense now as the expectation (and assumption) is that Docker and the admin commands are run as root. Otherwise it doesn't have the privileges needed to change the runtime UID, GID, supplemental GIDs and changes to ownership and permissions on the volumes will not work.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now