Skip to content

Instantly share code, notes, and snippets.

@jetsonhacks
Forked from tstellanova/jetson_kernel_install.md
Last active January 14, 2023 18:37
Show Gist options
  • Save jetsonhacks/928d84f159e1c7c2eacb to your computer and use it in GitHub Desktop.
Save jetsonhacks/928d84f159e1c7c2eacb to your computer and use it in GitHub Desktop.
Install Grinch Linux4Tegra (L4T) version 19.3.6 for NVIDIA Jetson TK1

For this process you will need:

  • A host desktop or laptop computer running Ubuntu Linux 12.04. This may be a VM, I've used VirtualBox.
  • Micro USB cable provided with the Jetson TK1 kit
  • Jetson TK1 and power supply
  • Optional: DB9 null modem cable if you want to use the serial console during boot
  1. On your host computer open a Terminal, then create a directory to operate from, and switch to it. As an example:
mkdir ~/Grinch
cd ~/Grinch
  1. Download NVIDIA Linux4Tegra (L4T) Board Support Package (BSP) and Sample Root Filesystem from NVIDIA

wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra124_Linux_R19.3.0_armhf.tbz2
wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2
  1. Extract NVIDIA files (BSP and rootfs)

tar -xvf Tegra124_Linux_R19.3.0_armhf.tbz2
cd Linux_for_Tegra/rootfs
sudo tar xpf <path_to>/Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2
# E.G. ~/Grinch for <path_to>
  1. Grab Grinch custom kernel files

cd ..
wget http://www.jarzebski.pl/files/jetsontk1/grinch-19.3.6/zImage -O kernel/zImage
wget http://www.jarzebski.pl/files/jetsontk1/grinch-19.3.6/kernel_supplements.tbz2 -O kernel/kernel_supplements.tbz2
wget http://www.jarzebski.pl/files/jetsontk1/grinch-19.3.6/tegra124-pm375.dtb -O kernel/dtb/tegra124-pm375.dtb
  1. Apply binaries
#sudo is important here
sudo ./apply_binaries.sh
  1. Enable support for USB 3.0 (OPTIONAL) According to the L4T R19.2 Release Notes, you should modify the odmdata settings in "jetson-tk1.conf" (located in the top directory) to enable USB 3.0:

#USB 2.0 operation on USB2 port(J1C2 connector)/for use as root device use ODMDATA=0x6009C000;
#USB 3.0 operation on USB2 port(J1C2 connector) use ODMDATA=0x6209C000, requires firmware load from userspace or initial ramdisk
ODMDATA=0x6209C000;

make sure to save the file.

  1. Connect the Jetston TK1 to the flashing Linux computer via the micro-usb cable, and place the Jetson TK1 into recovery mode (by holding down the hardware Recovery button on the board and either pushing the Reset button if power is already plugged in, or plug in power for the first time).
  2. Run lsusb on your flashing computer and make sure you see some kind of NVIDIA device
  3. Flash the entire board from flashing computer command line (this will take some time to build the image and then download everything via usb)

sudo ./flash.sh -S 14580MiB jetson-tk1 mmcblk0p1

If you get an error loop device failed, edit flash.sh on your flashing computer to replace this line:

losetup /dev/loop0 system.img > /dev/null 2>&1

with this line:

losetup --find --show system.img
  1. You should eventually see Reset the board to boot from internal eMMC. on the host computer. At that point, press the Reset button on the Jetson board or power cycle it.

  2. You should boot messages scroll by on a monitor connected to the Jetson. Optionally, you can connect to your Jetson using the DB9 null modem cable and screen /dev/cu.usbserial-A602FDXV 115200 8N1 on the host computer and verify that boot messages scroll by after reset.

  3. Default login is user ubuntu, password ubuntu. You can sudo su to change to root user if necessary.

Note: if you just want to flash the kernel (this should be fast):


sudo ./flash.sh -k 6 jetson-tk1 mmcblk0p1

You should be good to go at this point.

@benb0jangles
Copy link

My God, it worked first time with no hiccups! :)
(however I did miss out the usb 3.0 setting, possible to change post-flashing?)

@Iancaster
Copy link

Also works with the host running Arch. Ubuntu unnecessary. Nifty.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment