Auvidea J130 + TX1

Is there anyone here using the J130 carrier board that can answer a few questions for me? I’ve tried repeatedly to reach out to auvidea and get little/no response from them.

Hi

Recently I ported our HDMI2CSI driver to the auvidea J130. So I have worked a bit with the board.
What are your questions?

For now… I just have 3 big questions:

  1. Do I need to solder jumpers on the board to use the hdmi capture? I found 1 wiki (https://github.com/InES-HPMM/linux-l4t/wiki/auvideaJ130) that said I should… but I’d like some confirmation if this is still the case, and possibly info on what other jumpers might need to be added/removed for other features.
  2. I’ve built the kernel drivers from their repo (https://github.com/InES-HPMM/linux-l4t/tree/hdmi2csi/l4t-r24-2.1-auvideaj130)… and got them installed on my tx1… and they load without any errors… but I get no /dev/video0 device… and as-such… can’t capture video. What am I missing?
  3. Is there a better way to get ahold of the folks from auvidea? They don’t seem to respond to emails/tickets.

and 1 last question:
Any chance you ported the hdmi2csi driver to work with the newer kernel on the tx2? I really wanted to go with the tx2 over the tx1… but auvidea doesn’t seem to be in any rush to do anything on that front despite their claims to me.

Hi

  1. Yes, you have to solder the mentioned connection otherwise the interrupt is not connected.

  2. Try to solder the connection mentioned at 1), ones you have booted the TX1 you need to load the driver with:

sudo modprobe tc358840

For more information see our github wiki https://github.com/InES-HPMM/linux-l4t/wiki/hdmi2csi#load-driver

To your last question, as we already mentioned in another thread:
Currently the TX2 is not supported. I hope that we will port our drivers in the near future, but I can not make any promises. After all we are a university and not a company with commercial interests. But we are happy to make contributions to the open source community as they arise from projects.

I was afraid you were going to say that. I added the jumper…, and i2cdetect shows something there… but after loading the driver, I still get no /dev/video0 device. Is there anything else I can do to debug this? My concern is that there are more than 1 resistor that needs to be added… due to the fact that my board seems to be missing more than just the 1 resistor. (from the pictures that I have seen)

And before you ask… yes, this is with auvidea’s modified dtb.

Could you paste the dmesg after the driver has been loaded, so we probably get some more information what could go wrong.

On our J130 Board the only modification we did was the one mentioned above (short of R168). We also have some other unequipped elements on the board.

Thanks frma for your response. Unfortunately, no error messages anywhere. dmesg shows no additional output after loading the module. I was hoping for some debug info, but no such luck.

Can you take a picture of your board?

My board looks like this:

https://drive.google.com/file/d/1z3uXWq2sWSLgMqyKi7XR3Z-PbZSBBtLNHg/view?usp=sharing

As you can see, I added a jumper according to the wiki… but from Auvidea’s website, the other resistors around the area are also populated. I’m not sure if I need to add more jumpers or what else I might be missing.

https://auvidea.com/images/auvidea/products/tx1/J130/J130_38205_bottom.jpg

I had a look at the picture of your board and I would say that it looks like the board we have here. So I don’t think your missing other components.

You should see some debug messages in dmesg, in any case when loading the driver, beginning with tc358840

Here’s the dmesg grep’d for tc358840:

[ 1216.253649] tc358840 6-000f: Device Tree Parameters:
[ 1216.253713] tc358840 6-000f: reset_gpio = 148
[ 1216.253738] tc358840 6-000f: interrupt = 424
[ 1216.253743] tc358840 6-000f: refclk_hz = 48000000
[ 1216.253748] tc358840 6-000f: ddc5v_delay = 50 ms
[ 1216.253753] tc358840 6-000f: enable_hdcp = 0
[ 1216.253757] tc358840 6-000f: csi_port = 3
[ 1216.253762] tc358840 6-000f: lineinitcnt = 4000
[ 1216.253766] tc358840 6-000f: lptxtimecnt = 4
[ 1216.253771] tc358840 6-000f: tclk_headercnt = 1573379
[ 1216.253775] tc358840 6-000f: tclk_trailcnt = 262149
[ 1216.253779] tc358840 6-000f: ths_headercnt = 851972
[ 1216.253784] tc358840 6-000f: twakeup = 16000
[ 1216.253788] tc358840 6-000f: tclk_postcnt = 10
[ 1216.253793] tc358840 6-000f: ths_trailcnt = 524294
[ 1216.253797] tc358840 6-000f: hstxvregcnt = 32
[ 1216.253802] tc358840 6-000f: pll_prd = 10
[ 1216.253806] tc358840 6-000f: pll_fbd = 125
[ 1216.253812] tc358840 6-000f: Releasing System Reset (gpio 0x0094)
[ 1216.253841] tc358840 6-000f: Chip found @ 7h0F (Tegra I2C adapter)
[ 1216.254516] tc358840 6-000f: TC358840 ChipID 0x47, Revision 0x00
[ 1216.258567] tc358840 6-000f: tc358840_sleep_mode(): disable
[ 1216.259549] tc358840 6-000f: tc358840_reset():
[ 1216.266127] tc358840 6-000f: tc358840_reset():
[ 1216.266660] tc358840 6-000f: tc358840_set_csi: Enabling CSI TX0
[ 1216.268029] tc358840 6-000f: tc358840_set_pll:
[ 1216.268402] tc358840 6-000f: tc358840_set_pll: Updating PLL clock of CSI TX0
[ 1216.269281] tc358840 6-000f: tc358840_set_pll: Updating PLL clock of CSI TX1
[ 1216.283148] tc358840 6-000f: tc358840_set_csi: Enabling CSI TX1
[ 1216.284601] tc358840 6-000f: tc358840_set_pll:
[ 1216.285771] tc358840 6-000f: tc358840_set_pll: Updating PLL clock of CSI TX1
[ 1216.305624] tc358840 6-000f: tc358840_reset_phy:
[ 1216.309259] tc358840 6-000f: tc358840_set_hdmi_hdcp: DUMMY disable
[ 1216.315342] tc358840 6-000f: tc358840_set_csi_mbus_config: YCbCr 422 16-bit
[ 1216.318664] tc358840 6-000f: tc358840_enable_interrupts: cable connected = 0
[ 1216.320143] tc358840 6-000f: tc358840_s_edid, pad 0, start block 0, blocks 2
[ 1216.320150] tc358840 6-000f: tc358840_disable_edid:
[ 1216.337052] tc358840 6-000f: tc358840xbg found @ 7h0F (Tegra I2C adapter)
[ 1216.338301] tc358840 6-001f: Device Tree Parameters:
[ 1216.338331] tc358840 6-001f: reset_gpio = 149
[ 1216.338369] tc358840 6-001f: interrupt = 425
[ 1216.338375] tc358840 6-001f: refclk_hz = 48000000
[ 1216.338382] tc358840 6-001f: ddc5v_delay = 50 ms
[ 1216.338388] tc358840 6-001f: enable_hdcp = 0
[ 1216.338394] tc358840 6-001f: csi_port = 1
[ 1216.338400] tc358840 6-001f: lineinitcnt = 4000
[ 1216.338406] tc358840 6-001f: lptxtimecnt = 4
[ 1216.338412] tc358840 6-001f: tclk_headercnt = 1573379
[ 1216.338419] tc358840 6-001f: tclk_trailcnt = 262149
[ 1216.338450] tc358840 6-001f: ths_headercnt = 851972
[ 1216.338456] tc358840 6-001f: twakeup = 16000
[ 1216.338476] tc358840 6-001f: tclk_postcnt = 10
[ 1216.338482] tc358840 6-001f: ths_trailcnt = 524294
[ 1216.338489] tc358840 6-001f: hstxvregcnt = 32
[ 1216.338496] tc358840 6-001f: pll_prd = 10
[ 1216.338502] tc358840 6-001f: pll_fbd = 125
[ 1216.338510] tc358840 6-001f: Releasing System Reset (gpio 0x0095)
[ 1216.338549] tc358840 6-001f: Chip found @ 7h1F (Tegra I2C adapter)
[ 1216.338930] tc358840 6-001f: TC358840 ChipID 0x47, Revision 0x00
[ 1216.341563] tc358840 6-001f: tc358840_sleep_mode(): disable
[ 1216.342494] tc358840 6-001f: tc358840_reset():
[ 1216.350366] tc358840 6-001f: tc358840_reset():
[ 1216.351405] tc358840 6-001f: tc358840_set_csi: Enabling CSI TX0
[ 1216.352902] tc358840 6-001f: tc358840_set_pll:
[ 1216.353254] tc358840 6-001f: tc358840_set_pll: Updating PLL clock of CSI TX0
[ 1216.367037] tc358840 6-001f: tc358840_set_csi: Disabling CSI TX1
[ 1216.376919] tc358840 6-001f: tc358840_reset_phy:
[ 1216.380461] tc358840 6-001f: tc358840_set_hdmi_hdcp: DUMMY disable
[ 1216.387173] tc358840 6-001f: tc358840_set_csi_mbus_config: YCbCr 422 16-bit
[ 1216.390041] tc358840 6-001f: tc358840_enable_interrupts: cable connected = 0
[ 1216.391618] tc358840 6-001f: tc358840_s_edid, pad 0, start block 0, blocks 2
[ 1216.391629] tc358840 6-001f: tc358840_disable_edid:
[ 1216.408217] tc358840 6-001f: tc358840xbg found @ 7h1F (Tegra I2C adapter)

After loading… there is still no /dev/video0 (or anything video*)

Ok, so far it looks good. Now we should check for the connection with the vi-ports.
Did you load the devconfig before you started building the kernel?

make tegra21_hdmi2csi_defconfig

Could you please grep in your dmesg also for tegra-vi2

Well… that seems to be getting me much farther!

I was following the guide from here: http://developer.ridgerun.com/wiki/index.php?title=Compiling_Tegra_X1_source_code

which said to use the tegra21_defconfig… and then did a make menuconfig from there… and I would simply add the module for the tc358840… and call it done. Apparently, that wasn’t enough.

Now I have the /dev/video devices, but am still unable to get any actual video.

When I try & capture something… (1080p60 on the 4k port) this is what I get:

root@tegra-ubuntu:~# gst-launch-1.0 v4l2src ! 'video/x-raw, width=1920, height=1080, framerate=60/1, format=UYVY' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1920, height=1080, framerate=60/1, format=I420' ! nvoverlaysink sync=false
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 0:00:00.146793593
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

grepping for tegra-vi2 gives me this:

ubuntu@tegra-ubuntu:~$ dmesg |grep tegra-vi2
[    4.486795] tegra-vi2 54080000.vi: No pixel parser for channel 2
[  243.518060] tegra-vi2 54080000.vi: For i=0
[  243.518074] tegra-vi2 54080000.vi: Mapping input 0 to channel 0
[  243.518086] tegra-vi2 54080000.vi: For i=1
[  243.518098] tegra-vi2 54080000.vi: Mapping input 1 to channel 1
[  243.518108] tegra-vi2 54080000.vi: For i=2
[  243.518119] tegra-vi2 54080000.vi: Mapping input 2 to channel 2

Ok, good to hear.

As far as I know, the video input ports are numbered differently on the Auvidea board, the 4k port should be video1, so try just to add the device at the beginning of your pipeline:

gst-launch-1.0 v4l2src device=/dev/video1 ! ...

With no device specified the default, video0 is used, which should be the Full HD port.

OH GEEZ!.. ignore my previous statement if you got it. Works excellently.

Any chance you can pull out the trifecta and tell me how to get audio as well? And 1 last question. Any chance you can give me a way to detect if there is input… and also what resolution is being supplied?

Hello , I am planning to buy J130 board that has one 2k and one 4k hdmi input . I would like to know if any of you here have tried the both input and if it works without any problem ,

Regards.

Sani1486… one port is 4k… the other is 1080… not 2k. I’ve had several issues relating to the j130… and the auvidea guys don’t seem to bother responding to tickets, emails, or pretty much anything. The video seems to work fine… but so-far… I have yet to be able to get any audio… and there are issues trying to get the fan to spin… and their provided firmware does not include any support for the tc358840 chips… so you MUST build the firmware yourself. I would love to use their board… as in-theory… it should do everything I needed… but reality is something different. Maybe someday … but not today. The biggest issue is that it seems that they are taking credit for the hdmi2csi driver… but haven’t invested (time/money/manpower) in customizing it for their own board.

There are some outstanding issues with the driver… mostly relating to the fact that it is VERY incomplete. It does not give you any feedback as to the resolution of the source. I have found many ways to get gstreamer to end up with zombie processes… as I don’t think many of the hooks for v4l are fully implemented. Documentation is pretty poor from what I have been able to find.

well good to get a feedback from a fellow customer. I’ve had the issues different from yours . My 4k port simply didn’t work the 1080 port worked. I had no issues with the fan . but i am having issues with UART ports . they are showing weird characters in the serial port like a “?” mark in the diamond . I don’t know if you had the same problems or had any work around to fix it . both of the UART doesn’t work . and i stopped asking them long ago