Stratofier AHRS/ADS-B Traffic display app for Stratux

THIS DOCUMENTATION IS OUT OF DATE. IT IS IN THE PROCESS OF BEING UPDATED. REFERENCES TO HARDWARE AND SOFTWARE SETUP ARE STILL VALID BUT KNOW THAT THE LINUX VERSION IS NO LONGER MAINTAINED SO IF YOU GO THIS ROUTE YOU’RE ON YOUR OWN. ALL CURRENT DEVELOPMENT IS TARGETED AT ANDROID DEVICES.

What is it?

Stratofier, previously known as RoscoPi was ported from the original Android Rosco app to run directly on the Raspberry Pi that the Stratux software and hardware run on so that it can be displayed on a dedicated touchscreen. The app has since been ported back to Android with all of the refinements that went into Stratofier and that’s where most of the attention is now although both versions will continue to be developed in parallel (they share the same code base). Both versions of the app will run in landscape or portrait mode. The Android version auto-switches depending on the orientation of the device whereas the Raspberry Pi version needs some hardware-specific changes made so that part needs to be done by the user. The image above, displaying an older version of Stratofier when it was sitll RoscoPi, is specifically for a Kuman 800×480 (or compatible) touchscreen. Use with any other screen will require you to install the drivers and do the setup for that screen manually. Screens tested so far are the Kuman 7-inch 1024×600 and 800×480, and the Jun Electron 5-inch 800×480 screen. In my opinion the Kuman screens are superior in quality among the cheaper screens.

Where do I get it?

Android

Stratofier for Android is available through the Google Play store. You can either install it directly from your phone or tablet or follow this link:

Stratofier on Google Play

GitHub

Stratofier is an open source project and is free to download and use under the GPL v3 license. It can be downloaded from GitHub here.

Linux

The Linux version for a dedicated display is no longer being supported as of January 2020. Android devices can be used as displays and have far superior screens that are dimmable. Touchscreens with similar quality dimmable displays are prohibitively expensive. You can still download the current source code and adapt it to your needs.

Rasberry Pi Image

You can open the first .7z.001 file and 7zip will recognize the rest of the chunks and extract it as if it was one giant file. All of the compressed files together are about 8.5GB It will decompress to just under 32GB so be sure you have enough space. Note that this image has known bugs and is no longer maintained. This image is only provided so you can have a working development platform with the community version of the Qt libraries pre-configured and compiled. The repository is Android-only now but the source code itself can easily be made to work on Linux with a small amount of work. I just don’t have time to maintain both any longer.

Current Stratofier version in this image: 1.2.0 (July 8, 2019)

Current Stratofier version: 1.5.1.0 (October 29, 2019)

Chunk 1

Chunk 2

Chunk 3

Chunk 4

Chunk 5

Chunk 6

Chunk 7

Chunk 8

Chunk 9

The password for the “pi” account for this image is “cherokee”.

What hardware do I need?

First of all you need a Stratux ADS-B Receiver with an AHRS daughter card. The stratux project is available here.

The Stratux is an open source project that provides a very low-cost ADS-B In traffic solution based on a Raspberry Pi with two SDR radios, a GPS receiver and an optional AHRS daugher card that mounts on the GPIO pins of the Raspberry Pi. All of the details on how to build one are available at stratux.me.

The Stratux was designed to transmit traffic and AHRS data in a common format via wifi to several popular EFB apps like Foreflight, FlyQ, WingX, Avare and many others. Stratofier provides a display of this same data directly on a dedicated screen connected to the Raspberry Pi that the Stratux is based on, or on an Android device. If you are happy with the synthetic vision or other AHRS display already available on your favorite EFB app, you probably don’t need Stratofier. It is a simple display application, not a full-blown EFB app. It is meant to provide a simple backup attitude and traffic display.

Now that you’re past the preamble, what you need to use Stratofier besides the Stratux itself, is a touchscreen or an Android device running Android OS version 6.0 or later. Only devices running Android 7.0 to current have been fully tested and the display seems to be best shown on a display 7 inches or smaller. The only two screens that have been tested so far are the 7″ Kuman 800 x 480, 7″ Kuman 1024 x 600 and the Jun-Electron 5″ 800×400 capacitive touchscreens. There are likely several others that will work fine. I should mention that even though I’ve moved to mostly using Android display devices, the Kuman touchscreens have proven to be much better quality in terms of robustness.

