I just upgraded my Jetson Orin Nano 8 GB from JetPack 6.2 to JetPack 7.2, which has 3 cameras and they were working fine with older JetPack. Now when I am trying to run an Argus app, I get this error from nvargus-daemon:
=== NVIDIA Libargus Camera Service (0.99.33)
=== Listening for connections…
=== argus_oneshot[5488]: Connection established (FFFF97F788C0)
Running Power Service HW ISP
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: No override file found. ----
Error: NvCameraIspInitialize: NvCameraIspGetNitoPathIfEnabled() returned error
|===================================================================|
| You have encountered an error. |
| NITO file is made the default in this Jetpack release. |
| User is expected to provide a NITO file for the camera module in |
| the directory /var/nvidia/nvcam/settings |
| If the NITO file is in a different location, please provide the |
| path using the environmental variable NVCAMERA_NITO_PATH |
| For example: |
| $ export NVCAMERA_NITO_PATH=/home/ubuntu/yournitofile.nito |
| If the NITO file is not supported, you can still use the legacy |
| Configuration file and migrate to NITO file using the instructions|
| provided in the documentation. |
| Please refer to readme.txt in the Camera Partner Toolkit. |
| Here is the environmental variable value for switching to |
| the Configuration file. |
| $ export NVCAMERA_NITO_PATH=CONFIG |
|===================================================================|
I did try also with: export NVCAMERA_NITO_PATH=CONFIG
So I understand that there are now some kind of new ISP override alternatives and old ISP overrides are not working anymore. How can I run my cameras today if I don’t want to wait for some random NITO file from partners? Calibration is not a priority right now - I just want the sensors to work at all on Argus.
— 🤖 This is an automated AI response. I’m here to help, but please verify important details! —
The issue you’re encountering with the Jetson Orin Nano and ISP overrides not working after upgrading to JetPack 7.2 is due to changes in how ISP configurations are handled. As of JetPack 7.2, the default method for configuring the ISP (Image Signal Processor) has shifted towards using NITO (NVIDIA Image Tuning and Optimization) files, which are specific to each camera module and provided by camera partners.
To resolve the issue without waiting for a NITO file from your camera’s manufacturer, you have a couple of options based on the information provided in the error message and the context:
Use a NITO File: If you have access to a NITO file for your specific camera module, you can place it in the /var/nvidia/nvcam/settings directory. Then, you can specify the path to this NITO file using the NVCAMERA_NITO_PATH environmental variable before running your Argus application.
Switch to Legacy Configuration File: The error message suggests that you can still use the legacy configuration file method by setting the NVCAMERA_NITO_PATH environmental variable to CONFIG. This method allows you to use the older ISP configuration files instead of NITO files. However, this approach might not offer the same level of optimization as using a NITO file specifically tailored for your camera module.
To use the legacy configuration method, you would set the environmental variable as follows before running your application:
export NVCAMERA_NITO_PATH=CONFIG
Then, ensure that your legacy configuration files are correctly placed and formatted according to the documentation provided with the Camera Partner Toolkit.
Obtain or Create a NITO File: If possible, obtain a NITO file for your camera module from the manufacturer or create one using the tools and guidelines provided in the Camera Partner Toolkit. This approach ensures optimal performance and compatibility with the latest JetPack versions.
Remember, the best approach depends on your specific requirements, such as the need for calibration and optimization. If you’re looking for a temporary solution to get your cameras working without waiting for a NITO file, using the legacy configuration method might be the quickest way to proceed. However, for optimal performance and future compatibility, using a NITO file is recommended.
— We support team will also look into your issue to have further suggestions soon. please stay tuned. —
Environmental variable NVCAMERA_NITO_DUMP_PATH is already set to /root/binary.cfg
DumpNitoToFile: sensorModeIndex 0 knobSetId 0
GetSensorModeInfoFromSensorModeIndex: Config file enabled
StoreCameraISPConfigToNitoKnob++: knobSetId 0 sensorModeIndex 0
loadIspConfigFromControlKnob: Config mode. Using cfgData.Common.lsMode[sensorModeIndex]
StoreCameraISPConfigToNitoKnob
DumpNitoToFile: ---- Finished dumping config data to file: /root/binary.cfg ----
|==============================================================|
| You have encountered an error. |
| NITO file is the default in this Jetpack release and legacy |
| way of using text based configuration file by setting |
| environmental variable NVCAMERA_NITO_PATH=CONFIG is not |
| allowed anymore. To enable the migration to a NITO file, |
| Binary Cfg file has been generated at the following location:|
| /root/binary.cfg on the Tegra device
| Please pick up the Binary Cfg file from the Tegra device, |
| copy it to Windows host and convert it to a NITO file as per |
| the instructions provided in the user guide. |
| Then copy the generated NITO file from windows host to the |
| directory /var/nvidia/nvcam/settings on the Tegra device |
| and restart the device for the NITO file to be picked up. |
|==============================================================|
If the ISP is no longer supported - how to get a NITO file if we’ve made custom camera sensor board and don’t have any connection with any camera module partners?
Based on the latest error, the issue seems to have progressed beyond the original missing NITO file message. Argus is now able to generate the intermediate binary configuration, but it still reports that it cannot continue using the legacy configuration path.
One thing worth checking is the camera module definition in the device tree. We’ve seen on JetPack 7.x that the badge name under tegra-camera-platform/modules/moduleX cannot be arbitrary. The expected format is:
BOARD-ID_POSITION_PART_NUMBER
For example:
imx477_front_imx477
where imx477 is the camera module part number.
The PART_NUMBER is used by Argus to identify the camera module and associate the corresponding ISP/NITO configuration. If the module naming does not follow the expected convention, Argus may fail to map the module, producing errors such as:
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Yes, I understand all these things - everything worked perfectly on Jetpack 6.2.2 with the triple camera setup. As soon as I upgraded to Jetpack 7.2, I got this error about NITO files missing.
If you are saying that:
Can you explain, why the error says this:
It clearly says that legacy is not allowed anymore.
There are only stock .nito files at /var/nvidia/nvcam/settings but none for my used sensors as we have custom.
But why can’t I launch any Argus app - not even the examples without this error. It clearly looks like without specific .nito file for the specific sensor, it’s impossible to launch anything via Argus.
*******************************************************************
Running Power Service HW ISP
*******************************************************************
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: Found override file [/var/nvidia/nvcam/settings/imx283_top.isp]. ----
NvCameraIspGetNitoFilename: listNitoFiles() returned empty list. No nitos found
Environmental variable NVCAMERA_NITO_DUMP_PATH is successfully set to /root/binary.cfg
DumpNitoToFile: sensorModeIndex 0 knobSetId 0
GetSensorModeInfoFromSensorModeIndex: Config file enabled
StoreCameraISPConfigToNitoKnob++: knobSetId 0 sensorModeIndex 0
loadIspConfigFromControlKnob: Config mode. Using cfgData.Common.lsMode[sensorModeIndex]
StoreCameraISPConfigToNitoKnob
DumpNitoToFile: ---- Finished dumping config data to file: /root/binary.cfg ----
|==============================================================|
| You have encountered an error. |
| NITO file is the default in this Jetpack release and legacy |
| way of using text based configuration file by setting |
| environmental variable NVCAMERA_NITO_PATH=CONFIG is not |
| allowed anymore. To enable the migration to a NITO file, |
| Binary Cfg file has been generated at the following location:|
| /root/binary.cfg on the Tegra device
| Please pick up the Binary Cfg file from the Tegra device, |
| copy it to Windows host and convert it to a NITO file as per |
| the instructions provided in the user guide. |
| Then copy the generated NITO file from windows host to the |
| directory /var/nvidia/nvcam/settings on the Tegra device |
| and restart the device for the NITO file to be picked up. |
|==============================================================|
SCF: Error 0x00000004: NvCameraIspInitialize failed (in src/services/autocontrol/NvCameraIspDriver.cpp, function initialize(), line 174)
SCF: Error 0x00000004: (propagating from src/services/autocontrol/NvCameraIspDriver.cpp, function fillStaticProps(), line 2195)
SCF: Error 0x00000004: (propagating from src/services/autocontrol/AutocontrolService.cpp, function fillStaticProps(), line 176)
SCF: Error 0x00000004: (propagating from src/api/Source.cpp, function initialize(), line 132)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function replaceSourceInList(), line 461)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 386)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function getSource(), line 556)
Can you please confirm that this is unintended or is this intended? Because clearly someone has written this warning message the ISP overrides are not allowed anymore.
... legacy way of using text based configuration file by setting environmental variable NVCAMERA_NITO_PATH=CONFIG is not allowed anymore
These are my badges - they did work in Jetpack 6.2.2 correctly though.
Maybe I need to set specifically imx283_topcenter and not imx283_top?
Has anything changed with the badge naming/positions on Jetpack 7.2?
|===================================================================|
| You have encountered an error. |
| NITO file is made the default in this Jetpack release. |
| User is expected to provide a NITO file for the camera module in |
| the directory /var/nvidia/nvcam/settings |
| If the NITO file is in a different location, please provide the |
| path using the environmental variable NVCAMERA_NITO_PATH |
| For example: |
| $ export NVCAMERA_NITO_PATH=/home/ubuntu/yournitofile.nito |
| If the NITO file is not supported, you can still use the legacy |
| Configuration file and migrate to NITO file using the instructions|
| provided in the documentation. |
| Please refer to readme.txt in the Camera Partner Toolkit. |
| Here is the environmental variable value for switching to |
| the Configuration file. |
| $ export NVCAMERA_NITO_PATH=CONFIG |
|===================================================================|
I have also encountered this issue and it would be great if Nvidia could try to come back with something here, @ShaneCCC.
From my test where I have a custom Nvidia Thor carrier board with two cameras. They worked in R38.4.0 release but failing now with 39.2.0.
\~# env enableCamScfLogs=1 enableCamCoreLogs=1 enableCamCaptureLogs=1 enableCamPclLogs=1 enableCamHalLogs=1 /usr/sbin/nvargus-daemon 2>&1 | tee /tmp/scf.log
=== NVIDIA Libargus Camera Service (0.99.33)
=== Listening for connections...
=== argus_oneshot\[35665\]: Connection established (FFFF843388E0)
\[ 2552.509597\] tegra194-isp5 8188800000.isp: \[PIPELINE 0\] ISP capture setup complete (channel_id=0)
\[ 2552.511596\] tegra194-isp5 8181200000.host1x:isp1@818a800000: \[PIPELINE 0\] ISP capture setup complete (channel_id=1)
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: Found override file \[/var/nvidia/nvcam/settings/camera_overrides.isp\]. ----
NvCameraIspGetNitoFilename: listNitoFiles() returned empty list. No nitos found
Environmental variable NVCAMERA_NITO_DUMP_PATH is successfully set to /home/root/binary.cfg
DumpNitoToFile: sensorModeIndex 0 knobSetId 0
GetSensorModeInfoFromSensorModeIndex: Config file enabled
StoreCameraISPConfigToNitoKnob++: knobSetId 0 sensorModeIndex 0
loadIspConfigFromControlKnob: Config mode. Using cfgData.Common.lsMode\[sensorModeIndex\]
DumpNitoToFile: ---- Finished dumping config data to file: /home/root/binary.cfg ----
|==============================================================|
| You have encountered an error. |
| NITO file is the default in this Jetpack release and legacy |
| way of using text based configuration file by setting |
| environmental variable NVCAMERA_NITO_PATH=CONFIG is not |
| allowed anymore. To enable the migration to a NITO file, |
| Binary Cfg file has been generated at the following location:|
| /home/root/binary.cfg on the Tegra device
| Please pick up the Binary Cfg file from the Tegra device, |
| copy it to Windows host and convert it to a NITO file as per |
| the instructions provided in the user guide. |
| Then copy the generated NITO file from windows host to the |
| directory /var/nvidia/nvcam/settings on the Tegra device |
| and restart the device for the NITO file to be picked up. |
|==============================================================|
SCF: Error 0x00000004: NvCameraIspInitialize failed (in src/services/autocontrol/NvCameraIspDriver.cpp, function initialize(), line 174)
SCF: Error 0x00000004: (propagating from src/services/autocontrol/NvCameraIspDriver.cpp, function fillStaticProps(), line 2195)
SCF: Error 0x00000004: (propagating from src/services/autocontrol/AutocontrolService.cpp, function fillStaticProps(), line 176)
SCF: Error 0x00000004: (propagating from src/api/Source.cpp, function initialize(), line 132)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function replaceSourceInList(), line 461)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 386)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function getSource(), line 556)
---- imager: Found override file \[/var/nvidia/nvcam/settings/camera_overrides.isp\]. ----
NvCameraIspGetNitoFilename: listNitoFiles() returned empty list. No nitos found
Environmental variable NVCAMERA_NITO_DUMP_PATH is already set to /home/root/binary.cfg
DumpNitoToFile: sensorModeIndex 0 knobSetId 0
GetSensorModeInfoFromSensorModeIndex: Config file enabled
StoreCameraISPConfigToNitoKnob++: knobSetId 0 sensorModeIndex 0
loadIspConfigFromControlKnob: Config mode. Using cfgData.Common.lsMode\[sensorModeIndex\]
DumpNitoToFile: ---- Finished dumping config data to file: /home/root/binary.cfg ----
|==============================================================|
| You have encountered an error. |
| NITO file is the default in this Jetpack release and legacy |
| way of using text based configuration file by setting |
| environmental variable NVCAMERA_NITO_PATH=CONFIG is not |
| allowed anymore. To enable the migration to a NITO file, |
| Binary Cfg file has been generated at the following location:|
| /home/root/binary.cfg on the Tegra device
| Please pick up the Binary Cfg file from the Tegra device, |
| copy it to Windows host and convert it to a NITO file as per |
| the instructions provided in the user guide. |
| Then copy the generated NITO file from windows host to the |
| directory /var/nvidia/nvcam/settings on the Tegra device |
| and restart the device for the NITO file to be picked up. |
|==============================================================|
SCF: Error 0x00000004: NvCameraIspInitialize failed (in src/services/autocontrol/NvCameraIspDriver.cpp, function initialize(), line 174)
SCF: Error 0x00000004: (propagating from src/services/autocontrol/NvCameraIspDriver.cpp, function fillStaticProps(), line 2195)
SCF: Error 0x00000004: (propagating from src/services/autocontrol/AutocontrolService.cpp, function fillStaticProps(), line 176)
SCF: Error 0x00000004: (propagating from src/api/Source.cpp, function initialize(), line 132)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function replaceSourceInList(), line 461)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 386)
SCF: Error 0x00000004: (propagating from src/api/CameraDriver.cpp, function getSource(), line 556)
=== argus_oneshot\[35665\]: CameraProvider initialized (0xffff7cf91ff0)
=== argus_oneshot\[35665\]: CameraProvider destroyed (0xffff7cf91ff0)
CaptureService:stop: is requested --------------------------
=== argus_oneshot\[35665\]: Connection closed (FFFF843388E0)
=== argus_oneshot\[35665\]: Connection cleaned up (FFFF843388E0)
But if I don’t have any camera partner available and just want to use the old cameras I used before? Does Nvidia really expect people to pay just to use previously working devices?
Hi @therealmatiss could you share more information(brand and ID) about the camera modules you are using? Would like to check whether we missed any partners.