Difference between revisions of "V4L2 driver for camera sensor or capture chip"

From RidgeRun Developer Connection
Jump to: navigation, search
m (Hardware)
m
 
(33 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<seo title="V4L2 Camera Driver | V4L2 Driver | Camera sensor driver | RidgeRun " titlemode="replace" keywords="V4L2 driver, FPGA V4L2 driver, custom V4L2 driver, Tegra V4L2 driver, camera V4L2 driver" description="RidgeRun has more than 12 years experience creating custom Linux V4L2 drivers for embedded systems. Read more about the V4L2 Camera Driver online now."></seo>
+
<seo title="Linux V4L2 Camera Drivers from RidgeRun | Camera sensor driver | RidgeRun" titlemode="replace" metakeywords="NVIDIA, Jetson, Jetson TX1, Jetson TX2, Xavier, NVIDIA Jetson Xavier, NVIDIA Jetson Xavier NX, Jetson Xavier, Xilinx, TI, NXP, i.MX8, i.MX6, Jetson Xavier NX, V4L2 driver, FPGA V4L2 driver, custom V4L2 driver, Jetson V4L2 driver, Linux V4L2 Camera Driver, Camera sensor driver, HDMI capture driver, EDID Support, EDID descriptor, EDID, Extended Display Identification Data, CMOS driver, camera sensor, camera sensor driver, HDMI capture driver, Sony camera sensor, Aptina camera sensor, Omnivision camera sensor, Gennum, semtek, Omnivision, Maxim, Sony, Framos, Aptina, Toshiba, SDI receivers, HDMI receivers, Composite decoders, Component decoders, FPGA video capture, Linux V4L2 driver" metadescription="This wiki page has the details about RidgeRun's expertise in developing and supporting various V4L2 driver for camera sensor or capture chips."></seo>
  
 
<table>
 
<table>
Line 5: Line 5:
 
<td><div class="clear; float:right">__TOC__</div></td>
 
<td><div class="clear; float:right">__TOC__</div></td>
 
<td>
 
<td>
<html>
+
<center>
<div id='product-component-e249caa9494'></div>
+
{{Shopping cart mpo for V4L2 camera drivers}}
    <script type="text/javascript">
+
</center>
    /*<![CDATA[*/
+
<td>
 +
{{NVIDIA Preferred Partner logo}}
 +
<td>
 +
<td>
 +
[[File:NXP Partner Program Registered Vertical.jpg|175px]]
 +
<td>
 +
<center>
 +
{{ContactUs Button}}
 +
</center>
 +
</td></tr></table>
 +
 
 +
 
 +
== Camera Capture Drivers ==
 +
 
 +
RidgeRun has more than 12 years of experience creating custom Linux V4L2 drivers for embedded systems.  The customer selects the hardware sensor or chip and RidgeRun creates the V4L2 driver for it. This wiki describes the services provided by RidgeRun to create a V4L2 driver for your system as well as some of the considerations related to time frame, documentation, hardware, etc. [[V4L2_driver_for_camera_sensor_or_capture_chip#Contact_Us | Contact Us]] section provides info on how to reach the RidgeRun team.
 +
 
 +
== Alternative Capture Drivers ==
 +
 
 +
There are a number of alternative video sources that do not expose a direct MIPI-CSIx interface; a very popular option relies on using a HDMI video source interfaced to a HDMI-to-CSIx bridge. RidgeRun has developed drivers for common used chips such as the following:
 +
 
 +
* Toshiba TC358743
 +
* Toshiba TC358840
 +
* Toshiba TC358746
 +
* Lontium LT6911UXC
  
    (function () {
+
=== EDID (Extended Display Identification Data) Support on HDMI capture drivers ===
      var scriptURL = 'https://sdks.shopifycdn.com/buy-button/latest/buy-button-storefront.min.js';
 
      if (window.ShopifyBuy) {
 
        if (window.ShopifyBuy.UI) {
 
          ShopifyBuyInit();
 
        } else {
 
          loadScript();
 
        }
 
      } else {
 
        loadScript();
 
      }
 
  
      function loadScript() {
+
If your capture chip is an HDMI receiver please ask RidgeRun about the EDID Support for your driver because getting the chip working with your camera might require additional work due to EDID requirements. This section explains some of the work that is required.
        var script = document.createElement('script');
 
        script.async = true;
 
        script.src = scriptURL;
 
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);
 
        script.onload = ShopifyBuyInit;
 
      }
 
  
      function ShopifyBuyInit() {
+
=== EDID Background ===
        var client = ShopifyBuy.buildClient({
+
 
          domain: 'ridgerun1.myshopify.com',
+
The EDID is like a descriptor (multiple HEX numbers) of the resolutions that are supported by the HDMI receiver, for instance, the TC358840 chip, so the camera or video source knows what resolutions it can output. This EDID information is sent through the DDC which is a kind of i2c [1].
          storefrontAccessToken: 'b0ca98633a82de5d2f63cd51f5af30ac',
+
 
        });
+
The EDID descriptor has multiple revisions or versions [2] and therefore not all the cameras are able to parse all the same EDID or versions. This is why it is important to know which video source you will use. We have seen cases where our EDID works with multiple cameras but one camera doesn't like it so we have to start modifying it until we get it working. Furthermore, in some cases, the camera manufacturer doesn't pay attention to the EDID and just outputs a default resolution.
 +
 
 +
One option, for instance, is to connect your cameras to a specific monitor. If all the output is 1080p60 then we could try copying the EDID from your monitor and put it in our driver after some modifications because your monitor EDID will report likely a huge amount of resolutions supported that are not supported by the TC358840.
 +
 
 +
In Linux, after connecting the monitor you can read the EDID using these commands:
 +
*EDID
 +
 
 +
Display EDID information for each display
 +
xrandr --props
 +
 +
Display EDID information for specific display
 +
cat /sys/class/drm/card0-HDMI-A-1/edid | hexdump
 +
 
 +
Decode EDID information
 +
 
 +
sudo apt-get install edid-decode
 +
cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode
  
        ShopifyBuy.UI.onReady(client).then(function (ui) {
+
In Windows, there are tools to take the EDID and edit it, but since there are multiple versions not always all the tools will be able to decode it and edit it.
          ui.createComponent('product', {
 
            id: [1684420821063],
 
            node: document.getElementById('product-component-e249caa9494'),
 
            moneyFormat: '%24%7B%7Bamount%7D%7D',
 
            options: {
 
  "product": {
 
    "variantId": "all",
 
    "width": "240px",
 
    "contents": {
 
      "imgWithCarousel": false,
 
      "variantTitle": false,
 
      "description": false,
 
      "buttonWithQuantity": false,
 
      "quantity": false
 
    },
 
    "text": {
 
      "button": "BUY NOW"
 
    },
 
    "styles": {
 
      "product": {
 
        "@media (min-width: 601px)": {
 
          "max-width": "100%",
 
          "margin-left": "0",
 
          "margin-bottom": "50px"
 
        }
 
      },
 
      "button": {
 
        "background-color": "#007493",
 
        "font-size": "18px",
 
        "padding-top": "17px",
 
        "padding-bottom": "17px",
 
        ":hover": {
 
          "background-color": "#006884"
 
        },
 
        ":focus": {
 
          "background-color": "#006884"
 
        }
 
      },
 
      "quantityInput": {
 
        "font-size": "18px",
 
        "padding-top": "17px",
 
        "padding-bottom": "17px"
 
      },
 
      "compareAt": {
 
        "font-size": "12px"
 
      }
 
    }
 
  },
 
  "cart": {
 
    "contents": {
 
      "button": true
 
    },
 
    "styles": {
 
      "button": {
 
        "background-color": "#007493",
 
        "font-size": "18px",
 
        "padding-top": "17px",
 
        "padding-bottom": "17px",
 
        ":hover": {
 
          "background-color": "#006884"
 
        },
 
        ":focus": {
 
          "background-color": "#006884"
 
        }
 
      },
 
      "footer": {
 
        "background-color": "#ffffff"
 
      }
 
    }
 
  },
 
  "modalProduct": {
 
    "contents": {
 
      "img": false,
 
      "imgWithCarousel": true,
 
      "variantTitle": false,
 
      "buttonWithQuantity": true,
 
      "button": false,
 
      "quantity": false
 
    },
 
    "styles": {
 
      "product": {
 
        "@media (min-width: 601px)": {
 
          "max-width": "100%",
 
          "margin-left": "0px",
 
          "margin-bottom": "0px"
 
        }
 
      },
 
      "button": {
 
        "background-color": "#007493",
 
        "font-size": "18px",
 
        "padding-top": "17px",
 
        "padding-bottom": "17px",
 
        ":hover": {
 
          "background-color": "#006884"
 
        },
 
        ":focus": {
 
          "background-color": "#006884"
 
        }
 
      },
 
      "quantityInput": {
 
        "font-size": "18px",
 
        "padding-top": "17px",
 
        "padding-bottom": "17px"
 
      }
 
    }
 
  },
 
  "toggle": {
 
    "styles": {
 
      "toggle": {
 
        "background-color": "#007493",
 
        ":hover": {
 
          "background-color": "#006884"
 
        },
 
        ":focus": {
 
          "background-color": "#006884"
 
        }
 
      },
 
      "count": {
 
        "font-size": "18px"
 
      }
 
    }
 
  },
 
  "productSet": {
 
    "styles": {
 
      "products": {
 
        "@media (min-width: 601px)": {
 
          "margin-left": "-20px"
 
        }
 
      }
 
    }
 
  }
 
}
 
          });
 
        });
 
      }
 
    })();
 
    /*]]>*/
 
    </script>
 
</html>
 
</td>
 
<td><center>
 
{{Template:Eval SDK Download, Demo Image download and Contact Us buttons}}
 
</center></td></tr></table>
 
  
= Introduction =
+
[1] https://en.wikipedia.org/wiki/HDMI
  
RidgeRun has more than 12 years experience creating custom Linux V4L2 drivers for embedded systems.  The customer selects the hardware sensor or chip and RidgeRun creates the V4L2 driver for it. This wiki describes the services provided by RidgeRun to create a V4L2 driver for your system as well as some of the considerations related to time frame, documentation, hardware, etc. [https://developer.ridgerun.com/wiki/index.php?title=V4L2_driver_for_camera_sensor_or_capture_chip#Contact_Us Contact Us] section provides info on how to reach RidgeRun team.
+
[2] https://www.extron.com/company/article.aspx?id=uedid
  
= V4L2 Driver =
+
== V4L2 Driver ==
  
V4L2 is the official Linux Kernel API to handle capture devices like camera sensors, video decoders or FPGAs feeding video frames to the SoC.  The video frames can come from component, composite, HDMI, or SDI, or frames from other video encoding standards.
+
V4L2 is the official Linux Kernel API to handle capture devices like camera sensors, video decoders, or FPGAs feeding video frames to the SoC.  The video frames can come from the component, composite, HDMI, or SDI, or frames from other video encoding standards.
  
The V4L2 framework defines the API the Linux camera driver supports in order to be V4L2 compliant.  The Linux kernel uses the camera driver to initialize the hardware and produce video frames. Each of these functions have an specific implication to the camera sensor.  Often the driver interacts with the camera sensor, receiver chip or FPGA using by reading and writing I2C or SPI registers.
+
The V4L2 framework defines the API the Linux camera driver supports in order to be V4L2 compliant.  The Linux kernel uses the camera driver to initialize the hardware and produce video frames. Each of these functions has a specific implication for the camera sensor.  Often the driver interacts with the camera sensor, receiver chip, or FPGA using by reading and writing I2C or SPI registers.
  
 
Creating a Linux camera driver consists of four steps:
 
Creating a Linux camera driver consists of four steps:
*Subdevice driver - camera sensor configuration via I2C, SPI or other low level communication to initialize sensor and support different resolutions.  RidgeRun custom drivers support one resolution, other can be added as needed.
+
*Subdevice driver - camera sensor configuration via I2C, SPI, or other low-level communication to initialize sensor and support different resolutions.  RidgeRun custom drivers support one resolution, others can be added as needed.
 
*Device tree modification
 
*Device tree modification
 
*Capture subsystem configuration and video node creation (/dev/video):
 
*Capture subsystem configuration and video node creation (/dev/video):
**In Jetson TX1/TX2/Xavier involves code needed to configure Video Input (VI) to receive the video coming from the camera. Support to capture from v4l2, libargus and nvcamerasrc (YUV).
+
**In NVIDIA Jetson TX1/TX2/Xavier involves code needed to configure Video Input (VI) to receive the video coming from the camera. Support to capture from v4l2, libargus, and nvcamerasrc (YUV).
 
**In UltraScale+ involves adding the code to configure the VPSS to receive the video coming from the sensor. It might require some work on the PL.
 
**In UltraScale+ involves adding the code to configure the VPSS to receive the video coming from the sensor. It might require some work on the PL.
 
**In DM8168 and DM8148, this is the VPSS configuration
 
**In DM8168 and DM8148, this is the VPSS configuration
Line 203: Line 83:
 
**Add support to one application like GStreamer, Yavta, etc to grab the frames available in the video node (/dev/video), sometimes this involves creating software patches to support custom color spaces.  
 
**Add support to one application like GStreamer, Yavta, etc to grab the frames available in the video node (/dev/video), sometimes this involves creating software patches to support custom color spaces.  
  
== Resolutions and controls ==
+
=== Camera sensor resolutions and controls ===
  
*[https://shop.ridgerun.com/products/additional-cmos-sensor-or-v4l2-driver Additional CMOS Sensor or V4L2 driver product] includes the work to complete each of the stages mentioned above. Its price includes support for one resolution chosen by the customers and others can be added later T&M, normally the hardest part is to get the system capturing frames but once it is working for one resolutions adding others is straight forward.
+
* V4L2 device drivers (for camera sensors, GMSL2, FPD-Link, etc) are developed on T&M basis, the customer is only required to provide their driver requirements and we provide a quote of the estimated effort.
  
*RidgeRun also provides services to extend the driver to support additional controls like auto white balance, contrast, exposure time, etc if the sensor has this capabilities as well as multiple sensor/chips support.
+
* RidgeRun also provides services to extend the driver to support additional controls like auto white balance, contrast, exposure time, etc if the sensor has these capabilities as well as multiple sensor/chips support.
  
*In case of NVIDIA Jetson, RidgeRun will use the default ISP calibration. Please notice that once the driver is in place you might need to create a custom ISP calibration file for your sensor if you need to use the built-in ISP. NVIDIA gives access to the ISP calibration tools only to ODMs, so companies like D3engineering and Leopard Imaging can create this file for you if the default settings don't produce the expected image quality.
+
* In the case of NVIDIA Jetson, RidgeRun will use the default ISP calibration. Please notice that once the driver is in place you might need to create a custom ISP calibration file for your sensor if you need to use the built-in ISP. NVIDIA gives access to the ISP calibration tools only to ODMs, so companies like D3 engineering and Leopard Imaging can create this file for you if the default settings don't produce the expected image quality.
  
== Devices ==
+
=== Devices that need V4L2 drivers ===
  
 
Some of the devices that might need a V4L2 driver are:
 
Some of the devices that might need a V4L2 driver are:
Line 222: Line 102:
 
*FPGA feeding video
 
*FPGA feeding video
  
= Delivery =
+
== Linux V4L2 driver delivery ==
  
Once the driver is done RidgeRun provides the source code of the driver as well as a wiki page with instructions about how to compile and test the driver, normally using applications like GStreamer or Yavta with performance measurements like ARM load and frames per seconds.
+
Once the V4L2 driver development is completed, RidgeRun provides the source code of the driver as well as a wiki page with instructions about how to compile and test the driver, normally using applications like GStreamer or Yavta with performance measurements like ARM load and frames per seconds.
  
= Documentation Required =
+
== Documentation Required ==
  
*In order to complete the driver RidgeRun needs access to the documentation that describes how to configure the sensor or receiver, this happens normally through i2c or SPI registers unless your driver is a V4L2 driver for a FPGA. For this reason RidgeRun has NDA with:
+
*In order to complete the driver RidgeRun needs access to the documentation that describes how to configure the sensor or receiver, this happens normally through i2c or SPI registers unless your driver is a V4L2 driver for an FPGA. For this reason, RidgeRun has NDA with:
 
**Omnivision
 
**Omnivision
 
**Maxim
 
**Maxim
Line 235: Line 115:
 
**Aptina
 
**Aptina
 
**Toshiba
 
**Toshiba
*Although it is not mandatory it is useful to provide the schematics for your board to understand better how are the video receivers connected, details like i2c bus, MIPI CSI2 port, parallel port, clock signal, etc, help RidgeRun engineers to create your driver faster and in some case to detect hardware issues.
+
*Although it is not mandatory it is useful to provide the schematics for your board to understand better how are the video receivers connected, details like i2c bus, MIPI CSI2 port, parallel port, a clock signal, etc, help RidgeRun engineers to create your driver faster and in some case to detect hardware issues.
 
 
= Hardware =
 
 
 
*RidgeRun needs remote or physical access to the hardware to create and test the driver. RidgeRun assumes that there are not hardware issues that would delay the development process (and increase costs). In case of problems with your hardware, RidgeRun will bill up to 20 hours of engineers services for the time needed to inform you what is wrong.
 
*Once we are done with the driver the hardware is shipped back to the customer, if requested, at customer's expense.
 
 
 
= Time frame =
 
 
 
*Creating a V4L2 driver requires between 3 to 4 weeks if RidgeRun doesn't have the driver already done. During this period partial deliveries are provided to the customers as well as progress updates. In case of situations blocking the progress (like hardware issues) these are informed to the customer as well.
 
 
 
= EDID Support on HDMI capture drivers =
 
 
 
If your capture chip is a HDMI receiver please ask RidgeRun about the EDID Support for your driver because getting the chip working with your camera might require additional work due EDID requirements. This section explains some of the work that is required.
 
 
 
== EDID Background ==
 
  
The EDID is like a descriptor (multiple HEX numbers) of the resolutions that are supported by the HDMI receiver, for instance the TC358840 chip, so the camera or video source knows what resolutions it can output. These EDID information is sent through the DDC which is kind of i2c [1].
+
== Hardware ==
  
The EDID descriptor has multiple revisions or versions [2] and therefore not all the cameras are able to parse all the same EDID or versions. This is why it is important to know which video source you will use. We have seen cases where our EDID works with multiple cameras but one camera doesn't like it so we have to start modifying it until we get it working. Furthermore, in some cases the camera manufacturer doesn't pay attention to the EDID and it just output a default resolution.
+
*RidgeRun needs remote or physical access to the hardware to create and test the driver. RidgeRun assumes that there are no hardware issues that would delay the development process (and increase costs). In case of problems with your hardware, RidgeRun will bill up to 20 hours of engineer's services for the time needed to inform you of what is wrong.
 +
*Once we are done with the driver the hardware is shipped back to the customer, if requested, at the customer's expense.
  
One option for instance, is to connect your cameras to a specific monitor. If all them output 1080p60 then we could try copying the EDID from your monitor and put it in our driver after some modifications because your monitor EDID will report likely a huge amount of resolutions supported that are not supported by the TC358840.
+
== Time frame ==
  
In Linux, after connecting the monitor you can read the EDID using these commands:
+
*Creating a basic V4L2 driver from scratch requires between 3 to 4 weeks. During this period partial deliveries are provided to the customers as well as progress updates. In case of situations blocking the progress (like hardware issues), these are informed to the customer as well.
*EDID
 
 
 
Display EDID information for each display
 
xrandr --props
 
 
Display EDID information for specific display
 
cat /sys/class/drm/card0-HDMI-A-1/edid | hexdump
 
 
 
Decode EDID information
 
 
 
sudo apt-get install edid-decode
 
cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode
 
 
 
In Windows there are tools to take the EDID and edit it, but since there are multiple version not always all the tools will be able to decode it and edit it.
 
 
 
[1] https://en.wikipedia.org/wiki/HDMI
 
 
 
[2] https://www.extron.com/company/article.aspx?id=uedid
 
  
= Related articles=
+
== See also ==
*[https://developer.ridgerun.com/wiki/index.php?title=V4L2_drivers_available_for_Tegra_SoCs V4L2 drivers available for Jetson SoCs]
+
*[[V4L2_drivers_available_for_Tegra_SoCs | V4L2 drivers available for Jetson SoCs]]
*[https://developer.ridgerun.com/wiki/index.php?title=RidgeRun_Professional_Services RidgeRun Professional Services]
+
*[[RidgeRun_Professional_Services | RidgeRun Professional Services]]
 +
*[[RidgeRun Subscription Model | RidgeRun Subscription Model]]
  
 
{{ContactUs}}
 
{{ContactUs}}
  
[[Category:Jetson]][[Category:Jetson V4L2 Drivers]][[Category:Services]]
+
[[Category:Jetson V4L2 Drivers]][[Category:Services]][[Category:IMX6]][[Category:IMX8]][[Category:Jetson]][[Category:NVIDIA Xavier]][[Category:Zynq7000‏]][[Category:Ultrascale+]]
 +
[[Category:GStreamer]][[Category:GeoSemi‎]][[Category:Intersil‎]][[Category:Lontium‎]][[Category:Maxim‎]][[Category:OmniVision‎]][[Category:ON Semiconductor‎]][[Category:Sony]][[Category:Toshiba‎]]

Latest revision as of 07:33, 20 June 2023

Nvidia-preferred-partner-badge-rgb-for-screen.png

NXP Partner Program Registered Vertical.jpg

RR Contact Us.png


Camera Capture Drivers

RidgeRun has more than 12 years of experience creating custom Linux V4L2 drivers for embedded systems. The customer selects the hardware sensor or chip and RidgeRun creates the V4L2 driver for it. This wiki describes the services provided by RidgeRun to create a V4L2 driver for your system as well as some of the considerations related to time frame, documentation, hardware, etc. Contact Us section provides info on how to reach the RidgeRun team.

Alternative Capture Drivers

There are a number of alternative video sources that do not expose a direct MIPI-CSIx interface; a very popular option relies on using a HDMI video source interfaced to a HDMI-to-CSIx bridge. RidgeRun has developed drivers for common used chips such as the following:

  • Toshiba TC358743
  • Toshiba TC358840
  • Toshiba TC358746
  • Lontium LT6911UXC

EDID (Extended Display Identification Data) Support on HDMI capture drivers

If your capture chip is an HDMI receiver please ask RidgeRun about the EDID Support for your driver because getting the chip working with your camera might require additional work due to EDID requirements. This section explains some of the work that is required.

EDID Background

The EDID is like a descriptor (multiple HEX numbers) of the resolutions that are supported by the HDMI receiver, for instance, the TC358840 chip, so the camera or video source knows what resolutions it can output. This EDID information is sent through the DDC which is a kind of i2c [1].

The EDID descriptor has multiple revisions or versions [2] and therefore not all the cameras are able to parse all the same EDID or versions. This is why it is important to know which video source you will use. We have seen cases where our EDID works with multiple cameras but one camera doesn't like it so we have to start modifying it until we get it working. Furthermore, in some cases, the camera manufacturer doesn't pay attention to the EDID and just outputs a default resolution.

One option, for instance, is to connect your cameras to a specific monitor. If all the output is 1080p60 then we could try copying the EDID from your monitor and put it in our driver after some modifications because your monitor EDID will report likely a huge amount of resolutions supported that are not supported by the TC358840.

In Linux, after connecting the monitor you can read the EDID using these commands:

  • EDID
Display EDID information for each display
xrandr --props

Display EDID information for specific display

cat /sys/class/drm/card0-HDMI-A-1/edid | hexdump

Decode EDID information

sudo apt-get install edid-decode
cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode

In Windows, there are tools to take the EDID and edit it, but since there are multiple versions not always all the tools will be able to decode it and edit it.

[1] https://en.wikipedia.org/wiki/HDMI

[2] https://www.extron.com/company/article.aspx?id=uedid

V4L2 Driver

V4L2 is the official Linux Kernel API to handle capture devices like camera sensors, video decoders, or FPGAs feeding video frames to the SoC. The video frames can come from the component, composite, HDMI, or SDI, or frames from other video encoding standards.

The V4L2 framework defines the API the Linux camera driver supports in order to be V4L2 compliant. The Linux kernel uses the camera driver to initialize the hardware and produce video frames. Each of these functions has a specific implication for the camera sensor. Often the driver interacts with the camera sensor, receiver chip, or FPGA using by reading and writing I2C or SPI registers.

Creating a Linux camera driver consists of four steps:

  • Subdevice driver - camera sensor configuration via I2C, SPI, or other low-level communication to initialize sensor and support different resolutions. RidgeRun custom drivers support one resolution, others can be added as needed.
  • Device tree modification
  • Capture subsystem configuration and video node creation (/dev/video):
    • In NVIDIA Jetson TX1/TX2/Xavier involves code needed to configure Video Input (VI) to receive the video coming from the camera. Support to capture from v4l2, libargus, and nvcamerasrc (YUV).
    • In UltraScale+ involves adding the code to configure the VPSS to receive the video coming from the sensor. It might require some work on the PL.
    • In DM8168 and DM8148, this is the VPSS configuration
    • In i.MX6 this is the IPU configuration
    • In DM368 this is the VPFE configuration
  • Application Support:
    • Add support to one application like GStreamer, Yavta, etc to grab the frames available in the video node (/dev/video), sometimes this involves creating software patches to support custom color spaces.

Camera sensor resolutions and controls

  • V4L2 device drivers (for camera sensors, GMSL2, FPD-Link, etc) are developed on T&M basis, the customer is only required to provide their driver requirements and we provide a quote of the estimated effort.
  • RidgeRun also provides services to extend the driver to support additional controls like auto white balance, contrast, exposure time, etc if the sensor has these capabilities as well as multiple sensor/chips support.
  • In the case of NVIDIA Jetson, RidgeRun will use the default ISP calibration. Please notice that once the driver is in place you might need to create a custom ISP calibration file for your sensor if you need to use the built-in ISP. NVIDIA gives access to the ISP calibration tools only to ODMs, so companies like D3 engineering and Leopard Imaging can create this file for you if the default settings don't produce the expected image quality.

Devices that need V4L2 drivers

Some of the devices that might need a V4L2 driver are:

  • Camera Sensor from different vendors like Sony, Aptina, Omnivision, etc
  • SDI receivers like Gennum
  • HDMI receivers
  • GMSL or FPD Link chips to extend the physical connection of the camera to the SoC
  • Composite or component decoders
  • FPGA feeding video

Linux V4L2 driver delivery

Once the V4L2 driver development is completed, RidgeRun provides the source code of the driver as well as a wiki page with instructions about how to compile and test the driver, normally using applications like GStreamer or Yavta with performance measurements like ARM load and frames per seconds.

Documentation Required

  • In order to complete the driver RidgeRun needs access to the documentation that describes how to configure the sensor or receiver, this happens normally through i2c or SPI registers unless your driver is a V4L2 driver for an FPGA. For this reason, RidgeRun has NDA with:
    • Omnivision
    • Maxim
    • Sony
    • Framos
    • Aptina
    • Toshiba
  • Although it is not mandatory it is useful to provide the schematics for your board to understand better how are the video receivers connected, details like i2c bus, MIPI CSI2 port, parallel port, a clock signal, etc, help RidgeRun engineers to create your driver faster and in some case to detect hardware issues.

Hardware

  • RidgeRun needs remote or physical access to the hardware to create and test the driver. RidgeRun assumes that there are no hardware issues that would delay the development process (and increase costs). In case of problems with your hardware, RidgeRun will bill up to 20 hours of engineer's services for the time needed to inform you of what is wrong.
  • Once we are done with the driver the hardware is shipped back to the customer, if requested, at the customer's expense.

Time frame

  • Creating a basic V4L2 driver from scratch requires between 3 to 4 weeks. During this period partial deliveries are provided to the customers as well as progress updates. In case of situations blocking the progress (like hardware issues), these are informed to the customer as well.

See also


RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us

OOjs UI icon message-progressive.svg Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering informations are available in RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page. Ridgerun-logo.svg
RR Contact Us.png