vainfo
gives me an error about not able to initalize iHD_drv_video.so. Obviously, my video hardware decoding is not working. I’m a bit stumped as to why. All appropriate drivers installed. Is it because of Wayland? How can I investigate further?
Any time you get an error about a missing file, try running dnf provides '*/<filename>'
to discover what package(s) provide that file. Then try (re)installing the package with dnf install <filename>
. In your specific case, try these commands.
$ dnf provides '*/iHD_drv_video.so'
Updating and loading repositories:
Fedora 42 - x86_64 - Updates 100% | 16.8 KiB/s | 10.5 KiB | 00m01s
Fedora 42 - x86_64 - Updates 100% | 583.7 KiB/s | 4.6 MiB | 00m08s
Repositories loaded.
intel-media-driver-24.4.4-2.fc42.i686 : The Intel Media Driver for VAAPI
Repo : rpmfusion-nonfree
Matched From :
Filename : /usr/lib/dri-nonfree/iHD_drv_video.so
intel-media-driver-24.4.4-2.fc42.x86_64 : The Intel Media Driver for VAAPI
Repo : rpmfusion-nonfree
Matched From :
Filename : /usr/lib64/dri-nonfree/iHD_drv_video.so
libva-intel-media-driver-25.1.4-1.fc42.i686 : The Intel Media Driver for VAAPI.
Repo : fedora
Matched From :
Filename : /usr/lib/dri/iHD_drv_video.so
libva-intel-media-driver-25.1.4-1.fc42.x86_64 : The Intel Media Driver for VAAPI.
Repo : fedora
Matched From :
Filename : /usr/lib64/dri/iHD_drv_video.so
$ sudo dnf install libva-intel-media-driver
...
(If you have the rpmfusion-nonfree repo enabled, then install intel-media-driver
instead.)
No, the file is there, and it is the correct library! It cannot init the library or something. But this:
is unclear. Why? And should I uninstall the libva-intel-media-driver then?
Well, I tried it with the rpmfusions’s intel-media-driver
to no avail. So crazy. Why is VA-API not working?
Sorry, without more info, it is hard to say. Did you try running strace vainfo
and skimming the output to see if you can find any hints about what is going wrong?
FWIW, here is some example output from my system that shows it finding the corrrect library under /usr/lib64/dri-freeworld
.
$ strace vainfo |& grep -A 1 openat
...
openat(AT_FDCWD, "/usr/lib64/dri-nonfree/radeonsi_drv_video.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
access("/usr/lib64/dri-nonfree/radeonsi_drv_video.so", F_OK) = -1 ENOENT (No such file or directory)
--
openat(AT_FDCWD, "/usr/lib64/dri-freeworld/radeonsi_drv_video.so", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
...
Uuuu, running strace reveals that it’s trying to access a non-existing card. So, it finds /dev/dri/renderD128
, but it doesn’t find /dev/dri/card128
because obviously that card is /dev/dri/card0
. I think that’s the problem. How do I tell it to use card0? Why won’t it know it automatically? Something is off.
This bug report looks similar and suggests adding your user to the video
group.
There is definitely something strange with “resource temporarily unavailable” when it’s trying to connect to renderD128 node. Buut adding user to the video group didn’t solve my problem.
Thanks anyway, I’ll file a bug on github!
You know, something weird is going on. I feel like I do have hardware accelerated decode working, even though vainfo
gives me some error. Because if I block access to /dev/dri/renderD128
or block Firefox from having access to it, my video decoding in Firefox becomes stuttery. But it is so werid then that vainfo
is erroring out - and even Firefox probably thinks it doens’t have hardware decoding supported (it reports it is unreported in about:support).
It might be worth running rpm -V libva libva-utils
to see if any of the libva files have been changed or corrupted.