Driver for custom MIPI camera for Jetson TX2i

Hi,
We have a custom MIPI camera board interfaced to the Jetson TX2i SOM on P3310 carrier board. The MIPI video output of the camera is similar to IMX219, operated in mode IMX219_3264x2464_21FPS. The custom camera board has no i2c line and the board starts streaming video as soon as it is powered on.

We are using tegra186-camera-e3326-a00.dtsi for device tree and OV5693 as a reference. for developing the driver.

We have gone through the sensor development guide and various posts on the forum and have followed following steps:

  1. Disabled camera plugin manager and camera module and included e3326 dtsi as below
#include <t18x-common-platforms/tegra186-quill-common-p3489-1000-a00.dtsi>
#include <t18x-common-platforms/tegra186-quill-power-tree-p3489-1000-a00-00.dtsi>
/*#include <t18x-common-platforms/tegra186-quill-camera-modules.dtsi>*/
#include <t18x-common-modules/tegra186-display-e3320-1000-a00.dtsi>
#include <t18x-common-modules/tegra186-camera-e3326-a00.dtsi>
 
/* comms dtsi file should be included after gpio dtsi file */
#include <t18x-common-plugin-manager/tegra186-quill-p3489-1000-a00-plugin-manager.dtsi>
#include <t18x-common-modules/tegra186-super-module-e2614-p2597-1000-a00.dtsi>
#include <t18x-common-plugin-manager/tegra186-quill-display-plugin-manager.dtsi>
#include <t18x-common-prod/tegra186-priv-quill-p3489-1000-a00-prod.dtsi>
/*#include <t18x-common-plugin-manager/tegra186-quill-camera-plugin-manager.dtsi>*/
  1. Modified tegra186-camera-e3326-a00.dtsi as below:
