Error getting capabilities for device '/dev/nvhost-msenc'

• Hardware Platform (Jetson / GPU)
GPU
• DeepStream Version
5.0
• TensorRT Version
7.1
• NVIDIA GPU Driver Version (valid for GPU only)
440.95.01

Since the latest driver update, it seems a video decoder device used by DeepStream’s encoder is no longer available. Is there and updated package or a workaround for this? Err msg when trying to use nvv4l2h264enc is:

Error getting capabilities for device '/dev/nvhost-msenc': It isn't a v4l2 driver. Check if it is a v4l1 driver.

The device listed is not in /dev/ (anymore)

1 Like

Hi @mdegans
“/dev/nvhost-msenc” is device node on Jetson platform.
Could you check if you are using anything that are actually for Jetson/L4T?

If not, could you share the detailed repo steps?
We actually just upgrade from 440 driver to 450, 440 driver version has been working for us.

Thanks!

1 Like

“/dev/nvhost-msenc” is device node on Jetson platform.

Huh. That’s very odd, @mchi .

I double checked and I’m ssh’ed into an x86 machine.

$ arch
x86_64

Yet somehow I am running into this:

Failed to query video capabilities: Invalid argument
libv4l2: error getting capabilities: Invalid argument
...
gst-resource-error-quark: Error getting capabilities for device '/dev/nvhost-msenc': It isn't a v4l2 driver. Check if it is a v4l1 driver. (13): v4l2_calls.c(98): gst_v4l2_get_capabilities (): /GstPipeline:pipeline0/GstBin:bin0/nvv4l2h264enc:nvv4l2h264enc0:

I’ll investigate some more tomorrow. Thanks for the note on what drivers you have tested.

Hi @mdegans,
was this got fixed?

Thanks!

@mchi

Nope, but the deepstream docker image works, so i’m pretty sure it’s not driver related.

My repositories are:

[user@host] -- [/etc/apt/sources.list.d] 
 $ cat cuda.list nvidia-docker.list nvidia-machine-learning.list 
deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /
deb https://nvidia.github.io/libnvidia-container/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu18.04/$(ARCH) /
deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /

Steps to repro:

[user@host] -- [~/Projects/Columbia/builddir/columbia] 
 $ arch
x86_64
[user@host] -- [~/Projects/Columbia/builddir/columbia] 
 $ gst-launch-1.0 videotestsrc num-buffers=300 ! 'video/x-raw, width=(int)1280, height=(int)720, \
 format=(string)I420, framerate=(fraction)30/1' ! nvvideoconvert ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvv4l2h264enc ! fakesink
Setting pipeline to PAUSED ...
Failed to query video capabilities: Invalid argument
libv4l2: error getting capabilities: Invalid argument
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/nvv4l2h264enc:nvv4l2h264enc0: Error getting capabilities for device '/dev/nvhost-msenc': It isn't a v4l2 driver. Check if it is a v4l1 driver.
Additional debug info:
v4l2_calls.c(98): gst_v4l2_get_capabilities (): /GstPipeline:pipeline0/nvv4l2h264enc:nvv4l2h264enc0:
system error: Invalid argument
Setting pipeline to NULL ...
Freeing pipeline ...

Additional diagnostics:

[user@host] -- [/opt/nvidia/deepstream/deepstream/lib/gst-plugins] 
 $ file libgstnvvideo4linux2.so 
libgstnvvideo4linux2.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=47cc2bad744bd86cbd93dca63454c2efda549b99, not stripped
[user@host] -- [/opt/nvidia/deepstream/deepstream/lib/gst-plugins] 
 $ gst-inspect-1.0 $(pwd)/libgstnvvideo4linux2.so 
Plugin Details:
  Name                     nvvideo4linux2
  Description              Nvidia elements for Video 4 Linux
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libgstnvvideo4linux2.so
  Version                  1.14.0
  License                  LGPL
  Source module            nvvideo4linux2
  Binary package           nvvideo4linux2
  Origin URL               http://nvidia.com/

  nvv4l2decoder: NVIDIA v4l2 video decoder
  nvv4l2h264enc: V4L2 H.264 Encoder
  nvv4l2h265enc: V4L2 H.265 Encoder
  nvv4l2vp8enc: V4L2 VP8 Encoder
  nvv4l2vp9enc: V4L2 VP9 Encoder

  5 features:
  +-- 5 elements

 $ nvidia-smi 
Tue Jul 21 18:16:31 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.95.01    Driver Version: 440.95.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    On   | 00000000:01:00.0  On |                  N/A |
|  0%   39C    P8     9W / 200W |      1MiB /  8116MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    On   | 00000000:02:00.0 Off |                  N/A |
|  0%   42C    P8     8W / 200W |      1MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

More info about this box, including a full package set, can be found here.

Hi @mdegans
Help run “rm ~/.cache/gstreamer-1.0/*” and check again.

Thanks!

@mchi

Same result:

 $ rm ~/.cache/gstreamer-1.0/*
 $ gst-launch-1.0 videotestsrc num-buffers=300 ! 'video/x-raw, width=(int)1280, height=(int)720, \
>  format=(string)I420, framerate=(fraction)30/1' ! nvvideoconvert ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvv4l2h264enc ! fakesink

(gst-plugin-scanner:2339): GStreamer-WARNING **: 17:46:58.562: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtrtserver.so: cannot open shared object file: No such file or directory
Setting pipeline to PAUSED ...
Failed to query video capabilities: Invalid argument
libv4l2: error getting capabilities: Invalid argument
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/nvv4l2h264enc:nvv4l2h264enc0: Error getting capabilities for device '/dev/nvhost-msenc': It isn't a v4l2 driver. Check if it is a v4l1 driver.
Additional debug info:
v4l2_calls.c(98): gst_v4l2_get_capabilities (): /GstPipeline:pipeline0/nvv4l2h264enc:nvv4l2h264enc0:
system error: Invalid argument
Setting pipeline to NULL ...
Freeing pipeline ...

Any ideas?

Hi @mdegans,
Is this solved after moving nvvideo4linux2 out of blacklist?

Edit: I haven’t tested since fixing nvinfer. I will update soon.

Good to know, thanks!