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 serveriperf3 -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.