/*
 * Copyright (c) 2015-2020, NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
/ {
	host1x {
		vi@15700000 {
			num-channels = <1>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					status = "okay";
					reg = <0>;
					e3326_vi_in0: endpoint {
						status = "okay";
						port-index = <0>;
						bus-width = <2>;
						remote-endpoint = <&e3326_csi_out0>;
					};
				};
			};
		};
 
		nvcsi@150c0000 {
			num-channels = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			channel@0 {
				status = "okay";
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						status = "okay";
						reg = <0>;
						e3326_csi_in0: endpoint@0 {
							status = "okay"; 
							port-index = <0>;
							bus-width = <2>;
							remote-endpoint = <&e3326_ov5693_out0>;
						};
					};
					port@1 {
						status = "okay";
						reg = <1>;
						e3326_csi_out0: endpoint@1 {
							status = "okay"; 
							remote-endpoint = <&e3326_vi_in0>;
						};
					};
				};
			};
		};
	};
 
 
	i2c@3180000 {
		ov5693_c@36 {
			status = "okay"; 
			compatible = "nvidia,ov5693";
			/* I2C device address */
			reg = <0x36>;
 
			/* V4L2 device node location */
			devnode = "video0";
 
			/* Physical dimensions of sensor */
			physical_w = "3.674";
			physical_h = "2.738";
 
			/* Define any required hw resources needed by driver */
			/* ie. clocks, io pins, power sources */
			/* avdd-reg = "vana";
			iovdd-reg = "vif"; */
 
			/* Sensor output flip settings */
			vertical-flip = "true";
 
			/* Enable EEPROM support */
			has-eeprom = "0";  /* changed it to 0, as our camera doesnot have EEPROM */
			/**
			* A modeX node is required to support v4l2 driver
			* implementation with NVIDIA camera software stack
			*
			* mclk_khz = "";
			* Standard MIPI driving clock, typically 24MHz
			*
			* num_lanes = "";
			* Number of lane channels s1x {
                status="okay";
                vi@15c10000  {ensor is programmed to output
			*
			* tegra_sinterface = "";
			* The base tegra serial interface lanes are connected to
			* Incase of virtual HW devices, use virtual
			* For SW emulated devices, use host
			*
			* phy_mode = "";
			* PHY mode used by the MIPI lanes for this device
			*
			* discontinuous_clk = "";
			* The sensor is programmed to use a discontinuous clock on MIPI lanes
			*
			* dpcm_enable = "true";
			* The sensor is programmed to use a DPCM modes
			*
			* cil_settletime = "";
			* MIPI lane settle time value.
			* A "0" value attempts to autocalibrate based on mclk_multiplier
			*
			*
			*
			*
			* active_w = "";
			* Pixel active region width
			*
			* active_h = "";
			* Pixel active region height
			*
			* pixel_t = "";
			* The sensor readout pixel pattern
			*
			* readout_orientation = "0";
			* Based on camera module orientation.
			* Only change readout_orientation if you specifically
			* Program a different readout order for this mode
			*
			* line_length = "";
			* Pixel line length (width) for sensor mode.
			* This is used to calibrate features in our camera stack.
			*
			* mclk_multiplier = "";
			* Multiplier to MCLK to help time hardware capture sequence
			* TODO: Assign to PLL_Multiplier as well until fixed in core
			*
			* pix_clk_hz = "";
			* Sensor pixel clock used for calculations like exposure and framerate
			*
			*
			*
			*
			* inherent_gain = "";
			* Gain obtained inherently from mode (ie. pixel binning)
			*
			* == Source Control Settings ==
			*
			* Gain factor used to convert fixed point integer to float
			* Gain range [min_gain/gain_factor, max_gain/gain_factor]
			* Gain step [step_gain/gain_factor is the smallest step that can be configured]
			* Default gain [Default gain to be initialized for the control.
			*     use min_gain_val as default for optimal results]
			* Framerate factor used to convert fixed point integer to float
			* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
			* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
			* Default Framerate [Default framerate to be initialized for the control.
			*     use max_framerate to get required performance]
			* Exposure factor used to convert fixed point integer to float
			* For convenience use 1 sec = 1000000us as conversion factor
			* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
			* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
			* Default Exposure Time [Default exposure to be initialized for the control.
			*     Set default exposure based on the default_framerate for optimal exposure settings]
			*
			* gain_factor = ""; (integer factor used for floating to fixed point conversion)
			* min_gain_val = ""; (ceil to integer)
			* max_gain_val = ""; (ceil to integer)
			* step_gain_val = ""; (ceil to integer)
			* default_gain = ""; (ceil to integer)
			* Gain limits for mode
			*
			* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
			* min_exp_time = ""; (ceil to integer)
			* max_exp_time = ""; (ceil to integer)
			* step_exp_time = ""; (ceil to integer)
			* default_exp_time = ""; (ceil to integer)
			* Exposure Time limits for mode (us)
			*
			*
			* min_hdr_ratio = "";
			* max_hdr_ratio = "";
			* HDR Ratio limits for mode
			*
			* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
			* min_framerate = "";
			* max_framerate = "";
			* step_framerate = ""; (ceil to integer)
			* default_framerate = ""; (ceil to integer)
			* Framerate limits for mode (fps)
			*/
			mode0 { // OV5693_MODE_2592X1944
				mclk_khz = "24000";
				num_lanes = "2";
				tegra_sinterface = "serial_a";
				phy_mode = "DPHY";
				discontinuous_clk = "yes";
				dpcm_enable = "false";
				cil_settletime = "0";
 
				active_w = "3264"; /* changed original value*/
				active_h = "2464"; /* changed original value*/
				/*mode_type = "bayer";
				pixel_phase = "bggr"; */ /*imx219 doesnot have it*/
				pixel_t = "bayer_rggb";
				/* csi_pixel_bit_depth = "10"; */
				readout_orientation = "90";
				line_length = "3448"; /*2688 replaced with imx219*/
				inherent_gain = "1";
				/* mclk_multiplier = "9.33"; 6.67 replaced with imx219 value */
				pix_clk_hz = "182400000"; /* 160000000 replaced with imx219 value*/
 
				gain_factor = "16"; /* 10 replaced with imx219 value*/
				min_gain_val = "16";/* 1DB*/ /*10 replaced with imx219*/
				max_gain_val = "170";/* 16DB*/ /* 160 replaced with imx219 value*/
				step_gain_val = "1";
				default_gain = "16"; /* 10 replaced with imx219 value*/
				min_hdr_ratio = "1";
				max_hdr_ratio = "1";
				framerate_factor = "1000000";
				min_framerate = "2000000";/*1.816577 */ /* 1816577 replaced with imx219 value i.e 2fps*/ 
				max_framerate = "21000000";/*30*/ /* 30000000 replaced with imx219 value i.e 21 fps*/
				step_framerate = "1";
				default_framerate = "21000000"; /* 30000000 replaced with imx219 value i.e. 21 fps */
				exposure_factor = "1000000";
				min_exp_time = "13";/* us */ /* 34 replaced with imx219 value*/
				max_exp_time = "683709";/* us */ /* 550385 replaced with imx219 value*/
				step_exp_time = "1";
				default_exp_time = "2495";/* us */ /* 33334 replaced with imx219 value */
				embedded_metadata_height = "2"; /* 0 replaced with imx219 value*/
			};
 
			/* Removed two modules, we need only one and our custom MIPI doesnot have multiple modes */
 
			ports {
				status = "okay";
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					status = "okay";
					reg = <0>;
					e3326_ov5693_out0: endpoint {
						status = "okay";
						port-index = <0>;
						bus-width = <2>;
						remote-endpoint = <&e3326_csi_in0>;
					};
				};
			};
		};
	};
 
