Getting started with NVIDIA Jetson TK1

I thought of writing a blog about my newly bought Jetson TK1 Development kit, Even though I bought it recently it is not a new product, It was there since May 2014,And now we have it’s latest model Jetson TX1 with 64bit processor architecture.The price was quite high for TX1 (~550$ ) where I could afford 2 TK1 boards easily with that price, So for the experimental purposes, I thought of going with TK1 for now.

Jetson TK1 board
Jetson TK1 Development board with Intel 7260HMW IEEE 802.11ac device attached to mini PCI-e port

I might quite late to this party, But better late than never.Because it has been more that 2 years since NVIDIA released the Jetson TK1 there are a lot and lots of blogs, Github, youtube and many other ways to find information about TK1 board.Hence I’m not going to repeat all those information here.But I will walk through the process of getting a Jetson TK1 today and flashing the latest Jetpack R21.5 and running your first python hello world application with IntelliJ idea remote debugging.

I will list down some useful link regarding Jetson TK1 below:

Flashing the emmc and installing Jetpack

This is also really easy that all you have to do is download the .run file from NVIDIA embedded download center and follow the instructions as given in NVIDIA docs, If it is still confusing and feel uncomfortable to go ahead you can watch this guide but it is for Jetpack 2.0, Still it is the same for the latest version.

For Jetson TK1 they only support Ubuntu 14.04 version but for TX1 it’s ubuntu 16.04LTS. I also felt bit confused and tried to get 16.04 install in TK1, But what I found was, Since there are no supported NVIDIA drivers and some other O/S structure has been changed from 14.04 to 16.04 it is not recommended to install 16.04 in TK1(yet), So even the 14.04 installation suggest me to upgrade to newer version I just keep it for later because of those comments. So better to stay with Ubuntu 14.04 until they release 16.04 for TK1.

Just after install

If all went well in the above step, now you have a fresh installation of Jetpack 2.3 (released on 2016/09/12), So what next ?, As we all used to do with fresh ubuntu installations next is to do apt-get.

I found below Gist from JetsonHacks tell all in one, Since it is almost a year old I  didn’t run the

and tried running apt-get update(not upgrade) and it doesn’t do any harm.Other than that,no change just followed the script.

Enabling USB 3 port

After that, I wanted to plug my WD 3TB HDD to TK1 and see whether it can handle external hard drives with that capacity Because I tried to plug it into my buffalo NAS Linkstation and it couldn’t handle portable HDDs more that 2TB of capacity.Jetson TK1 have one USB 3.0 port but it is not enabled as USB 3.0 until you change some configuration in /boot/extlinux/extlinux.conf and it was just a matter of changing usb_port_owner_info from 0 to 2.

WLAN wifi with Jetson TK1

There is a complete list of wireless devices which are incompatible with Jetson TK1 listed here, I had an Intel 7260HMW IEEE 802.11ac device already  attached to mini PCI-e port because of the generosity of the seller. So I tried to connect to my home wifi connection using the WIFI card(I haven’t tested the Bluetooth driver yet). It was not a solid and straight thing as I expect because there are some device driver issues with 7260HMW, With the fresh Ubuntu installation it doesn’t pick the Intel 7260HMW wireless card and It was simply one command to install the drivers.

After reboot , the wireless card was listed in the network connections menu,  But still, it couldn’t find my home wifi connection, tried sudo iwlist wlan0 scan several times and no luck there. So a couple of googling regarding the issue , I found that this was a common issue with theIntel 7260HMW card. Most of the suggestions were to try Grinch Kernel but I think this issue is still there with the Grinch Kernel(21.3.4) as well. Finally found this thread on NVIDIA forums and as by the suggestion by Santyago I did following changes and hopefully, it is working now(This intel forum thread also suggest some more tricks).

Try add:

options iwlwifi 11n_disable=1 power_level=5
into /etc/modprobe.d/iwlwifi.conf

IMG_20161103_205834

 

Other configuration changes which would make your life easier

Enable SSH using authorized keys

