Apalis TK1 ADV7280M

Ok, so having failed in getting the ADV7280-M MIPI CSI encoder working on the Apalis T30, I’m having a little more success on the TK1.

Using the default TK1 kernel, I can modprobe tegra_camera which then starts all the relevant modules associated with the adv7280 which seems promising.

However, if I try using gst-launch-1.0, the entire platform crashes at the following line:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

After a short while, the Apalis TK1 automatically restarts.

It would appear that even though I have only one ADV7280M chip on our carrier board, 3 video devices are registered:

v4l2-ctl --list-devices
vi  ():
            /dev/video0
            /dev/video1
            /dev/video2

And using gst-device-monitor-1.0:

Probing devices...


Device found:

        name  : vi
        class : Video/Source
        caps  : video/x-raw, format=(string)YUY2, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)UYVY, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)I420, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)YV12, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)YVYU, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;


Device found:

        name  : vi
        class : Video/Source
        caps  : video/x-raw, format=(string)YUY2, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)UYVY, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)I420, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)YV12, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;
                video/x-raw, format=(string)YVYU, framerate=(fraction)[ 0/1, 100/1 ], width=(int)640, height=(int)576, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;


Device found:

        name  : vi
        class : Video/Source
        caps  : video/x-raw, format=(string)xRGB, framerate=(fraction)[ 0/1, 100/1 ], width=(int)1280, height=(int)720, interlace-mode=(string){ progressive, progressive }, pixel-aspect-ratio=(fraction)1/1;

And what does your lsmod say? As not all sensor modules allow for reliable probing some may load regardless of a physical sensor being present. This should usually not be an issue but could be worked around by black listing them if needed. One can simply append a device=/dev/video1 or the like to the v4l2src plugin to talk to a particular device.

Hi @marcel.tx

lsmod:

Module                  Size  Used by
ar0261_v4l2             8013  0
soc_camera_platform     2140  1
adv7280                 4198  2
tc358743                6743  0
ov5640                  7644  0
ap1302                  4684  0
ar0330_v4l2             7397  0
imx135_v4l2            12499  0
tegra_camera           22540  0
videobuf2_dma_contig     9692  1 tegra_camera

I have already tried removing the unused modules from the list (except for tegra_camera) but I get the same results - halting on New clock: GstSystemClock and then eventual auto reboot.

I’m confused as to why I have 3 video devices whereas on the Apalis T30 with the parallel ADV7280, I only ever had 1.

Well, that would be the ar0261_v4l2, tc358743, ap1302, ar0330_v4l2 and/or imx135_v4l2 then isn’t it?

One thing I forgot to mention before is that just as mentioned in this commit message this currently only will work with gstreamer 0.10 which unfortunately is not available on our regular image but using the latest Jetpack should work.

I guess that would make sense that the other video devices are those listed although I would have assumed (maybe foolishly) that Linux would only create the devices which actually physically existed.

Ok, so gst-launcher-1.0 will not work with the adv7280 - this would explain the crashes.

I will give the latest JetPack a try.