Skip to main content Link Menu Expand (external link) Document Search Copy Copied

This document is made in reference to this README from D3 Engineering

Setting up the board

To connect the FPD-Link-III SerDes board to get camera input. We need the driver to be installed on our target. Before going ahead make sure the host is connected to the target (SSH) and the target is connected to the Internet.

set up ssh key

  • create a keypair ssh-keygen -t rsa -b 4096 -C 'ganindu@email.com' and save the key as ~.ssh/Jetson
  • Edit the ~/.ssh/config file

Host Jetson 
	# I'm using IPv6, note the double "%" before the interface name 
	Hostname fe80::b444:7974:e88:53f1%%enp0s31f6
	# Username for the Jetson board 
	User a
	IdentityFile ~/.ssh/Jetson
	StrictHostKeyChecking no
	# Not great practice but this is a dev board
	UserKnownHostsFile /dev/null

Then copy the newly minted ssh public key to the target
ssh-copy-id -i ~/.ssh/Jetson a@fe80::b444:7974:e88:53f1%enp0s31f6

Then you can test this by typing ssh Jetson from the host, this will now drop a shell to the target.

ssh_login_test

refer to this network topology section fore more about IPv6 setup, This can be done with IPv4 too. In that case you can omit the network interface name e.g. Hostname 192.168.55.1 and the copying is simply ssh-copy-id -i ~/.ssh/Jetson a@192.168.55.1

Also you can try the full name like this as well.

ssh a@fe80::b444:7974:e88:53f1%enp0s31f6 or simply ssh a@Jetson

setting up dependencies

install the following dependencies with the command (on the target)

make sure the target is now connected to internet as shown in the network topology above

sudo apt-get install ack build-essential cmake libexpat1-dev libgstreamer1.0-dev libgtk-3-dev libjpeg-dev libx11-dev mplayer pkg-config silversearcher-ag strace tree vlc

Set up Development Environment

This BSB uses automake configure. The configure script is generated by running the bootstrap script provided.

Move back to the Host

  • Clone submodules: git submodule update --recursive --init.
  • Generate the configure script: ./bootstrap.
  • Run the generated configure script with the correct options for your hardware. e.g. For the D3 16 port “2xOcto” camera interface, run:
 ./configure --with-system-type=xavier --with-dtb='build/deploy/boot/d3-xavier-2xocto.dtb' --with-target-host=Jetson --with-l4t=/home/ganindu/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra --with-username=a

Check the Table below for the values I’ve used (note: I have used a different username than nvida)

Option Value Meaning
–with-system-type Xavier System type
–with-dtb build/deploy/boot/d3-xavier-2xocto.dtb goto hardware/d3/Makefile for a list of dtb file names, the files will generate at ./build/kernel/arch/arm64/boot/dts/ during build
–with-target-host Jetson This is because of the ssh config we made earlier
–with-l4t /home/ganindu/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra Linux for Tegra (usually installed by the SDK manager at ~/nvidia/nvidia_sdk)
–with-username a you may choose your username but you’ll have to change some scripts down the line because at the time of writing the usename is assumed to be nvidia in some scripts which aren’t generated

Note: If you use a different username there are some scripts that run on the target (located in host scripts/target directory) with the default username nvidia baked in untouched by automake.

install OS support

Run this script only once because it creates a backup of the kernel present at the time. in the second time it may assign your updated kernel as the backup. If that’s a concern you can edit the script to not do that but all you may need is make sync (discussed in context below)

This will

* Update and install dependencies, install helper packages such as "rsync" 
* update `/etc/sudoers` temporarily to enable sudo invocations from host.
* turn off screen-lock
* copy helper scripts to ~/@username@/debug 

Build the Kernel and install the device tree

Step 0:
  Configure the kernel using the make linux-defconfig *this is the D3 default config supported by the D3 mainstream L4T, if you want to use a new L4T('added a non D3 standard L4T') and use D3 features you may have to tweak kernel parameters* either by editing the provided defconfig or using `make linux-menuconfig`.

Other steps:

  • Build Kernel and device tree files: make -j8 for verbose use KBUILD_VERBOSE=1.
    you can check the build ID with, make show-config

  • make-sync to sync to target and “flash” the kernel.

for instructions on recovery please check the source document.