RIoTBoard - Review

Table of contents

RoadTest: RIoTBoard

Author: wangyeee

Creation date:

Evaluation Type: Independent Products

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: BeagleBone Black

What were the biggest problems encountered?: Performance issue, it took a lot time to compile GCS code.

Detailed Review:

First thanks for Element14 offering me this opportunity of RoadTest. The RIoTBoard reached me several days after my application was selected, which is quite fast for a over-sea shipping.


My proposal was to run QT-based TauLabs GCS on RIoTBoard. The software part of the project involves installing Linux and compile GCS from source.


Install and Config Debian

While Tau Labs has released an official release for Android( which would run on RIoTBoard. I decided to compile and run the GCS software on Debian, as it would be no difference from using any Android tablet if I use the built-in Android on RIoTBoard.


It is very easy to write the Debian image compiled by selsinork to a micro SD card with tools like dd(1). After written the image, plugin the micro SD card, change the boot switch to boot from micro SD and then power on. I am using a FT232 USB to serial adapter to view the boot message. The password for root is riotboard, and you will get a command line interface via serial interface.


The first thing I am going to do is to setup Internet and ssh as it is much faster than serial interface and it supports X! It has not taken me much efforts to get ssh up with the DHCP client. It is also recommended to allocate a static IP address for the board as I do not want to check its IP address in my router's web admin page every time before I try to connect it via ssh.


With a fast user interface and Internet connection, it is time to install softwares we need. First we need to config APT( and make sure it works. The Debian image I am using is compiled for ARM HF, so we need to find the closed Debian mirror with armhf packaged. Click on your country in this list(, and find a mirror with armhf in its includes architectures list. The you can add that mirror to your sources.list and invoke `apt-get  update` to get full package list from the new mirror.


As I prefer sudo to logging as root, I created a user account for later operations and added it to the sudoers. While some people feel uneasy without the hash mark on their terminal, it is up to you to choose sudo or logging as root.


Obviously we need X-Window and a desktop environment to run GCS, with the magic of APT, it only takes time(a lot of time) to get a full desktop environment:


$ sudo apt-get install xorg

$ sudo apt-get install gnome-core


For those who choose GNOME as their desktop environment like me, it is highly recommended to install gnome-core instead of gnome as the latter includes extra packages(such like games) which are unlikely used when you fly a drone image


Depending on your Internet connection and speed of micro SD card, it may take hours to complete the installation process. If you are using sudo like me,additional configuration is needed to grant access of serial devices to your user account. Login with your user and run the following command:


$ sudo gpasswd --add `whoami` dialout


Compile Tau Labs GCS

The Tau Labs team has released binaries of Linux for only X86 and X86_64 platforms so obviously we need to compile from source for the i.MX 6 processor. In order to get the attention of people who are interested in the TauLabs project, I decided to post the detailed build process on its offical forum:


Once the build process completed, we can launch the GCS:


I took the screen-shot above when connected to my router, and Google Maps showed up correctly. However we have to cache maps before viewing it at field, and we need to update the cache regularly for the latest map data. A 3G module for portable Internet access would be a better solution.


The model I choose is Huawei EC122, which supports CDMA2000. And the configuration is quite straightforward: Insert the module to a USB port and verify it has been recognized:


$ dmesg | tail


And here is my output:


Then we should install some tools to configure that modem!


sudo apt-get install wvdial usb-modeswitch


As the module has built-in storage for its drivers and applications on Windows and OS X, it would tell the OS that it's a USB drive when plugged to USB port the first time. After user has installed the driver, it will tell the modem to be a modem!! Package usb-modeswitch is all we needed for that job.(


We can verify whether the mode has been changed with following command:

ye@riotboard:~$ ls -l /dev | grep -i ttyusb

crw-rw---T 1 root dialout 188,   0 Jul 10 21:47 ttyUSB0


And now we can use wvdialconf command to scan modem and generate its configuration file(which is located at /etc/wvdial.conf). Then add some details of your carrier in the file.

[Dialer Defaults]

Init1 = ATZ

Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0

Modem Type = Analog Modem

ISDN = 0

New PPPD = yes

Modem = /dev/ttyUSB0

Baud = 9600




[Dialer evdo]

Phone = #777

Username = card

Password = card

Carrier Check = on

Check Def Route = on

Dial Attempts = 1

Auto Reconnect = on

Abort on Busy = on

Check Def Route = on

Abort on No Dialtone = on

Stupid Mode = on

Idle Seconds = 0

Auto DNS = on

The section in red works for China Telecom, and you should modify it based on the information provided by your carrier.


Finally use the following command to dial:

sudo wvdial evdo

The output should be like this:


And press Ctrl+C to disconnect.


With the 3G modem working, we are now to download maps everywhere. Be sure you have chosen appropriate data plans to prevent prejudice on your budget. Flying a drone is already very expensiveimage


The software part is done after this step and now let's proceed to the hardware part.


Hardware assembly

After getting software to work, the next step is to put everything into a box so that it can be protected at field. I am using an aluminium case which was designed as a transmitter case to install RIoTBoard, LCD and other parts.


As I only have some primitive tools, I choose ABS plastic for the panel of LCD and keyboard.

  1. Cut though the ABS plastic and get the shape of LCD.
  2. Drill holes for nylon bolts.
  3. Glue the LCD to the panel and assemble the LCD driver, etc.
  4. Glue everything to the upper side of the case.

And the same steps are for the lower side which RIoTBoard would be in.



Back of the LCD.



LCD driver.



Connect LCD via HDMI and put everything in an Aluminium alloy case.


Power Module

The LCD and its driver work at 12V DC which RIoTBoard should be powered with 5V DC. I use a 3-cell Li-Po battery and a UBEC to solve the problem. The battery is 12 volts which goes directly to the LCD and UBEC regulate 12V from battery to 5V to power the RIoTBoard and other USB devices. The UBEC is capable of 8A output and it would produce sufficient current for the board. It also works in switch mode which means it would generate less heat than those BECs working in liner mode.


I am also planning to integrate a balance charger circuit to the power module which would charge the battery automatically when connected to external power. The whole power would behave like its counter part in a laptop computer. This feature is still working in progress.


Final Test

Here are some images of the working GCS!



GCS connected to the quad.



The LCD driver also supports TV input, so it can also be used as a FPV(first person view) monitor to display real time video feed from the quad onboard camera.



Picture of quad, GCS and transmitter taken at field.


Conclusions and Things Need to be Completed

The RIoTBoard performs well as I expected. Its processing power is enough for the GCS application. At first I was considering building my GCS based on a BeagleBone Black. At that time Rev. B version of BBB was no longer in production and Rev. C was delayed for some time. And then I learnt something about RIoTBoard on Google+ and after comparing the specifications, I decided to add it as another candidate of my project. Although RIoTBoard costs more than a BBB, when taking account of its processing power and lots of available peripherals, I will definitely choose RIoTBoard if I would build another GCS for my friend.


The performance of GCS meets my requirement but there is still room for improvement. Here are some features I am planning to implement later.

  1. Place antenna of telemetry module in another place for better reception.
  2. Get rid of mouse and keyboard.
  3. The antenna tracker is working under process and I am building my ATT hardware now.
  4. Make the GCS more robust. e.g. making it waterproof.
  5. and a lot more...

My quad also need to be better tuned to achieve those goals.


A Chinese version of this review is also attached.