Using Emcraft IMX219 Camera

1. Emcraft IMX219 Camera

The i.MX 8MP NAVQ+ kit comes with support for connecting the Emcraft IMX219 camera. The IMX219 camera connects to the kit via the MIPI-CSI2 interface, and provides an easy way to bring visual input into the i.MX 8M Plus. The camera is based on the Sony IMX219 sensor, and has the following characteristics: 8.0 Mpix, 3264x2448 max resolution, fixed focus, 85.4° FOV, 2.42mm EFL, and 2.0±5% 4P F/NO. Link to the i.MX 8M Plus is via the dual-lane MIPI-CSI2 interface.

The IMX219 camera does not implement an ISP processing block on board, so video stream from the camera is transmitter in raw bayer format directly to the i.MX 8MP, where the stream is processed by the dedicated i.MX 8MP ISP block. The i.MX 8MP ISP processing pipeline includes de-mosaicing from the bayer format and 3A processing (Auto Exposure, Auto Focus, Auto White Balance).

2. Connecting Emcraft IMX219 Camera

To connect the Emcraft IMX219 camera to the kit, plug the camera cable into the CSI1 on the back side of the carrier board. The following picture illustrates connection of the camera to the kit:

3. Software Setup

For correct functioning of the Emcraft IMX219 camera with NAVQ+ kit BSP release 1.1.12-437 or higher is required. To enable support for the camera in software follow the below steps that enable correct DTB configuration for Linux kernel:

  • Connect NAVQ+ kit to a host via a USB-to-serial adapter, then open a serial terminal program on the host, and set “115200, 8N, 1” serial properties for the NAVQ+ port.

  • Alternatively, connect to the NAVQ+ kit via an ssh client.

  • Enter “user” for both login and password in the serial/ssh login prompt.

  • Issue the below commands in the Linux shell:

    user@imx8mpnavq:~$ sudo fw_setenv fdtfile imx8mp-navq-imx219.dtb user@imx8mpnavq:~$ sudo reboot

After the last command is invoked the board will reset, and IMX219 camera will be ready for use on the CSI1 port.

4. Finding Camera Device Nodes

Depending on additional hardware connected to the NAVQ+, the Emcraft IMX219 camera may not be the only V4L2 device present in the system. In order to access the camera the user needs to determine the correct video device file node.

The below command outputs video device node registered for single IMX219 camera connected to the NAVQ+:

user@imx8mpnavq:~$ v4l2-ctl --list-devices | grep -A1 VIV VIV (platform:viv0): /dev/video3

In the above output, the /dev/video3 device node corresponds to the camera connected to the CSI1 slot.

5. Streaming Video to HDMI Display

Use the “Cheese” program shipped as part of Gnome desktop environment for streaming video input from the IMX219 camera to the HDMI display connected to the NAVQ+:

user@imx8mpnavq:~$ cheese -d /dev/video3

At this point you should be getting GUI window with video stream displayed in real-time on your HDMI display:

6. Capturing Video Frames

Use the following Linux command to capture a single frame into a file:

Use the following Linux command to capture a video stream into an h264 encoded file:

7. Known Problems and Limitations

  • White balance for the IMX219 camera in 1080p mode has slight deviation to green tint. This is caused by not optimal ISP pipeline configuration, which will be fixed in future releases.

  • IMX219 is only supported on CSI1 port.