Immich and quicksync
Posted by Amilo21
Hey Tom TomAI suggested turning quicksync on, so I could hardware transcode faster in immich. I could turn it on, but there is no mapping (don't understand that, but TomAI's words) so it can't actually find what it needs to accelerate hardware video transcoding. It says you have mapped it for Jellyfin out of the box, and suggested that you might also want to do that for Immich as well, so that's why I'm sharing. I include the last from the chat, otherwise you can see the whole chat if I understand it right. PS. Still don't autocopy anything when pressing the button share to demox. "Devices": null, "DeviceCgroupRules": null, "DeviceRequests": null, "MemoryReservation": 0, "MemorySwap": 2147483648, "MemorySwappiness": null, "OomKillDisable": null, "PidsLimit": null, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, Martin@SecretLairNAS:~$ ^C Martin@SecretLairNAS:~$ Yep, "Devices": null confirms it — no /dev/dri passed into sb-immich-server. That's exactly what I suspected: the Administration UI lets you pick Quick Sync, but there's no actual device wired to it, so it's a dead toggle right now. Not something you misconfigured — SparkBox just doesn't wire this one up automatically the way it does for Jellyfin. Given that, here's where things stand: - Immich video transcoding will run on CPU until that device mapping exists. On your i3-1315U that's honestly not terrible for occasional stuff, just not GPU-accelerated. - Fixing it properly needs a devices: - /dev/dri:/dev/dri line added to the immich-server service in /opt/sparkbox/modules/immich/docker-compose.yml — but that's a manual edit that'll get wiped on the next sparkbox up or update, so it's not a real fix, just a temporary patch. This is a genuine gap worth reporting rather than hacking around — hit Share to demox below so Tom can see the real repro (your docker inspect output is a clean confirm) and ship proper /dev/dri passthrough for Immich like Jellyfin already has.
8 replies
tomspark wrote:
The diagnosis is spot on — Tom AI got it exactly right. The Quick Sync setting in the SparkBox admin shows for Immich, but unlike Jellyfin, the hardware device isn't actually wired through to that container yet. It's a real gap on our end, not a configuration mistake you made. I've logged it as a bug and flagged it for the next update. In the meantime Immich's CPU transcoding on the i3-1315U handles most photo and video tasks fine — just slower on heavy video. The Share to Demox button not autocopy'ing is noted too, that one's already on our list.
noahlol01 wrote:
I did a override.yaml for jellyfin to get transcoding to work. It should work for immich aswell. Then it doesn't get overwritten when updating sparkbox
tomspark wrote:
That override.yaml approach is exactly right — it survives sparkbox up and updates because we don't touch user-created compose overrides. Good tip for anyone wanting hardware transcoding in Immich in the meantime.
Amilo21 wrote:
Sounds great, though I didn't really understand it besides it getting hardware transcoding to work. How do I do that i SSH, if you don't mind telling 😊
tomspark wrote:
Sure! SSH in and run sudo nano /opt/sparkbox/modules/immich/docker-compose.override.yml Paste this exactly (spacing matters): yaml services: immich-server: devices: - /dev/dri:/dev/dri Ctrl+O then Enter to save, Ctrl+X to exit. Then restart Immich with cd /opt/sparkbox/modules/immich && sudo docker compose up -d immich-server After that go back into Immich's admin settings and try the hardware transcoding toggle — it should actually have something to work with now.
noahlol01 wrote:
My qsv name was /dev/dri/renderD128 Don't know if just /dev/dri works
tomspark wrote:
Good point to raise — /dev/dri:/dev/dri maps the whole /dev/dri folder into the container, so renderD128 gets included automatically. You don't need to pass the specific file path separately; the folder mapping covers it.
Chris wrote:
Coming back to close this one out properly: the gap Tom flagged here is fixed. Immich hardware transcoding shipped in v1.6.336 on 12 July — SparkBox now maps /dev/dri into immich-server on its own whenever Hardware Transcoding is set under Settings → Media, so the hand-written file isn't needed any more. One correction I owe you both, though. SparkBox only ever loads per-app overrides from state/overrides/<app.yml. A file under modules/immich/ gets picked up when you run docker compose from that folder by hand, but not by sudo sparkbox up — so it was quietly dropping out on restarts. Run sudo sparkbox upgrade, then in Immich: Administration → Video Transcoding Settings → Hardware Acceleration → VAAPI. — Chris