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
- 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
- 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
- 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>
- 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
- Apply binaries
#sudo is important here
sudo ./apply_binaries.sh
- 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.
- 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).
- Run
lsusb
on your flashing computer and make sure you see some kind of NVIDIA device - 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
-
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. -
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. -
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.
My God, it worked first time with no hiccups! :)
(however I did miss out the usb 3.0 setting, possible to change post-flashing?)