Doodle Labs Technical Library

Getting Start Guide for the Nimble Evaluation Kit (x86)

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 kit we are using the UP2 V2 single-board computer which is x86 based.

What’s in the box 

The Nimble Evaluation kit include the following components 

  • Up2 V2 Single-Board Computer
  • M.2 Key E to mPCIe adapter 
  • M.2 Key E to mPCIe adapter (long version)
  • 2x2 MIMO Nimble transceiver 
  • 2 MMCX to SMA cables 
  • 2 dual-band 2.4/5 GHz antennas 
  • 12V 5A Power Adapter 
  • Regionalized Power Cable

Hardware Setup

1. Make sure the hardware is powered down. 

2. If the Nimble Transceiver did not come connected to the board, locate the M.2 Key E slot as shown by the purple arrow below.


3. Insert the M.2 Key E to mPCIe adapter into the M.2 Key E slot.  (Green Arrow)

4. Insert the Nimble transceiver into the mPCIe adapter. (Orange Arrow)

5. Attach the antennas to the Nimble transceiver using the MMCX to SMA cables. (Blue Arrow)

6. Connect a keyboard and mouse to the Up2 V2 over USB.

7. Connect a monitor to the Up2 V2 over HDMI. 

8. Connect the power supply to power up the device.

Software Setup

Please contact your Doodle Labs Sales Representative for the Nimble Software package if it is not included in your evaluation kit. 

Your evaluation kit might already be preloaded with Ubuntu 22.04.4 LTS and the Nimble software package. If it is, you will be greeted with the Ubuntu splash screen with username “doodle”, the password is also “doodle”. If you received two UP  boards with the Nimble transceivers already installed, it is likely that they have already been configured as an Access Point (AP), Client(C) pair. On the board itself they might be labeled as AP for Access Point and C for Client. 

To check if the board has already been configured as an Access Point or Client. Start a terminal and run the following command. You should see details of the wireless interface if they have been preconfigured. 

sudo iw wlp3s0 info

Follow these instructions if you are starting from scratch. 

Prerequisites: 
i)  Ensure the Nimble transceiver has been installed. 
ii) Ensure that the Nimble transceiver is not used to establish WiFi connection to any other AP or Client devices.

1.  Install Ubuntu 22.04.4 LTS on the UP board. (X86-64 architecture)

2. The Nimble drivers are only compatible with a specific version of the Linux kernel so we need to disable auto upgrade by modifying /etc/apt/apt.conf.d/20auto-upgrades using following command 

sudo sed -i -e 's/APT::Periodic::Update-Package-Lists "1"/APT::Periodic::Update-Package-Lists "0"/' \
-e 's/APT::Periodic::Unattended-Upgrade "1"/APT::Periodic::Unattended-Upgrade "0"/' \
/etc/apt/apt.conf.d/20auto-upgrades

3. Verify the changes by checking the file to see if it is updated 

cat /etc/apt/apt.conf.d/20auto-upgrades

4. Connect the board to the internet using the Ethernet interface of UP board.

5. Install the following packages  

a) Install an SSH server such as openssh-server. This will allow you to SSH into the machine instead of having to use a mouse and keyboard.  

sudo apt install openssh-server 

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

sudo apt install net-tools 

After installing the above, connect your machine to your router over Ethernet. Next run ifconfig and note down the IP address of the Ethernet interface. You can now SSH into the machine from another PC on the same LAN as your router. Open up a terminal and run ssh <username>@<IP>. username is the user name you selected during your installation, and IP is the IP address you noted down earlier.  

c) Install iperf3. iperf3 is a useful tool for throughput testing. 

sudo apt install iperf3 

6. Install this specific kernel version as the Nimble drivers only work with this version

sudo apt install linux-image-6.5.0-41-generic linux-modules-extra-6.5.0-41-generic 

7. Next, update grub so that the correct kernel version is loaded on boot.  This is done by updating GRUB_DEFAULT in  /etc/default/grub. The following command will handle this.

sudo sed -i'/^GRUB_DEFAULT=*/c\GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.5.0-41-generic"' /etc/default/grub 

8. Verify the changes in the file /etc/default/grub using  the following command

cat /etc/default/grub 

It should have following value 

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.5.0-41-generic"

9. Execute following commands to update grub and boot to 6.5.0-41 kernel 

sudo update-grub 
sudo reboot

10. After board boots up, check if it is in correct Kernel version “6.5.0-41-generic“ in a terminal with below command 

uname -r 

11. Copy the nimble packages, installer and config tools to target device, from the USB device connected to UP board. Create a folder ~/Nimble on the UP board and copy the files to the folder.

The Nimble software solution 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 and built for x86_64 target.  To assist customers with resolving dependent packages and configuring different services on Ubuntu 22.04, Nimble solution comes with two utilities in addition to the .deb packages. Below is list of software packages in the Nimble Software installation bundle and their use/purpose.

File Name

Description

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.  

hostap_0.0-1_amd64.deb 

Provides customized hostapd, hostapd_cli, wpa_supplicant and wpa_cli 

iw_5.19-1_amd64.deb 

Provides customized iw utility and dependent libraries 

backports-6.5.0-41-generic_6.6.15-1+6.5.0-41.41~22.04.2_amd64.deb 

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

12. Install DoodleLabs driver and custom applications and reboot the board 

cd ~/Nimble
sudo dpkg -i iw_5.19-1_amd64.deb hostap_0.0-1_amd64.deb backports-6.5.0-41-generic_6.6.15-1+6.5.0-41.41~22.04.2_amd64.deb
sudo reboot 

13. Extract the installer and config utilities on the UP board. 

tar -xvf nimble_installer.tar 
tar -xvf nimble_config.tar

14. Install and configure first device as AP 

Change 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 

The device will act as a WiFi AP, and it will install Sense. Following are the SSID and password of the AP 

SSID: wireless-hotspot 
PSK: DoodleSmartRadio 

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

sudo iw wlp3s0 info 

15. Setting up the second UP board as a WiFi Client, redo all the steps from 1 to 13. Do not do Step 14.

Change 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

 

The device will act as a WiFi Client device, it will try to connect to a WiFi AP with following parameters 

SSID: wireless-hotspot 
PSK: DoodleSmartRadio

Check if 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 

16. Reboot both AP and Client devices and make sure they boot up as AP and Client and connect to each other.

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