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).
lsusbon 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 8N1on the host computer and verify that boot messages scroll by after reset.
Default login is user ubuntu, password ubuntu. You can
sudo suto 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?)