Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU)
Jetson Nano Develpor Kit
• DeepStream Version
DeepStream 6.0.1
• JetPack Version (valid for Jetson only)
JetPack 4.6.3
• TensorRT Version
TensorRT 8.2
• NVIDIA GPU Driver Version (valid for GPU only)
N/A
• Issue Type( questions, new requirements, bugs)
Bugs
• How to reproduce the issue ? (This is for bugs. Including which sample app is used, the configuration files content, the command line used and other details for reproducing)
Hey guys, I am Joe, a newcomer to the Jetson developer community. Currently, I am following the wiki of NVIDIA Deepstream + Azure IoT Edge on an NVIDIA Jetson Nano provided by Azure to achieve real-time streaming analysis using my new Jetson Nano Developer Kit:
Following the guide, I flashed my Jetson Nano with JetPack 4.6.3 and Deepstream 6.0.1, installed Azure IoT Edge and its runtime 1.4.9, and registered and hosted my device on Azure IoT Edge. Then I created and deployed an Azure IoT Edge solution with the NVIDIA DeepStream SDK module from Azure Marketplace using Visual Code Studio.
However, after I deployed and started to monitor the streaming event and data flow, the NVIDIA DeepStream SDK module on my Azure IoT Edge logger reported an error message as below:
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: No such file or directory (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
(gst-plugin-scanner:7): GStreamer-WARNING **: 04:32:29.808: Failed to load plugin ‘/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_osd.so’: /usr/lib/aarch64-linux-gnu/libnvinfer.so.7: file too short
(gst-plugin-scanner:7): GStreamer-WARNING **: 04:32:29.906: Failed to load plugin ‘/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_infer.so’: /usr/lib/aarch64-linux-gnu/libnvparsers.so.7: file too short
(gst-plugin-scanner:7): GStreamer-WARNING **: 04:32:30.032: Failed to load plugin ‘/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so’: /usr/lib/aarch64-linux-gnu/libnvinfer.so.7: file too short
(gst-plugin-scanner:7): GStreamer-WARNING **: 04:32:30.123: Failed to load plugin ‘/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferaudio.so’: /usr/lib/aarch64-linux-gnu/libnvparsers.so.7: file too short
** ERROR: <create_osd_bin:58>: Failed to create ‘nvosd0’
** ERROR: <create_osd_bin:100>: create_osd_bin failed
** ERROR: <create_processing_instance:802>: create_processing_instance failed
** ERROR: <create_pipeline:1294>: create_pipeline failed
** ERROR: main:1419: Failed to create pipeline
Quitting
I suspect that the Deepstream module is not working properly. Since it runs the sample test 5 based on the default configuration file, I log into the Jetson Nano device and locally tested the sample test-5 provided on path /opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps/deepstream-test5, using command deepstream-test5-app -c configs/test5_config_file_src_infer_azure_iotedge.txt
The test failed and reported an error message as below:
(deepstream-test5-app:13756): GLib-CRITICAL **: 20:42:27.414: g_strrstr: assertion ‘haystack != NULL’ failed
Error: Time:Sun Apr 16 20:42:27 2023 File:/home/nvidia/azure/azure-iot-sdk-c/iothub_client/src/iothub_client_core_ll.c Func:retrieve_edge_environment_variabes Line:177 Environment IOTEDGE_AUTHSCHEME not set
Error: Time:Sun Apr 16 20:42:27 2023 File:/home/nvidia/azure/azure-iot-sdk-c/iothub_client/src/iothub_client_core_ll.c Func:IoTHubClientCore_LL_CreateFromEnvironment Line:1186 retrieve_edge_environment_variabes failed
Error: Time:Sun Apr 16 20:42:27 2023 File:/home/nvidia/azure/azure-iot-sdk-c/iothub_client/src/iothub_client_core.c Func:create_iothub_instance Line:924 Failure creating iothub handle
ERROR: iotHubModuleClientHandle is NULL! connect failed
** ERROR: main:1455: Failed to set pipeline to PAUSED
Quitting
ERROR from sink_sub_bin_sink2: Could not configure supporting library.
Debug info: /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvmsgbroker/gstnvmsgbroker.cpp(402): legacy_gst_nvmsgbroker_start (): /GstPipeline:pipeline/GstBin:sink_sub_bin2/GstNvMsgBroker:sink_sub_bin_sink2:
unable to connect to broker library
ERROR from sink_sub_bin_sink2: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Debug info: gstbasesink.c(5265): gst_base_sink_change_state (): /GstPipeline:pipeline/GstBin:sink_sub_bin2/GstNvMsgBroker:sink_sub_bin_sink2:
Failed to start
App run failed
I have read quite a lot of the previous posts which describe similar issue as mine and tried to fix it by following a similar procedure, but no luck so far:
What did I do wrong here? Can anyone share their insights with me, please?
PS:
I have followed the README file specified at path /opt/nvidia/deepstream/deepstream-6.0/sources/libs/azure_protocol_adaptor/module_clients to set up proper dependencies, but I noticed one thing:
The latest Azure IoT Edge uses configuration files specified at path /etc/aziot/config.toml for connection string and other IoT device parameters, but the README file specified by Nvidia stated that Azure IoT edge configuration setting must be specified at path /etc/iotedge/config.yaml
When I was installing the Azure IoT edge and runtime on my Jetson Nano following the documentation by Azure:
The device configuration file (at path /etc/aziot/config.toml) is automatically created by Azure Iot Edge using the command sudo iotedge config mp --connection-string ‘PASTE_DEVICE_CONNECTION_STRING_HERE’
so I wonder if this is a version compatibility issue between the latest Azure IoT Edge 1.4.9 and Deepstream SDK 6.0.1. If so, where should I make the change so I can make it work?
Sincerely,
Joe