This is easy and even not specific to Jetson. open sshd_config sudo vim /etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

and uncomment the following line

AuthorizedKeysFile      %h/.ssh/authorized_keys

Then create a new file named authorized_keys inside .ssh directory in you home directory, and add the public key for SSH connection

finally, restart the SSH service by

sudo service ssh restart

And that’s it , Next time you login you wan’t ask for any passwords 🙂

Jetson Python remote debugging

So far we have flashed the emmc and installed jetpack and then update the OS install commonly used ubuntu packages and finally worked with the wireless card and get it work with Jetson. So let’s try to run a simple python hello world program in Jetson TK1 and importantly do some remote debugging and deployment using IntelliJ Idea.

I found this StackOverflow answer very useful when trying the remote debugging with python.So I’m quoting his answer here and I add some explanation to make it easy to follow the steps

To execute your code on remote machine you’ll have to perform few steps

Define a remote interpreter for your project

  1. Go to File -> Settings -> Project: {project_name} -> Project Interpreter.
  2. Click on cog icon and select Add Remote.
  3. Add your SSH host credentials and interpreter path (on remote machine).
  4. As a result, you should see new position in project interpreter dropdown selector, spelled like Python Version (ssh://[email protected]:port/path/to/interpreter). Package list should be populated with records.

Define deployment settings

  1. Go to File -> Settings -> Build, Execution, Deployment -> Deployment
  2. Create new deployment settings and fill ssh host configuration
    • Type: SFTP
    • SFTP host: same as interpreter host
    • Root path: path where files will be uploaded
  3. Click on button “Test SFTP connection” to check if provided data are correct.
  4. Go to mappings and configure mapping between local path and deployment path. Deployment path is relative to root path/ is equivalent to /my/root/path, /dir to /my/root/path/dir etc.

Deploy your code

  1. Select Tools -> Deployment -> Upload to {deployment settings name}
  2. Upload process will be started in background. Wait for upload to complete.

IMG_20161103_231540

Monitoring metrics temperature,CPU and GPU usages

We have already installed Ubuntu 14.04 LTS and for CPU and memory usages you can simply use Monitor application or top(if you are more into terminal) but not the GPU usage, There are some other interesting matrices which we can get information about the run-time environment of the TK1. I was interested in running NVIDIA samples and monitoring the GPU usage along with the temperature gauges. To monitor the GPU usage , there is a script(tegrastats) in the home directory of the Linux4Tegra ubuntu installation which shows the basic Memory, CPU, SWAP usages with some other terga specific parameters.

RAM 414/1892MB (lfb 266x4MB) cpu [0%,off,off,off]@1092 EMC 1%@600 AVP 0%@204 VDE 120 GR3D 0%@72 EDP limit 0

EMC – memory controller
AVP – audio/video processor
VDE – video decoder engine
GR3D – GPU

To see the load on the GPU you can use

But I’m not sure about the units used in the result.

To show the temperature data you can try 3 different ways as mentioned here (I prefer using lm-sensors )but the perl-tk GUI application doesn’t work for me.

  • sensor GUI tool is good if like GUI applications. otherwise, it takes considerable CPU usage for drawing colorful graphs, But still, it looks nice 🙂
  • You can simply read the system file to get the thermal data listed in the terminal (I guess all the other tools also using this file to get the data), This shows the temperature in celsius
  • Finally, my preferred way is use lm-sensors app, It shows all the temperature sensors data and shows the unit of measurement as well if you want you can configure to show in farunhite.

 

What next …

Motivation to buy this awesome device came from our university final year project(FYP), wich was about analyzing the human densities in an area using thermal imageries. I was looking for a device which I can continue the research project and also use with my other crazy ideas.Will discuss those ideas in the separate post. I will write some other post regarding using Jetson TK1 with FLIR Lepton camera module, how to analyze the data getting from Lepton and using image processing libraries and machine learning libraries.

Hope you find this article useful, If you have any comments or suggestions , Please mention them in the comment section below.

Thanks




Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">