Doodle Labs Technical Library

Nimble Integration Guide for Nvidia Jetson Orin (arm64)

Webpage to PDF

Introduction

The Nimble is a tightly integrated radio solution for autonomous robots and unmanned systems. It leverages Doodle Labs’ industrial long-range transceivers and runs the Mesh Rider Lite operating system on the robot’s CPU. Mesh Rider Lite includes customized drivers and software, which includes optimized configuration and our proprietary interference avoidance solution, Sense. The transceiver has a mini PCIe interface and works with Linux-based machines. For this evaluation guide we are using the Nvidia Jetson Orin Platform.

Requirements for this guide:

1. Nimble Radio

2. M.2 Key E to mPCIe adapter (recommended option)

3. Nvidia Jetson Orin running Jetpack 6.0 with Ubuntu 22.04.5 LTS with Linux 5.15.136-tegra kernel

4. Nimble Software Package (please contact your Doodle Labs Sales Representative for this)

5. Internet Access via ethernet

Nvidia Jetson Orin Nano Requirements

The Nimble software suite only supports the Nvidia JetPack 6.0 stack which features Ubuntu 22.04.5 LTS with GNU/Linux 5.15.136-tegra kernel. It is very important to ensure that the system is using the 5.15.136-tegra kernel as certain packages depend on it. 

To check if you are running Jetpack 6.0, run the following command in a terminal on your Jetson Orin board.

sudo nvbootctrl dump-slots-info

Jetpack 6.0 correspond to version 36.3.0 

If you are not running Jetpack 6.0 please follow this guide but note the guide is likely to be using a newer Jetpack version than supported by our software. At step 6 of the guide, don't download the image listed but get it from here. The image should be jp60-orin-nano-sd-card-image.zip . For other details about Jetpack 6.0 look at this page.

Hardware Setup

We will be removing the wifi module that comes with the Jetson Nano Orin and replacing it with the Nimble Radio. 

1. Make sure the hardware is powered down. 

2. Flip the board over carefully and you will see the Wi-Fi Module and the antennas. 

3. Carefully undo the antenna cables from the antenna ports as shown below. A small flathead screwdriver should provide enough leverage to undo the connection. 

4. Unscrew the screw in the photo above. Now you should be able to carefully remove the Wi-Fi module from the slot. Place the Wi-Fi module somewhere ESD safe and keep the screw as it will be used to install the Nimble Radio. 

5. Install the M.2 Key E to mPCIe adapter to where the Wi-Fi module used to be. If you are using the recommended ADT-Link adapter. Insert the adapter into the slot. 

To secure the adapter, lift up the cable to reveal the screw hole.

Use the screw from earlier to secure the adapter.

 

6. Install the Nimble radio into the miniPCIe connector of the adapter. 

7. Attach antennas to the Nimble radio. You could potentially use the existing antennas on the board if you have the U.FL connector variant of the Nimble radio.

Software Setup: Disable Automatic Updates

The Nimble drivers are only compatible with a specific version of the Linux kernel so we need to disable auto upgrade to prevent kernel updates which may cause the drivers to stop working. 

1. Open a terminal (Ctrl + Alt + T) and run the following commands

sudo -i
nano /etc/apt/apt.conf.d/20auto-upgrades

2. Paste these lines. If this file already contains these lines but with a "1" instead, please change it as below.  

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

3. Save the file by pressing Ctrl + o 

4. Close nano by pressing Ctrl + x

You are free to update your applications but just be careful not to do updates that will update the linux kernel. 

Software Setup: Prerequisite Packages

1. Install an SSH server such as openssh-server. This will allow you to SSH into the board. 

sudo apt install openssh-server


2. Install net-tools. This will allow you to use utilities such as ifconfig.

sudo apt install net-tools


3. After installing the above, you can now SSH into the Jetson Orin board from another PC on the same network. If you wish to SSH in follow the rest of these instructions.

a ) Run the following and note down the IP address of the network interface you are using to connect to the local network.

ifconfig 

b) Run the following to SSH in. 

 ssh <username>@<IP>

username is the user name you selected during your installation, and IP is the IP address you noted down from ifconfig.

4. Install iperf3. iperf3 is a useful tool for throughput testing.

sudo apt install iperf3


5. Install bridge-utils. This allows you to run the brctl command.

sudo apt install bridge-utils


6. Install socat. This allows you to use the messaging system from the command line.

sudo apt install socat


7. Install Additional Packages for Remote Access: Install htop, nload, iperf and   screen for enhanced remote monitoring and networking utilities:

sudo apt update && sudo apt install htop nload iperf screen nano


8. Modify Network Manager Settings to unmanaged the Wireless NIC: If you want to ensure the wireless network interface card (NIC) is no longer managed by NetworkManager, modify its configuration file:

