The Jetson Nano Developer kit – B01 is a small computer comprising of an NVIDA Maxwell GPU, Quad-Core ARM Cortex-A57 Processor and 4GB of Memory along with four USB 3 ports, Gigabit Ethernet, HDMI and Display Port output, main storage is on a MicroSD card and there is a variety of selection of expansion available via GPIO, I2C and UART. On the software side NVIDIA provide their JetPack SDK – a customised version of Ubuntu. This development kit has been produced to provide an entry point into Machine Learning, for which I will be using Python programming language. I got my board from Pimoroni

GPU | 128-core Maxwell |
CPU | Quad-core ARM A57 @ 1.43 GHz |
Memory | 4 GB 64-bit LPDDR4 25.6 GB/s |
Storage | microSD (not included) |
Video Encode | 4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30 (H.264/H.265) |
Video Decode | 4K @ 60 | 2x 4K @ 30 | 8x 1080p @ 30 | 18x 720p @ 30 (H.264/H.265) |
Camera | 2x MIPI CSI-2 DPHY lanes |
Connectivity | Gigabit Ethernet, M.2 Key E |
Display | HDMI and display port |
USB | 4x USB 3.0, USB 2.0 Micro-B |
Others | GPIO, I2C, I2S, SPI, UART |
Mechanical | 69 mm x 45 mm, 260-pin edge connector |
These notes cover my process of setting one up and links to the documentation, it not intended to repeat those install guides but to provide an install sequence and any additional commentary as needed. I’m going to assume you have a little experience of using the terminal and am familiar with using the bash command line – I’ve no idea how this would be done through the GUI.