The Kuman screens come with a CD that explains very well how to install the driver and set up the screen for the rotation you’ll need. Others just provide a link. Either way, the few touchscreens I’ve used are all fairly straightforward to set up. All of them can be configured as a portrait or landscape display.

The Kuman screens seem to have trouble differentiating the two USB ports. One needs to be data connected to the Raspberry Pi but because the Stratux radios and the screen backlight are enough to overtax the current limit of the Raspberry Pi USB bus, you may need to invest in a USB Power injector cable, which can take power from another port on your battery to power the screen so it won’t flicker or shut off. It seems you can “fake it out” by waiting to plug in power a few seconds after the Raspberry Pi boots, but that’s a pain one can do without. A power injector cable fixes the problem since power and data are all on one cable and the screen doesn’t get confused. What happens is it will power up fine and display just fine but it confuses the two USB connections and the touchscreen stops working. The power injector cable is an easy fix if a little more complicated to hook up.

You should already have one but if you don’t, get a good quality 32GB Micro SD card. Don’t skimp. Buy a quality name brand card like SanDisk, Samsung, etc. Nowadays they’re not that expensive anyway.

What software do I need?

On Windows, PuTTY is a very good SSH client you can use to log into a running Raspberry Pi and issue the commands you need to install everything. On linux, just open a terminal window and use the built-in SSH command: ssh pi@<Your Stratux IP Address> .

You’ll need a utility to write images to your 32GB Micro SD card such as Win32DiskImager. The Etcher utility is available for Windows, Linux and MacOS.

How do I install it?

You have four options:

  1. Install it on an existing, working Stratux.
  2. Install it on a Raspberry Pi running your own distribution (any examples will assume the Raspbian distribution which is a flavor of Debian linux for the Raspberry Pi).
  3. Install it on a separate Raspberry Pi (or even the tiny Raspberry Pi Zero W although this hasn’t been tested) and set that Raspberry Pi to connect to the Stratux on startup.
  4. Install the image above that is broken into several files that when expanded is just under 32 GB. It already has a recent Raspbian distribution, all the dependencies for Qt, Qt itself, the Stratux software compiled from source, and Stratofier all ready to go but it’s a big download, almost 9 GB total. This is the easiest method by far but depending on your internet speed it may take a while. 7Zip is smart enough to stitch the separate files back into one image when you unpack it.

Existing, working Stratux install

Installing it on an existing Stratux requires installing the touchscreen drivers, installing dependencies, installing the Qt libraries, and installing the Stratofier app. You can skip the steps to install the operating system and Stratux software and go straight to installing dependencies, Qt and Stratofier.

Installing on your own custom distribution

This involves doing everything yourself but you’ll have more freedom to customize everything exactly how you want it. You’ll need to download and write the operating system to your card, set up and install the Stratux software, download, configure and install the Qt libraries, and finally install Stratofier.

Installing on a separate Raspberry Pi

If you go this route, you don’t need to set up any of the Stratux software since you’ll be pulling the information over WiFi just like an EFB would. You just need to install an operating system, the Qt libraries and RoscoPi. There’s no reason why you couldn’t even do this on the tiny Raspberry Pi Zero W since Stratofier isn’t very CPU intensive. Note that the “W” in “Raspberry Pi Zero W” is important. Earlier ones didn’t have WiFi capability.

Installing your own distribution

This is as simple as downloading the image from here.

Use a utility such as Win32DiskImager or Etcher to write the image to your 32GB Micro SD card.

Insert the card into the Raspberry Pi, initially with a monitor, keyboard and mouse attached. You can remove them later but it makes it easier to finish setting up the operating system.

Installing Qt

