TC358743 on Jetson Nano

Based on the files and descriptions you provided in the following link in GitHub Gist, I was trying to do a procedure to install the TC358743 HDMI to CSI-2 Bridge hardware driver in Jetson Nano. And I proceeded according to the procedure that I will explain below. But in the end the driver is still not recognizable by Jetson Nano! (There is no video0 in the dev list)

GitHub Gist Link:

The routine I did:

  1. Download Linux L4T Kernel (for jetson nano) source code from
    (Which is mentioned in the

  2. Replace all the files mentioned in the with the files in the kernel source (in kernel source)

  3. The following lines were uncommented in tegra210-porg-p3448-common.dtsi (in kernel source)
    #include “porg-platforms/tegra210-porg-camera-rbpcv2-imx219.dtsi”
    #include “porg-platforms/tegra210-porg-camera-rbpcv2-dual-imx219.dtsi”
    #include “porg-plugin-manager/tegra210-porg-plugin-manager.dtsi”

  4. Insert following line to tegra210-p3448-0000-p3449-0000-a02.dts (in kernel source)
    #include “tegra210-tc358743.dtsi”

  5. Build and Compile the kernel source based on routine mentioned in and

  6. After the above steps, copy and replace the generated image from step 5 to current linux boot directory.

  7. Reboot jetson nano

Hardware & Software Details:
Kernel: L4T 32.4.2 [ JetPack 4.4 DP ]
OS: Ubuntu 18.04.4 LTS
Kernel Version: 4.9.140
Developer Kit Model: P3450
Embedded System model: Jetson Nano

Can you help me?

Have a confirm if the kernel Image and dtb was update correctly.

uname -a
check the build time to confirm.

dmesg | grep -i kernel
check the dtb file was build by your device.

The output you mentioned is as follows

jetson@jetson-desktop:~ uname -a*** ***Linux jetson-desktop 4.9.140 #4 SMP PREEMPT Sun Aug 16 04:13:26 EDT 2020 aarch64 aarch64 aarch64 GNU/Linux*** ***jetson@jetson-desktop:~ dmesg | grep -i kernel
[ 0.000000] Kernel command line: tegraid= ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,2 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1125 core_edp_ma=4000 tegra_fbmem=0x800000@0x92cb4000 is_hdmi_initialised=1 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 quiet
[ 0.000000] Memory: 3562036K/4159488K available (15294K kernel code, 2916K rwdata, 6804K rodata, 8512K init, 611K bss, 122316K reserved, 475136K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.001845] kmemleak: Kernel memory leak detector disabled
[ 0.212136] DTS File Name: /dvs/git/dirty/git-master_linux/kernel/kernel-4.9/arch/arm64/boot/dts/…/…/…/…/…/…/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts
[ 0.325280] alternatives: patching kernel code
[ 0.420542] DTS File Name: /dvs/git/dirty/git-master_linux/kernel/kernel-4.9/arch/arm64/boot/dts/…/…/…/…/…/…/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts
[ 0.559286] eventlib_kernel: keventlib is initialized, test id: 0
[ 1.331906] KERNEL: PMC reset status reg: 0x0
[ 1.402327] Freeing unused kernel memory: 8512K
[ 2.460518] systemd[1]: Listening on udev Kernel Socket.

The point is that I added the #include “tegra210-tc358743.dtsi” to the tegra210-p3448-0000-p3449-0000-a02.dts file, but there is another file (tegra210-p3448-0000-p3449-0000-b00.dts) in the output of dmesg. Do I have to add it to the tegra210-p3448-0000-p3449-0000-b00.dts and recompile?

How to update device tree ?

For the dtb you need to replace the tegra210-p3448-0000-p3449-0000-a02.dtb file at Linux_for_Tegra/kernel/dtb/ the issue below command to update the dtb file.

sudo ./flash -k DTB jetson-nano-xxxx mmcblk0p1

And just replace the Image at /boot/Image to update the customize kernel Image.

Where is the dtb file generated after editing tegra210-p3448-0000-p3449-0000-a02.dts?

what direction should this command (sudo ./flash -k DTB jetson-nano-xxxx mmcblk0p1) be executed?
I do not have access to Flash script. Where is it?

I am new to jetson nano & linux kernel compiling
If possible, describe the case in full detail, or if you have a tested and complete procedure, let me know.

Have a check the document for building the customize kernel.

the was download by the sdkmanager

In step 4 in Building the NVIDIA Kernel in

when execute make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j8 in Terminal (in non-jetson system for cross compiling with linaro toolchain), it asks me a lot of questions about taking advantage of the various possibilities for compilation process.

Link-Time Optimization (LTO) (EXPERIMENTAL)
Allwinner sunxi 64-bit SoC Family (ARCH_SUNXI) [N/y/?] (NEW) y
Annapurna Labs Alpine platform (ARCH_ALPINE) [N/y/?] (NEW) y
Broadcom BCM2835 family (ARCH_BCM2835) [N/y/?] (NEW) y
Broadcom iProc SoC Family (ARCH_BCM_IPROC) [N/y/?] (NEW) y
Marvell Berlin SoC Family (ARCH_BERLIN) [N/y/?] (NEW)

You know what I have to do?

Have below command make the configure first.
make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig

By the way you need to build the kernel in x86 host.

Which of the following should I choose to execute the sudo ./flash -k DTB jetson-nano-xxxx mmcblk0p1 command?

jetson-nano-xxxx :
jetson-nano-devkit.conf jetson-nano-qspi.conf
jetson-nano-devkit-emmc.conf jetson-nano-qspi-sd.conf

It could be jetson-nano-devkit or jetson-nano-qspi