Getting started with Tegra K1 in 2021

TLDR: Don’t get a TK1 in 2021. TX1 and higher support TensorRT so may be more interesting. This post is a repost from Medium.

I consider myself somewhat of an IoT enthusiast, since I work professionally on the north-side (cloud) and play around with a lot of microprocessor boards (like RPis) and some microcontroller boards like NodeMCU, Onion etc. as a hobby. I generally get great support documentation and software from big brands and foundations, while even OEMs with smaller scale like Onion manage to do a decent job. Until I got NVIDIA TK1. This board is just annoying. Most old links are invalid, though you can piece things together after a small headache. I managed to understand what works and what not after some experimentation, the limitations in the hardware combined with barely supported software, means that even if you can get it to work, perhaps avoid the Tegra lineup altogether unless you’re 100% sure that you’ll only need CUDA support.

Here is what you need in 2021 if you want to flash this board with the latest possible CUDA and L4T image.

  1. Official Resource:
  2. Great Overall Resource:
  3. JetPack 3.1: (Installing this on Ubuntu 14.04 dramatically eases the deployment. Check out here and search for 3.1 to get it.)

The device supports Ubuntu 14.04 as the last official ubuntu release for L4T, which has been phased out since 2019. This also means that you miss out on lot of advantages of the new linux kernel, while the device also has no official support for CUDA 7 and above, and hence recent CUDA programs wont work on it anyway.

If in any case you feel the need to reflash your TK1, the process requires you to setup Ubuntu 14.04 with the correct L4T image. I’ve attached a link of an OS image that you can use for the same.

Guest OS Credentials: prakhar: prakharshukla

One interesting bug I found was that after flashing TK1, it simply wont boot. After searching some forums, this turned out to be the difference between how Ubuntu 14.04 was handling the scripts is different from subsequent versions and hence it is easier to flash OS from it, rather than to modify the existing scripts to support a newer host OS. The error was very hard to observe though, as it scrolls too fast and I could only debug it using video capture of the boot and review it log by log.

P.S. the USB 3.0 is not enabled by default, has to be enabled manually. Check out this.

After all the experimentation I could do with this board, the limitations from the hardware & drivers make it seem a very bad starting point for GPGPU developer board. Primary points:

  1. Lack of OpenCL support.
  2. No recent CUDA support (even though SM3.2 hardware support is there?)
  3. Lack of good SDKs to handle video enc/dec and other options.

After some more exploration I found this amazing guy who had pushed a wheel package for tensorflow 0.8.

In future, I’ll try to get some better projects working on this.