/* Removed lens */
 
	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		/**
		* Physical settings to calculate max ISO BW
		*
		* num_csi_lanes = <>;
		* Total number of CSI lanes when all cameras are active
		*
		* max_lane_speed = <>;
		* Max lane speed in Kbit/s
		*
		* min_bits_per_pixel = <>;
		* Min bits per pixel
		*
		* vi_peak_byte_per_pixel = <>;
		* Max byte per pixel for the VI ISO case
		*
		* vi_bw_margin_pct = <>;
		* Vi bandwidth margin in percentage
		*
		* max_pixel_rate = <>;
		* Max pixel rate in Kpixel/s for the ISP ISO case
		*
		* isp_peak_byte_per_pixel = <>;
		* Max byte per pixel for the ISP ISO case
		*
		* isp_bw_margin_pct = <>;
		* Isp bandwidth margin in percentage
		*/
		num_csi_lanes = <2>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		max_pixel_rate = <160000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;
		/**
		* The general guideline for naming 1x {
                status="okay";
                vi@15c10000  {badge_info contains 3 parts, and is as follows,
		* The first part is the camera_board_id for the module; if the module is in a FFD
		* platform, then use the platform name for this part.
		* The second part contains the position of the module, ex. “rear” or “front”.
		* The third part contains the last 6 characters of a part number which is found
		* in the module's specsheet from the vender.
		*/
		modules {
			module0 {
				status = "okay";
				badge = "e3326_front_P5V27C";
				position = "rear";
				orientation = "1";
				drivernode0 {
					status = "okay";
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_sensor";
					/* Driver v4l2 device name */
					devname = "ov5693 2-0036";
					/* Declare the device-tree hierarchy to driver instance */
					proc-device-tree = "/proc/device-tree/i2c@3180000/ov5693_c@36";
				};
				drivernode1 {
					/* Declare PCL support driver (classically known as guid)  */
					status = "okay";
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/e3326_lens_ov5693@P5V27C/";
				};
			};
		};
	};
};

  1. We modified OV5693.c and OV5693_mode_tbls.h as below:
    ov5693.c (15.0 KB)
    ov5693_mode_tbls.h (1.3 KB)

  2. After compiling we flashed Jetson TX2i

However, we are not able to register /dev/video0, following are the output of the dmesg:

dmesg | grep ov5693

vte-developer@vtedeveloper-desktop:~$ dmesg | grep ov5693
[    3.455700] ov5693 2-0036: probing v4l2 sensor no i2c.
[    3.455738] ov5693 2-0036: Failed to find clocks
[    3.485726] ov5693 2-0036: tegracam sensor driver:ov5693_v2.0.6
[    3.485733] ov5693 2-0036: TEGRA_CAMERA_CID_GROUP_HOLD contorl is enabled in framework by default, no need to add it in driver
[    3.504782] ov5693 2-0036: Error -22 in control ops setup
[    3.526425] ov5693 2-0036: Failed to init ctrls ov5693
[    3.532897] ov5693 2-0036: tegra camera subdev registration failed
[    3.576008] ov5693: probe of 2-0036 failed with error -22

dmesg | grep cam

vte-developer@vtedeveloper-desktop:~$ dmesg | grep camera
[    0.993446] tegra_camera_platform tegra-camera-platform: tegra_camera_probe:camera_platform_driver probe
[    0.993561] misc tegra_camera_ctrl: tegra_camera_isomgr_register isp_iso_bw=1000000, vi_iso_bw=750000, max_bw=1000000
[    3.532897] ov5693 2-0036: tegra camera subdev registration failed
vte-developer@vtedeveloper-desktop:~$ dmesg | grep cam
[    0.543122] en-vdd-cam: 1800 mV 
[    0.555155] en-vdd-cam-hv-2v8: 2800 mV 
[    0.555783] en-vdd-cam-1v2: 1200 mV 
[    0.561458] camchar: rtcpu character device driver loaded
[    0.993446] tegra_camera_platform tegra-camera-platform: tegra_camera_probe:camera_platform_driver probe
[    0.993561] misc tegra_camera_ctrl: tegra_camera_isomgr_register isp_iso_bw=1000000, vi_iso_bw=750000, max_bw=1000000
[    1.284502] tegra186-cam-rtcpu b000000.rtcpu: Trace buffer configured at IOVA=0xbff00000
[    1.287275] tegra186-cam-rtcpu b000000.rtcpu: no priority specified, using 99 as default
[    1.288655] tegra186-cam-rtcpu b000000.rtcpu: using cam RTCPU IRQ (52)
[    1.288657] tegra186-cam-rtcpu b000000.rtcpu: tegra_camrtc_mon_create is successful
[    1.289154] tegra186-cam-rtcpu b000000.rtcpu: firmware version cpu=sce cmd=5 sha1=c73bbe92930645be44530c166eb578bfbb9499c3
[    3.485726] ov5693 2-0036: tegracam sensor driver:ov5693_v2.0.6
[    3.532897] ov5693 2-0036: tegra camera subdev registration failed
[   31.817929] en-vdd-cam: disabling
[   31.817991] en-vdd-cam-hv-2v8: disabling
[   31.818001] en-vdd-cam-1v2: disabling