Installing the Qt drivers can be accomplished three ways:

  1. Cross-compile on a much faster linux computer. The Raspberry Pi is really slow for compiling. Using this option although it has more overhead getting it set up is at least a factor of ten faster than compiling on the Raspberry Pi itself. A guide for cross-compiling can be found here.
  2. Download and install on the Raspberry Pi itself. This is easier than cross-compiling but it will take at least a day, possibly more to compile and install. Guides on how to do this are available here and here.
  3. Follow the directions for Qtrpi. This is the easiest option and the one most guaranteed to be problem-free but it’s based on an older Qt version (currently 5.7). For the purposes of Stratofier this is sufficient.

I ran into several difficulties that may or may not exist by the time you read this so going through them all would just waste your time, but as of January 2019, the current Qt 5.12.0 codebase, compiled to use XCB as the QPA backend (how it draws on X-Windows) was the only reliable way to configure it. If you really want it to use OpenGL knock yourself out but Stratofier doesn’t need it. After installing Qt you may need to set:

QT_QPA_PLATFORM=xcb

in your /home/pi/.profile file so that it correctly chooses the backend to use when Stratofier loads the libraries.

Also add the following to your /home/pi/.bashrc file:

export QTDIR=/opt/qt5
export PATH=/opt/qt5/bin:$PATH

Replace /opt/qt5 with where you chose to install it when you configured Qt for building with the “-prefix” option in the configure script.

Before compiling and installing Qt, it would be a good idea to enable swap memory if you’re building directly on the Raspberry Pi itself since some of the compilations take a lot of memory. Just be sure to turn it back off so it doesn’t wear out your card:

sudo nano /etc/dphys-swapfile

Add 1GB of swap space by modifying this in the file:

set CONF_SWAPSIZE=1000

Ctrl-X, Y, Enter, to save and exit, then turn it on:

sudo dphys-swapfile swapon

Ensure it took by using:

free -m

You should see 1GB of swap space listed along with physical memory. When Qt is done compiling and is installed, use this to turn swap back off:

sudo dphys-swapfile swapoff

sudo update-rc.d dphys-swapfile remove

Installing Stratofier

This is the easy part. Just make sure you have Qt installed first:

Log into your Stratux (or separate Raspberry Pi)

On linux: ssh pi@192.168.10.1

On Windows: Use PuTTY to connect to 192.168.10.1 with username “pi”.

As long as you haven’t changed it, the password will be “raspberry”.

git clone https://github.com/UnexplodedMinds/Stratofier.git
cd Stratofier
qmake Stratofier.pro
make

Create a desktop entry so you can run it from the desktop, God forbid it crashes or you exited the app:

nano /home/pi/Desktop/Stratofier.desktop

Add the following:

[Desktop Entry]

Name=Stratofier

Comment=Run Stratofier UI

Icon=/home/pi/Stratofier/resources/Stratofier.png

Exec=/home/pi/Stratofier/bin/Stratofier

Type=Application

Encoding=UTF-8

Terminal=false

Categories=None;

Ctrl-X, Y, Return to save and exit. If you want RoscoPi to start in landscape mode, add:

orient=landscape

to the end of the “Exec” entry. This tells RoscoPi to format itself in Landscape mode so that the attitude indicator and guages are on the left and the heading indicator and zoom controls are on the right in a landscape orientation.

Create an auto-run entry:

mkdir autostart
cd autostart
nano Stratofier.desktop

Insert the same text as above for the normal desktop entry, then Ctrl-X, Y, Return to save and exit. This should start RoscoPi immediately after the Raspberry Pi boots into the lightdm X-Windows desktop.

To make life easier, you can edit your /etc/rc.local file and add this at the bottom:

# Upgrade the Stratofier executable if available
 if [ -f /boot/Stratofier ]; then
   mv -f /boot/Stratofier /home/pi/Stratofier/bin/
   chmod 755 /home/pi/Stratofier/bin/Stratofier
   chown pi:pi /home/pi/Stratofier/bin/Stratofier
 fi

Installing the Stratux Software Manually

Follow the guides available here at the Stratux website.

There is an automated script available here that will go through and set up your raspberry Pi to use the Stratux hardware (SDR radios, GPS and AHRS daughter board). They do state that it’s not in sync with the current Stratux code so my advice is to follow what it’s doing and do it by hand, skipping any steps you know are already done. I followed it step-by-step by hand and got everything set up and working correctly but I never actually ran the script so use at your own risk.