Improve this doc
Get started with and

Get started with Aetina N510 TX2 and Node.js

Introduction

In this guide, we will build a simple Node.js web server project on a Aetina N510 TX2. At its most basic, the process for deploying code to a Aetina N510 TX2 consists of two major steps:

  • Setting up your Aetina N510 TX2 with balenaOS, the host OS that manages communication with balenaCloud and runs the core device operations.
  • Pushing your Node.js project to the balena image builder, which pulls in all necessary dependencies and creates the container image for your application.

Once you complete these steps, your Aetina N510 TX2 will download the container image, start your application, and begin sending logs to your balena dashboard!

What you will need

  • A Aetina N510 TX2 or one of our other supported devices.
  • A method of flashing a new operating system on to the device.
  • A way of connecting the device to the internet, either through ethernet or wifi.
  • A method of reliably powering the device.
  • A balena account.

Account setup

If you don't already have a balena account, make sure to sign up before continuing.

Create an application

An application is a group of devices that share the same architecture and run the same code. When you provision a device, it is added to a specific application, but can be migrated to another application at any time.

To create your first application, log into your balenaCloud dashboard and click the Create application button.

Create an application

Select the Aetina N510 TX2 device type, choose an application type, enter a name, and click Create new application:

Note: To create an application with multiple containers, you'll want to use the Starter or Microservices application type. The Starter applications are full-featured and free for all users, with a limit of up to 10 total devices across all Starter applications.

After the application has been created, you will be redirected to the dashboard for the newly created application, where you can add your first Aetina N510 TX2.

Add your first device

To connect with balenaCloud, your Aetina N510 TX2 needs a balenaOS image configured for your device type, application, and network. Start by clicking Add device in your application dashboard:

Add a device

For most applications, you will have the option to select a device type. By default, the device type you chose when you first created the application will be selected. Applications can, however, support any devices that share the same architecture, so you can choose another device type if needed.

After selecting a device type, select an OS type of balenaOS, and you will see a list of available balenaOS versions. In general, you should use the most recent version available. You can also select whether to use a Development or Production edition with the respective toggle:

Add new device

Note: When you're getting started, a Development image is the most useful, as it permits many testing and troubleshooting features. For production use, be sure to switch to a Production image. More details on the differences between Development and Production images are detailed here.

A toggle is also used to select whether your network connection will be through Ethernet Only or with the option for Wifi + Ethernet. Selecting Wifi + Ethernet allows you to enter a Wifi SSID and Wifi Passphrase:

Network configuration

Clicking Advanced presents the option to select the rate at which your device checks for updates and the option to download just a configuration file (config.json) rather than an entire image:

Advanced options

Once you have finished your image configuration, click the Download balenaOS button. When the download completes, you should have a zipped image file with a name like balena-First-App-2.47.1+rev1-v10.6.27.img.zip, where First-App is the name you gave your application on the dashboard.

Provision device

Next, we will flash the downloaded image onto the device. To do so, follow the following steps:

  • Write the OS file you downloaded to your SD card. We recommend using Etcher.
  • Insert the freshly burnt SD card into the Aetina N510 TX2.
  • Warning! This will also completely erase internal storage media, so please make a backup first.
  • Connect power to the carrier board.
  • The device is performing a shutdown. Please wait until all LEDs are off.
  • Remove the balenaOS installation media.
  • Remove and re-connect power to the board.

When complete, after a minute or two the device should appear on your balenaCloud dashboard, and you should now be ready to deploy some code!

Help! My device won't show up.

If your device still hasn't shown up on your dashboard after a few minutes, something is definitely wrong. First check, if using WiFi, you entered the credentials correctly, and ensure that your network meets these basic requirements. Also, see our troubleshooting guide.

If you still can't get your device online, come on over and talk to us on our support channel.

Add release

Now that we have a device or two connected to a balena application, let's deploy some code.

The recommended way to deploy code is to install the balena CLI. The easiest way to do this is to use the installer for your OS available on the releases page. Choose the latest release of the installer for your OS, and follow the installation instructions.