ls /dev/video0

vte-developer@vtedeveloper-desktop:~$ ls /dev/video0
ls: cannot access '/dev/video0': No such file or directory

sudo media-ctl -p -d /dev/media0

vte-developer@vtedeveloper-desktop:~$ sudo media-ctl -p -d /dev/media0
Media controller API version 0.1.0

Media device information
------------------------
driver          tegra-vi4
model           NVIDIA Tegra Video Input Device
serial          
bus info        
hw revision     0x3
driver version  0.0.0

Device topology
- entity 1: 150c0000.nvcsi--1 (2 pads, 0 link)
            type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Source


As driver itself is not getting registered, what else can we do to resolve this issue.

I have attached dmesg log below.
dmesg (89.2 KB)

Hi @jetuser

Checking the dmesg log, we can see that you have a TEGRA_CAMERA_CID_GROUP_HOLD contorl is enabled in framework by default, no need to add it in driver, apparently this error is causing the Error -22 in control ops setup and by consequence the tegra camera subdev registration failed, I see you didn’t specify your Jetpack version (that would be useful), but perhaps you can check this by inspecting the tegracam_ctrls.c file:

		case TEGRA_CAMERA_CID_GROUP_HOLD:
			dev_err(dev,
				"TEGRA_CAMERA_CID_GROUP_HOLD contorl is enabled in framework by default, no need to add it in driver\n");
			return -EINVAL;

You could try to remove the .set_group_hold from your driver in the static struct tegracam_ctrl_ops ov5693_ctrl_ops hopefully that will register your device successfully or at least show a different issue.

Hope this helps!
Regards!

Greivin Brenes
Embedded SW Engineer at RidgeRun

Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com

Hi,
Apologies, I was away.

In ov5693.c, I removed .set_group_hold as below:

