Install OctoPrint on a Jetson Nano

A fundamental add-on to a 3D Printer is the possibility to control the printer remotely, and send prints directly from a pc or notebook. This add-on provides at its core the following functionality, but not limited to:

  • Get constant feedback of the current print job progress.
  • Get feedback on the current bed and nozzle temperature.
  • Start, pause and stop print jobs remotely.
  • Configure key parameters.
  • etc.

This requires a print server , with a printing server software. We created this step-by-step guide with screenshots, to guide you through the installation of OctoPrint on a Jetson Nano.

The Setup

The setup of the system considers a print server connected via USB to the 3d printer. The print server is connected via an ethernet cable to a wifi router (the connection can also be a wireless link). Finally the computer connects to the router via wireless link to the network (the connection can also be via ethernet). The figure below presents the described setup.

Fig. 1: Print server setup (in operation).

Before the system is up and running we require to connect the workstation directly via USB to the print server to set up the software and configure the system.

Fig. 2: Print server setup (installation).

The Print Server

Here we are using a Jetson Nano 2GB as print server. The Jetson Nano is a small computer for embedded applications, which provides the capability to carry out artificial intelligence tasks. The module costs around 100 USD and is provided by Nvidia.

The table below presents the salient features of this device.

GPU128-core NVIDIA Maxwell
CPUQuad-core ARM A57 @ 1.43 GHz
Memory2 GB 64-bit LPDDR4 25.6 GB/s
ConnectivityGigabit Ethernet
Camera1x MIPI CSI-2 connector
USB1x USB 3.0 Type A,2x USB 2.0 Type A, USB 2.0 Micro-B
Others40-pin header (GPIO, I2C, I2S, SPI, UART)
12-pin header (Power and related signals, UART)
Table 1: Salient Features of Jetson Nano 2GB

The Software

We are using OctoPrint to control and access the 3d printer via a web interface. OctoPrint is an open source 3d printer controller application, which provides a web interface for the 3d printer. It displays the printer status and configuration parameters and allows to schedule prints and remotely control the printer. 

The Process

The process of installing OctoPrint on the Jetson Nano is summarized below.

  1. Write Image to the microSD Card

    Flash a micro SD Card with Balenca Etcher with the respective image for the Jetson Nano.

  2. Configure Jetson Nano

    Connect to the Jetson Nano via USB and configure Linux via Putty.

  3. Install OctoPrint on the Jetson Nano

    Installing Python including pip and virtualenv. Installing OctoPrint into that virtual environment.

  4. Configure OctoPrint

    Configure OctoPrint to match the specifications of the printer.

1. Write Image to the microSD Card

The following details are described on the Nvidia developer page.

1. Download, install, and launch SD Memory Card Formatter for Windows.

2. Select card drive.

3. Select “Quick format”. Leave “Volume label” blank.

4. Click “Format” to start formatting, and “Yes” on the warning dialog.

Fig. 3: Format SD Card

5. Use Etcher to write the Jetson Nano Developer Kit SD Card Image to your microSD card.

6. Download, install, and launch Etcher.

7. Click “Select image” and choose the zipped image file downloaded earlier. The Jetson Nano comes in different versions (for instance 2GB and 4GB), and it is important to note that Nvidia provides different images for these, otherwise the image won´t install properly.

Fig. 4: Etcher with selected image.

8. Insert the microSD card. If Windows prompts you with a dialog like below, Click “Cancel” (per this explanation).

9. Click “Select drive” and choose the correct device and click “Flash!” It will take Etcher about 10 minutes to write and validate the image if your microSD card is connected via USB.

10. After Etcher finishes, Windows may let you know it doesn’t know how to read the SD Card. Just click Cancel and remove the microSD card.

11. After setup, start the Jetson Nano with the flashed microSD card, and follow the setup instructions.

2. Configure Jetson Nano

Here we show how to configure the Jetson Nano at first boot-up via USB and using Putty.

1. Install Putty.

2. Configure Putty to connect via serial connection. Note that in the images below the serial connection is established via COM3. This might change, and should be check in the device manager of Windows (Note for this connect the Jetson Nano via USB). It is recommended to save the session under a selected name. By that later connection can be easily established.

3. When you boot the first time, the developer kit will take you through some initial setup, including:

  • Review and accept NVIDIA Jetson software EULA
  • Select system language, keyboard layout, and time zone
  • Create username, password, and computer name
  • Optionally configure wireless networking
  • Select APP partition size. It is recommended to use the max size suggested
  • Create a swap file. It is recommended to create a swap file
  • Select the ethernet connection (often eth0)

3. Install OctoPrint on the Jetson Nano

  1. For this first update the list of available packages and their versions (this does not install or upgrade any packages). The command is presented below (Linux command that allows programs to be executed as a super user).
sudo apt update

2. Install Python pip ( is the package installer for Python), python dev ( the package that contains the header files for the Python C API), Python setuptools (a collection of enhancements to the Python distutils that allow developers to more easily build and distribute Python packages), Python venv (a virtual environment such that the Python interpreter, libraries and scripts installed into it are isolated from those installed in other virtual environments), git (software for tracking changes in any set of files), LibYAML (a C library for parsing and emitting data in YAML 1.1), and Build essential (a package that installs many other packages, like g++ and gcc: the GNU C & C++ compilers).

sudo apt install python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential

3. Create directory “OctoPrint”, through:

mkdir OctoPrint && cd OctoPrint

4. Create a virtual environment, by specifying a path. For example to create one in the local directory called “venv”, type the following:

python3 -m venv venv

5. Activate the python environment by running the following command:

source venv/bin/activate

6. OctoPrint and it’s Python dependencies can then be installed using pip:

pip install pip --upgrade
pip install octoprint

7. It may be required to add the pi user to the dialout group and tty so that the user can access the serial ports, before starting OctoPrint:

sudo usermod -a -G tty yourcreateduser
sudo usermod -a -G dialout yourcreateduser

8. You should then be able to start the OctoPrint server using the command:

octoprint serve

9. Use your web browser and connect to the print server via the Jetson Nano´s IP address (ifconfig will show you the ip address).

4. Configure OctoPrint

1. Follow the Octoprint Configuration Wizard to setup username, password, and the specifications of your printer. Most of these can be left and the default values, except the print bed dimensions or if your know the specific values.

2. Connect to the Printer by clicking on the “Connect” button in the upper left corner.