sudo nano /etc/NetworkManager/NetworkManager.conf

At the end of the file, add the following lines:

[keyfile]

unmanaged-devices=interface-name:wl*


9. To apply the changes made to the configuration file, restart the NetworkManager service

sudo systemctl restart NetworkManager

Software Setup: Nimble Kernel Drivers

Please contact your Doodle Labs Sales Representative for the Nimble Software package

The Nimble software package has both kernel space driver and user space applications and libraries packaged into multiple .deb Debian packages. The kernel driver packages for 802.11n is coupled to specific version of Kernel.  Below is the list of kernel specific debian packages we will be installing. 

File Name

Description

hostap_0.0-1_arm64.deb

Provides customized hostapd, hostapd_cli, wpa_supplicant and wpa_cli 

iw_5.19-1_arm64.deb

Provides customized iw utility and dependent libraries 

backports-5.15.136-tegra_6.6.15-1__arm64.deb

Provides customized ath9k driver (Kernel version specific) for DoodleLabs 802.11n transceiver. 

1. On the Jetson Orin board, create a folder ~/Nimble and copy the Nimble Software Package to this folder.

2. Install the .deb packages

sudo dpkg -i backports-5.15.136-tegra_6.6.15-1_arm64.deb hostap_0.0-1_arm64.deb iw_5.19-1_arm64.deb

3. Reboot the board 

sudo reboot

4. Check that the radio interface is running by running

lsmod | grep compat

You should see the following line. 

compat       12ss288 4 ath9k_common,ath9k,mac80211,cfg80211

Software Setup: Nimble Front End Software

By default, Ubuntu uses the Network Manager service for network configuration. We have already stopped the Network Manager from managing wireless interfaces. We will be using the Nimble Front-end software to manage the wireless interface by using wpa-supplicant, hostapd, and isc-dhcp-server. The Nimble Front-End provides a unified configuration interface for wireless configuration, IP configuration, traffic prioritization, and Sense. The Front-End also enables compatibility with Doodle Labs Mesh Rider radios.

The following files are provided for Front-End Installation.

nimble_config.tar 

CLI utility to configure Nimble/Hostapd/wpa_supplicant AP and STA device 

nimble_installer.tar 

CLI utility to install and configure binaries, libraries and dependency services of Nimble including acs_multiband.  

1. Go back the to folder where the Nimble software package was installed ~/Nimble

2. Extract the two Nimble Front-End files

tar -xf nimble_installer.tar

tar -xf nimble_config.tar

Note: Internet Connectivity is required for this next step of using the Nimble Installer

There are two ways to proceed. One option is to configure for Nimble to be in Access Point mode and the other is to configure Nimble to be in Client/Station mode.

Access Point Mode

To install and configure the radio to be in AP mode do the following

1. Navigate to the  ~/Nimble/nimble_installer directory in a terminal and run the following command 

sudo ./nimble_installer.sh AP 

Below is a sample output for reference 

2. Reboot the device after installation is complete

sudo reboot

3. Check if the AP is functional using iw command, please use the DoodleLabs WiFi card interface name, for example “wlp3s0”

sudo iw wlp3s0 info 

The device will act as a WiFi AP with the following settings

SSID: wireless-hotspot 
PSK: DoodleSmartRadio
IP: 10.223.3.1/16 and running a DHCP server

Client Mode

To install and configure the radio to be in AP mode do the following

1. Navigate to the  ~/Nimble/nimble_installer directory in a terminal and run the following command 

sudo ./nimble_installer.sh Client 

Below is a sample output of the script for reference 

2. Reboot the device after installation is complete

sudo reboot

The device will act as a WiFi Client device with the following parameters 

SSID: wireless-hotspot 
PSK: DoodleSmartRadio
IP: DHCP Client

3. If an access point is running with the above credentials, on the same channel and bandwidth (it should be if it is the default Nimble AP installation). Check if this client/station is connected to AP using following commands, please use the DoodleLabs WiFi card interface name, for example “wlp3s0” 

sudo iw wlp3s0 info 
sudo iw wlp3s0 station dump 

Switching between AP and Client Mode

You can switch between AP and Client mode by running the nimble_installer.sh script again with the desired mode and rebooting. 

Quick Testing

1. On the WiFi AP device terminal, run iperf3 server 
iperf3 -s 

2. On the WiFi Client device terminal, run a ping test from Client to AP device and a iperf3 test to check connectivity and minimum throughput. Client will be assigned with a DHCP address from 10.223.x.x/16 subnet by the AP 

ping 10.223.3.1 
iperf3 -c 10.223.3.1 -t 30

Additional Configuration Information

Please check out the Nimble Application Guide for more details on using the Nimble Radio. 

Table of Contents