Initial Startup
I followed the instructions for downloading and installing JetPack 4.4 on https://nvidia.com/jetsonnano-start I used a 64GB Class 10, UHS-I, U3, V30 SanDisk card. I formatted the card in a camera before using balenaEtcher to write the JetPack SDK image, this creates a partition of about 16GB on the card formatted to ext4, during installation the volume is resized to fill the card.
Despite using a good quality USB power supply with an output of 3 Amps at 5 Volts into the Micro USB port the computer would only boot long enough for the NVIDIA logo to appear on screen but after a few seconds the green power LED would go out and it would be off, the same happened when I tried a variety of USB power supplies used. I got round the problem buy using a 5 Amp power supply connected to the barrel jack J25 on the left (centre pin positive) and connecting the jumper J48 located just behind this connector.
Customising the Setup
There are a couple of thigs to do, get a network volume mounted and set the default version of python.
For the network share install samba, some network utilities and the nano text editor:
1 |
$ sudo apt install samba cifs-utils nano |
create a text file: sudo nano /etc/samaba/videoserver with the following:
1 2 |
username=<your network username> password=<your network password> |
And set the permissions sudo chmod 600 /etc/samba/videoserver. In this example I have a network share on my server; 192.168.1.30, called video. Create a mount point for the share: sudo mkdir /mnt/video now you need to edit fstab, sudo nano /etc/fstab and add your network connection to the end:
1 |
//192.168.1.30/video /mnt/video cifs credentials=/etc/samba/videoserver,noauto,x-systemd.automount,_netdev,uid=0,vers=1.0 0 0 |
Reload fstab with sudo mount -a and check for any errors. Because of the way that Jetpack boots it does not appear to wait for the network so the share needs to be set to automount and this causes it to only appear in drive listings when accessed. Further reading can be found in this excellent guide to fstab: https://wiki.archlinux.org/index.php/fstab.
Jetpack 4.4 comes with two versions of Python, 2.7 and 3.6, I want it to default to 3.6 and while this is rather out of date I don’t want to go down the hole of upgrading just yet, you will also need to install pip and set pip3 as the default too.
1 2 3 4 5 |
$ sudo apt install python3-pip $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1 $ sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3.6 1 $ sudo update-alternatives --set python /usr/bin/python3.6 $ sudo update-alternatives --set pip /usr/bin/pip3.6 |
and test its worked:
1 2 3 4 5 |
$ python Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> |
1 2 |
$ pip --version pip 20.2.3 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6) |
I did get an error later on, a crash was reported on the desktop when an occasional python 2 script ran. I fixed the error in /usr/sbin/l4t_payload_updater_t210 by changing the first line of the file from !#/user/bin/python to !#/user/bin/python2
Post Install Problems
A recent update occured, so I did the usual sudo apt get update && sudo apt get upgrade but one of the files gave a script error, this turned out to be with nvidia-l4t-bootloader, like so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ sudo apt install nvidia-l4t-bootloader Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed nvidia-l4t-bootloader 0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade. Need to get 1,870 kB of archives. After this operation, 8,251 kB of additional disk space will be used. Get:1 https://repo.download.nvidia.com/jetson/t210 r32.4/main arm64 nvidia-l4t-bootloader arm64 32.4.3-20200924161615 [1,870 kB] Fetched 1,870 kB in 3s (692 kB/s) Selecting previously unselected package nvidia-l4t-bootloader. (Reading database ... 165354 files and directories currently installed.) Preparing to unpack .../nvidia-l4t-bootloader_32.4.3-20200924161615_arm64.deb ... Unpacking nvidia-l4t-bootloader (32.4.3-20200924161615) ... Setting up nvidia-l4t-bootloader (32.4.3-20200924161615) ... 3448-300---1--jetson-nano-qspi-sd-mmcblk0p1 Starting bootloader post-install procedure. ERROR. Procedure for bootloader update FAILED. Cannot install package. Exiting... dpkg: error processing package nvidia-l4t-bootloader (--configure): installed nvidia-l4t-bootloader package post-installation script subprocess returned error exit status 1 Errors were encountered while processing: nvidia-l4t-bootloader E: Sub-process /usr/bin/dpkg returned an error code (1) |
after some head scratching, it turns out this script is python2 only. I reverted back to the python 2.7 as the default, and tried again:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode $ sudo update-alternatives --set python /usr/bin/python2.7 $ sudo apt remove nvidia-l4t-bootloader Reading package lists... Done Building dependency tree Reading state information... Done Package 'nvidia-l4t-bootloader' is not installed, so not removed 0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade. $ sudo apt install nvidia-l4t-bootloader Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed nvidia-l4t-bootloader 0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade. Need to get 0 B/1,870 kB of archives. After this operation, 8,251 kB of additional disk space will be used. Selecting previously unselected package nvidia-l4t-bootloader. (Reading database ... 165354 files and directories currently installed.) Preparing to unpack .../nvidia-l4t-bootloader_32.4.3-20200924161615_arm64.deb ... Unpacking nvidia-l4t-bootloader (32.4.3-20200924161615) ... Setting up nvidia-l4t-bootloader (32.4.3-20200924161615) ... 3448-300---1--jetson-nano-qspi-sd-mmcblk0p1 Starting bootloader post-install procedure. Update bootloader completed. Reboot the target system for changes to take effect. Updating extlinux.conf... Root device is set in the extlinux.conf |
Afterwards I set the default back to python 3.6 again.
Setup the Machine Learning
There are three Machine Learning packages, OpenCV for Computer Vison, Tensorflow for machine learning models, and TensorRT – accelerated deep learning networks for image recognition.
OpenCV is already installed in Python:
1 2 3 |
>>> import cv2 >>> print (cv2.__version__) 4.1.1 |
Tensorflow installation can be found here: https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/ I found this to be straight forward but it did keep the computer busy for a while.
1 2 3 4 |
>>> import tensorflow 2020-10-08 11:34:55.934735: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.2 >>> print (tensorflow.__version__) 2.3.0 |
TensorRT can be found at: https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md I used the instructions in the Quick Reference section and installed the default models without any errors, I have not yet had the opportunity to test it.
Further Reading
- A wiki can be found at: https://elinux.org/Jetson_Nano
- NVIDIA Developer Forums: https://forums.developer.nvidia.com/c/agx-autonomous-machines/jetson-embedded-systems/70