Thanks to the tremendous success of inexpensive computing devices such as the Arduino and Raspberry Pi, big companies have started to seriously pay attention to the growing embedded developer and Internet of Things (IoT) hobbyist market. One of these companies is Nvidia, best known for its powerful graphics cards. Over the past few years, Nvidia has branched out to broader computing platforms including the Shield, their handheld Android gaming device, and now the Tegra-based Jetson TK1 development board. This article examines the lastes release of TK1 and explores the aspects that will most appeal to developers and small-system hackers.
The Nvidia Jetson TK1 (that is, Tegra K1) packs plenty of I/O ports on a 5x5-inch board surface. In addition to the expected serial, USB, Ethernet, and JTAG ports, it also sports full-size HDMI, SD/MMC, mini-PCIe, SATA, audio (line out and mic in), and a 125-pin expansion port. This expansion port can be used to drive peripherals, such as cameras, LCD panels, and touch screens.
The brains of the operation is Nvidia's Tegra K1 processor. This CPU+GPU+ISP single chip contains Nvidia's 192-core Kepler GK20a GPU, which is capable of delivering over 300 gigaflops. The Tegra K1 also packs Nvidia's custom 4-Plus-1 2.33GHz ARM quad-core Cortex A15 CPU. To keep such a hot processor cool, a fan heatsink on top of the Tegra K1 processor spins at an intense but relatively quiet RPM.
The board also includes 2GB of DDR3L 933MHz DRAM plus 16GB of fast eMMC soldered-on storage. This impressive amount of technology packed into such a small package makes the Jetson TK1 one of the fastest and most economical embedded hardware development boards I've used so far.
Figure 1: The Jetson TK1 development board comes loaded with a variety of I/O interfaces.
As a result of such a powerful chip and a board design capable of powering external storage and USB devices, the Jetson TK1 uses a 12V DC brick. Conspicuously absent is on-board WiFi or Bluetooth. While these can be added via USB or the mini-PCIe port, the omission is certainly an annoyance in an otherwise notably comprehensive design. This is especially disconcerting because the board advertises itself as ideal for Internet of Things (IoT) development. The board is also a reference design of sorts, and with the lack of a standardized wireless stack, it makes the addition of these wireless technologies a pain to deal with. I'll come back to that aspect later in the review.
Figure 2: Jetson TK1 plugged in and powered on.
One other oddity with the R19.3 kernel release I tested was that the USB 3.0 port was not USB 3.0-enabled by default. This may be due to Nvidia being hesitant to commit to unshakable USB 3.0 data transfer speeds or for compatibility reasons. Regardless, USB 3.0 can be enabled by modifying the
odmdata settings in the jetson-tk1.conf file, then building and reflashing the system (a Linux-centric task taking half an hour or more to complete).
Nvidia provides the Tegra Linux Driver Package, which supports the Linux 3.10.24 kernel, and offers a sample file system freely available for download from the company's developer website. This provides a configured ARM-based Ubuntu 14.04 instance with all the required device drivers already compiled into the kernel.
However, to keep the file system slim, Nvidia removed many of Ubuntu's other drivers, which are typically used for auto-detecting and auto-configuring devices. These include such things as WiFi and Bluetooth dongles. So in the case of my AirLink Ultra Mini-USB WiFi adapter that works just fine on my Raspberry Pi, Jetson TK1's Ubuntu kernel sees and properly identifies the device via
lsusb, but doesn't have the drivers built-in to support the device. That means I have to locate and compile these drivers myself. Ugh! Why couldn't Nvidia just add a few dollars to the overall bill-of-materials for the board and save me the hassle of WiFi-enabling the board?