---
# System prepended metadata

title: Jetson Nano Deployment and Used As Linux PC
tags: [HomeLab / SelfHost & Linux OS]

---

# Jetson Nano Deployment and Used As Linux PC

*In this note, I will record my experience using both Jetson Nano 2G and Jetson Nano 4G. In my use case, Jetson Nano 2G is used as a headless system for developing and testing. On the other hand, I decide to use Jetson Nano 4G as a normal Linux system that will be used to help developing Linux Driver or any low level programming that require me to use a physically accessable native Linux system \(All my Linux Systems are server room which is far from where I live\)*

# Hardware and Environment Settings

It's quite easy to use when it comes to Jetson Nano since there are already many tutorials on the internet. Therefore I will not include anything that is considered basic.

## Hardware

* A Jetson Nano 2G which is already discontinued.
* A Jetson Nano 4G and AI Robot Kits \(https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/\)

:::info
:information_source: **Powering Jetson Nanos**

For **Jetson Nano 2G**, using a usb type-C power supply that can be easily found. Basically, any phone charger that can support PD and fast charging can be used.

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit#intro

For **Jetson Nano 4G**, there are three ways to power the system. 
* **Micro-USB** \: Can only run 5W mode stablely.
* **DC Power Adapter** \: Can run normally and used by most people.
* **GPIO Pins** \: Can provide Up to 6A and delivered the most current to the board. \(https://forums.developer.nvidia.com/t/can-i-power-jetson-nano-through-the-40-pin-gpio-header/75379\)

https://shop.playrobot.com/products/nv-ups
Using UPS for Jetson Nano will automatically use the third option which provide power through GPIO.
:::

## Hardware Acceloration Chromium

### Reddit Discussion

https://www.reddit.com/r/JetsonNano/comments/q455yk/comment/hi4h6oe/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

### Chromium accelerated decoding for Jetson

https://developer.ridgerun.com/wiki/index.php?title=Chromium_accelerated_decoding_for_Jetson

## Disable \/ Enable GUI

> Reference \:
> https://cyb.tw/docs/Tech/2020/9/19_Disable-GUI-on-Jetson-Nano-while-training.html#disable-gui-while-traning

*A bash script can be created for convenience.*

:::info
:information_source: **what are init 0 init 1 init 2 init 3 init 4 init 5 init 6?**

https://linuxonfire.wordpress.com/2012/10/19/what-are-init-0-init-1-init-2-init-3-init-4-init-5-init-6-2/
:::

## SD Card for Jetson Nano

> Reference \:
> * A Guide to Speed Classes for SD and microSD Cards
> https://www.kingston.com/en/blog/personal-storage/memory-card-speed-classes
> * Fastest Micro SD Card for Nano
> https://forums.developer.nvidia.com/t/fastest-micro-sd-card-for-nano/109280

Currently, all my system is running on a Gigastone A1 64GB SD card. However, since I want Jetson Nano to act as a Linux PC rather than a dev board, I think having a bigger system disk might be the way to go.

## USB 3.0 SSD as Root Drive

> Reference \: 
> * Jetson Nano - Run On USB Drive \(deprecated\)
> https://www.youtube.com/watch?v=7O7pUtQD9HI
> * A Better Solution
> https://youtu.be/J9EJ52Za7IE
> * Even Better Boot without SD Card
> https://youtu.be/53rRMr1IpWs

For long term usage, this might be the best way to do it. By refering to the above tutorial, we can see that we still need the sd card to boot the system.

Apparently, there is ways to boot directly from USB Drive without a SD card. However, this require a newer version of Jetpack. 

[Tutorial](https://syslogine.cloud/docs/iot/hardware/jetson/set-up-ssd/)

## OS Limitations

The Jetson Nano is limited to Ubuntu 18.04, which is very old OS version if I want to use it as a PC. However, Nvidia has no intension to make Jetson Nano support any newer version of the Ubuntu system no matter what Jetpack version they release. It's obvious that Jetson Nano is going EOL \(Current date \: 2024\/12\/30\).

## Community Ubuntu 20.04 Image for Jetson Nano

> Reference \:
> * Github Repo
> https://github.com/Qengineering/Jetson-Nano-Ubuntu-20-image

Please note that using `balenaEtcher` fail to write the image correctly into the sd card. However as [the issue](https://github.com/Qengineering/Jetson-Nano-image/issues/17#issuecomment-1782452802) suggested, using [pi imager](https://www.raspberrypi.com/software/) can work.

Notice that add a new `sudo` user is recommanded. Please follow [this](https://www.digitalocean.com/community/tutorials/how-to-create-a-new-sudo-enabled-user-on-ubuntu) link for detail.

## Launching of Jetson Orin Nano Super

> Reference \: 
> * Introducing NVIDIA Jetson Orin™ Nano Super: The World’s Most Affordable Generative AI Computer
> https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/nano-super-developer-kit/

Notice that Jetson Orin Nano Super was launched in 12\/17\/2024. This dev board is better than Jetson Orin Nano and cheaper. However, I haven't aquire one and wanted to wait for lower price and Jetson Nano should be tested if it can fit the job alright.

## Jetson Nano VNC

### Setup VNC

To use VNC, please follow the [Official Tutorial](https://developer.nvidia.com/embedded/learn/tutorials/vnc-setup). Notice that if we want VNC without firstly connect to a screen and keyboard, auto login should be `on` for the user. 

### Use TightVNC

https://forums.developer.nvidia.com/t/vino-vnc-terribly-slow/160747/11

Apparently, what VNC viewer used will post impact on the performance and the quality of a remote session. Additionally, I will check the 256 color box for even better performance.

### Use UltraVNC

https://uvnc.com/

UltraVNC might be the best performer out of all the option that I tested. \(01\/12\/2025\) The performance option is suprisingly good. Notice that in order to get the most out of the VNC, testing on different transfer protocol is recommended.

:::success
VNC port `5900`
:::

### Issue with VNC with Ubuntu 20.04

> Github Issue \: 
> https://github.com/Qengineering/Jetson-Nano-Ubuntu-20-image/issues/71#issuecomment-1985385495

I experienced the same issue.

It seems that connected a screen to the Jetson Nano could make this work. This is far from ideal; however solvable. Simply buy a HDMI dummy can help resolve the issue and still can work **like** a headless server. \(Notice that it only like a headless server since a screen, athoulgh being a dummy, is connected to the board\)

## Jetson Fan Control

> Reference \:
> * jetson-fan-ctl
> https://github.com/Pyrestone/jetson-fan-ctl

## Jetson UPS-Power-Module by Waveshare

> Reference \:
> * UPS Power Module
> https://github.com/waveshare/UPS-Power-Module

This module might not work on the community Ubuntu 20.04 version that I use in the final setup.

One solution is after installation, run the following python command to involke the display on the UPS Module.

```bash
sudo python3 -m ups_display.create_display_service
```

## Understand `zRAM`

> Reference \:
> * 使用 zRAM 代替 Swap
> https://blog.fernvenue.com/zh/archives/using-zram-instead-of-swap/
> * Wiki
> https://zh.wikipedia.org/zh-tw/Zram



# Jetson Nano 4G Current Hardware Setup \(01/16/2025\)

![](https://hackmd.io/_uploads/HkXX2GUwke.jpg)

## Not Using boot from USB

Since the current case I have is the combination and modification of what I have. The jetbot kit provide a fine case for the UPS. I did not have a 3D printer to print a case that can fit both the dev-kit of jetson nano and the UPS. Therefore, adding a SSD via USB cable simply make the build less compact.

## Using Ubuntu 20.04

Although using Ubuntu 20.04 on Jetson Nano is not officially supported. I notice that if I want to use Jetson Nano as a Linux PC, having newer OS support might be the most important thing. Additionally, this image is built-in with many tools that is useful for me.

## Using 256G SD Card

[The model](https://24h.pchome.com.tw/prod/DGAG52-A900FUHFO?fq=/S/DGAGDU) I use. It is fast enough for me.

### Disk Bechmark Result

![image](https://hackmd.io/_uploads/HJ2b5-pwJl.png)

The result looks pretty good for me.

## Add a HDMI Dummy

A [HDMI dummy](https://tw.shp.ee/72RuyWv) is added to make VNC possible for Ubuntu 20.04 community build. Not sure if it will be changed or fixed in the future but this kind of dummy is cheap and the entire Jetson Nano with UPS still pretty protable and kind of headless.

## Add a Power Button

In [this picture](https://wiki.52pi.com/index.php?title=File:Ywdtmwk_11.jpg), we can see that a button can be attached to the carrier board. Notice that a jumper should be applied to disable auto on.

![jetson_power_button](https://hackmd.io/_uploads/HyPPEPutJe.jpg)

## Add Wifi Card

A Wifi Card can be add to Jetson Nano 4G with M.2 Key E provided by the carrier board. I use [Intel® Dual Band Wireless-AC 8265](https://www.intel.com/content/www/us/en/products/sku/94150/intel-dual-band-wirelessac-8265/specifications.html). The following is the output of `lspci`

```bash
00:01.0 PCI bridge: NVIDIA Corporation Device 0fae (rev a1)
00:02.0 PCI bridge: NVIDIA Corporation Device 0faf (rev a1)
01:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
```

# Jetson Nano 2G

Please refer to the following post.
https://hackmd.io/@Erebustsai/SJPwQzOvh

Basically, unlike 4G version, this board is already EOL for quite some time. Therefore, I decide to run this to hold most of the services that can be accessed by my family. My server room is isolated from my family, which are having little knowledge about computers for many different reasons. 