balena CLI installer

Note: You may also install the balena CLI via npm on a system running NodeJS, as explained in NPM Installation.

To use the balena CLI, you need to login to your balena account. Login via the terminal using the balena login command:

$ balena login
 _            _
| |__   __ _ | |  ____  _ __    __ _
| '_ \ / _` || | / __ \| '_ \  / _` |
| |_) | (_) || ||  ___/| | | || (_) |
|_.__/ \__,_||_| \____/|_| |_| \__,_|


Logging in to balena-cloud.com
? How would you like to login? (Use arrow keys)
❯ Web authorization (recommended)
  Credentials
  Authentication token
  I don't have a balena account!

You will be asked how you wish to authenticate. The recommended method is that of Web authorization, which will bring up a browser window (and prompt you to first login to balenaCloud if you have not) and ask for confirmation that you wish to authorize the CLI. Click Authorize and head back to your terminal.

Web authorization

Note: Other authentication methods include using your username and password credentials or obtaining an authentication token from the dashboard. Authentication tokens come in two types, API tokens, and JSON Web Token (JWT) session tokens. While API tokens do not expire, JWT session tokens do after 7 days.

After logging in, test out the balena CLI by running the balena apps command, which should return information about the application you created in the previous step. Take a note of the APP NAME as you'll need this in the next step to push the code to all devices in that application.

$ balena apps
ID    APP NAME   DEVICE TYPE          ONLINE DEVICES DEVICE COUNT
98264 First-App  Aetina N510 TX2   0              0

Note: See all the commands available with balena CLI by running balena help

A nice first project to get started is a simple Express.js web server which, will serve a static page on port :80. All the project source code can be found here on GitHub. Download a zipped file of the project here, and when downloaded, unzip the file and open a terminal in the root of the project directory.

Note: You may also use git to deploy code to a device. If you wish to deploy via git, see the instructions here.

Now to deploy this code to all device(s) in the application, use the balena push First-App command replacing First-App with the name of your application. Ensure you are in the root of the project directory before issuing this command or specify the --source option to provide an alternate location of the project directory.

$ balena push First-App

This command will package up and push the code from the local directory to the balena builders, where it will be compiled, built and deployed to every device in the application fleet.

You'll know your code has been successfully compiled and built when our friendly unicorn mascot appears in your terminal:

[main]     Successfully built d5f1de77fad3
[Info]     Uploading images
[Success]  Successfully uploaded images
[Success]  Release successfully created!
[Info]     Release: f4e3925bf7d32226365225e1b7201b90 (id: 89693)
[Info]     ┌─────────┬────────────┬────────────┐
[Info]     │ Service │ Image Size │ Build Time │
[Info]     ├─────────┼────────────┼────────────┤
[Info]     │ main    │ 205.13 MB  │ 1 second   │
[Info]     └─────────┴────────────┴────────────┘
[Info]     Build finished in 7 seconds
                \
                 \
                  \\
                   \\
                    >\/7
                _.-(6'  \
               (=___._/` \
                    )  \ |
                   /   / |
                  /    > /
                 j    < _\
             _.-' :      ``.
             \ r=._\        `.
            <`\\_  \         .`-.
             \ r-7  `-. ._  ' .  `\
              \`,      `-.`7  7)   )
               \/         \|  \'  / `-._
                          ||    .'
                           \\  (
                            >\  >
                        ,.-' >.'
                       <.'_.''
                         <'

Your application will then be downloaded and executed by all the devices you have connected in your application fleet. The first push is slower to deploy, but all subsequent pushes are much faster due to Docker layer sharing. You can see the progress of the device code updates on the device dashboard:

Service download progress

You should now have a node.js web server running on your device and see some logs on your dashboard.

To give your device a public URL, access the device page, and choose the Public Device URL toggle. You may also activate this for many devices in your fleet at the same time via the Actions menu in the Applications dashboard.

Enable public URLs

Follow the URL to view a page with additional balena learning resources and next steps. Alternatively, you can point your browser to your device's IP address.

Next steps

Enjoy Balenafying All the Things!