static struct tegracam_ctrl_ops ov5693_ctrl_ops = {
	.numctrls = ARRAY_SIZE(ctrl_cid_list),
	.ctrl_cid_list = ctrl_cid_list,
	.set_gain = ov5693_set_gain,
	.set_exposure = ov5693_set_exposure,
	.set_exposure_short = ov5693_set_exposure_short,
	.set_frame_rate = ov5693_set_frame_rate,
	/*.set_group_hold = ov5693_set_group_hold,*/    /*MODIFIED: disabling set_group_hold 22052023_09:06*/

However, after flashing, I still got the same error.

vte-developer@vtedeveloper-desktop:~$ dmesg | grep ov5693
[    3.117132] ov5693 2-0036: probing v4l2 sensor no i2c.
[    3.117278] ov5693 2-0036: Failed to find clocks
[    3.128607] ov5693 2-0036: tegracam sensor driver:ov5693_v2.0.6
[    3.128614] ov5693 2-0036: TEGRA_CAMERA_CID_GROUP_HOLD contorl is enabled in framework by default, no need to add it in driver
[    3.158732] ov5693 2-0036: Error -22 in control ops setup
[    3.170896] ov5693 2-0036: Failed to init ctrls ov5693
[    3.181457] ov5693 2-0036: tegra camera subdev registration failed
[    3.197739] ov5693: probe of 2-0036 failed with error -22

dmesg.txt (70.2 KB)

Hi @jetuser ,

I see you are using the following struct:

static const u32 ctrl_cid_list[] = {
	TEGRA_CAMERA_CID_GAIN,
	TEGRA_CAMERA_CID_EXPOSURE,
	TEGRA_CAMERA_CID_EXPOSURE_SHORT,
	TEGRA_CAMERA_CID_FRAME_RATE,
	TEGRA_CAMERA_CID_GROUP_HOLD,
	TEGRA_CAMERA_CID_HDR_EN,
}; 

Try removing the TEGRA_CAMERA_CID_GROUP_HOLD as well, it is no necessary to define it there.

Hi,
Thank you for the quick response.

I removed TEGRA_CAMERA_CID_GROUP_HOLD, however, I got the following error:

vte-developer@vtedeveloper-desktop:~$ dmesg | grep ov5693
[    3.297780] ov5693 2-0036: probing v4l2 sensor no i2c.
[    3.297829] ov5693 2-0036: Failed to find clocks
[    3.302653] ov5693 2-0036: tegracam sensor driver:ov5693_v2.0.6
[    3.302659] ov5693 2-0036: Missing TEGRA_CAMERA_CID_GROUP_HOLD implementation
[    3.313003] ov5693 2-0036: ERROR: 1 controls registered with framework but missing implementation
[    3.322050] ov5693 2-0036: Error -22 in control ops setup
[    3.328914] ov5693 2-0036: Failed to init ctrls ov5693
[    3.334280] ov5693 2-0036: tegra camera subdev registration failed
[    3.343340] ov5693: probe of 2-0036 failed with error -22

I believe TEGRA_CAMERA_CID_GROUP_HOLD is still being referenced somewhere, I checked tegracam_core.h, however, there is nothing wrt GROUP_HOLD. I did see TEGRA_CAMERA_CID_GROUP_HOLD being defined in tegra-v4l2-camera.h, should I comment out this?

Hi @jetuser ,
Great that is a different issue, now it seems that it is registering the TEGRA_CAMERA_CID_GROUP_HOLD (because actually this is enabled in framework by default) but it is not implemented, maybe you can try to set again the:

.set_group_hold = ov5693_set_group_hold

in your static struct tegracam_ctrl_ops ov5693_ctrl_ops to implement the method, make sure you have also the ov5693_set_group_hold function is defined in the driver code.

Many times these errors are usually in the drivers so it is not usual to modify the files like tegra-v4l2-camera.h, since this is a common file for all the drivers it could be also a bit dangerous.

Yes, you are right, tegra-v4l2-camera.h should not be touched.

But uncommenting .set_group_hold = ov5693_set_group_hold would mean again reverting back to the earlier version where we were getting TEGRA_CAMERA_CID_GROUP_HOLD contorl is enabled in framework by default, no need to add it in driver error, right? because the only change that we made on the driver was commenting out .set_group_hold.

Did you give it a try?

It is not the same actually, the difference is that this time you are not going to add the TEGRA_CAMERA_CID_GROUP_HOLD to the static const u32 ctrl_cid_list[] explicitly, but you are implementing the function and adding it to the tegracam_ctrl_ops ov5693_ctrl_ops which seems to be what is needed based on this error: Missing TEGRA_CAMERA_CID_GROUP_HOLD implementation

1 Like

Thank you @greivin.brenes , this does solve the initial problem, below is the output, I guess the driver was registered successfully.

[    3.780320] ov5693 2-0036: probing v4l2 sensor no i2c.
[    3.780359] ov5693 2-0036: Failed to find clocks
[    3.827153] ov5693 2-0036: tegracam sensor driver:ov5693_v2.0.6
[    3.827191] tegra-vi4 15700000.vi: subdev ov5693 2-0036 bound
[    3.850648] ov5693 2-0036: Detected OV5693 sensor
[    7.227548] ov5693 2-0036: ov5693_open:
[ 1620.221493] ov5693 2-0036: ov5693_open:

Now moving to the next step, I used vte-developer@vtedeveloper-desktop:~$ gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink, I got the following error

vte-developer@vtedeveloper-desktop:~$ gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error:
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.000675785
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
vte-developer@vtedeveloper-desktop:~$

what should I do to debug this?

Nice, it seems to be working correctly.

I think you should open a new thread for this issue, so more people can check it out, since it is now related to Gstreamer.

However, in the first instance I would recommend to use the GST_DEBUG environment variable
before the gst-launch-1.0, this should be a good starting point to debug and it’ll show you a detailed log about what is happening, e.g:

GST_DEBUG=2, gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink

That will show you warning messages for example and it will change depending on the level that you assign to the GST_DEBUG variable, in RidgeRun we have a wiki about Gstreamer Debugging you may find it useful.

Hope this helps!
Regards!

Greivin Brenes
Embedded SW Engineer at RidgeRun

Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com

Thank You again @greivin.brenes for the help. Yes, I will open a new thread for this issue.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.