|
||
---|---|---|
font | ||
.DS_Store | ||
.gitignore | ||
0.geojson.REMOVED.git-id | ||
1.geojson.REMOVED.git-id | ||
3.geojson.REMOVED.git-id | ||
Aircraft.cpp | ||
Aircraft.h | ||
AircraftList.cpp | ||
AircraftList.h | ||
anet.c | ||
anet.h | ||
AppData.cpp | ||
AppData.h | ||
dump1090.h | ||
getmap.sh | ||
Input.cpp | ||
Input.h | ||
interactive.c | ||
magma.h | ||
Makefile | ||
Map.cpp | ||
Map.h | ||
mapconverter.py | ||
mode_ac.c | ||
mode_s.c | ||
monokai.c | ||
monokai.h | ||
ne_10m_admin_0_boundary_lines_land.shp.REMOVED.git-id | ||
ne_10m_admin_0_boundary_lines_land.shp:Zone.Identifier | ||
ne_10m_admin_0_boundary_lines_land.shx | ||
ne_10m_admin_0_boundary_lines_land.shx:Zone.Identifier | ||
ne_10m_admin_1_states_provinces_lines.shp.REMOVED.git-id | ||
ne_10m_admin_1_states_provinces_lines.shp:Zone.Identifier | ||
ne_10m_admin_1_states_provinces_lines.shx.REMOVED.git-id | ||
ne_10m_admin_1_states_provinces_lines.shx:Zone.Identifier | ||
ne_10m_coastline.shp.REMOVED.git-id | ||
ne_10m_coastline.shp:Zone.Identifier | ||
ne_10m_coastline.shx | ||
ne_10m_coastline.shx:Zone.Identifier | ||
ne_10m_land.svg:Zone.Identifier | ||
net_io.c | ||
parula.c | ||
parula.h | ||
README.md | ||
run_viz1090.sh | ||
test.geojson.REMOVED.git-id | ||
View.cpp | ||
View.h | ||
view1090.h | ||
viz1090.cpp |
viz1090
This is work in progress There are a lot of missing pieces in this implementation so far:
- A proper map system yet. Eventually map data should be pulled from Mapbox or similar.
- In-application menus or configuration yet.
- Theming/colormaps (important as this is primarily intended to be eye candy!)
- Integration with handheld features like GPS, battery monitors, buttons/dials, etc.
- Android build is currently broken
BUILDING
Tested and working on Ubuntu 18.04, Raspbian Stretch / Buster, Windows Subsystem for Linux (with Ubuntu 18.04), and Mac
- Install build essentials
sudo apt-get install build-essential
- Install SDL and RTL-SDR libararies
sudo apt-get install libsdl2-dev libsdl2-ttf-dev libsdl2-gfx-dev librtlsdr-dev
Note: On Raspbian the SDL2 package requires X to be running. See the Raspberry Pi section for notes on running from the terminal and other improvements.
- Download and build spidr
cd ~
git clone https://www.github.com/nmatsuda/spidr
cd spidr
make clean; make
- Download and process map data Until more comprehensive map source (e.g., Mapbox) is integrated, viz1090 uses the lat/lon SVG files from https://www.mccurley.org
The getmap.sh pulls the large SVG file for the contiguous 48 US states and produces a binary file for viz1090 to read.
sudo apt install python3 python3-pip
pip3 install lxml numpy tqdm
./getmap.sh
There is also a world map avaiable from McCurley (https://mccurley.org/svg/data/World.svgz), which is much lower resolution and thus better for lower power hardware.
The mapconverter script called by getmap.sh downsamples the file to render resonably quickly on a Raspberri Pi 4. If you are on a slower device (e.g, a Raspberry Pi 3), you may want to try something like:
python3 mapconverter.py --resolution 64 all.svg
On the other hand, if you are on a modern desktop or laptop, you can use something higher (but you probably don't need the full 6 digit precision of the McCurley SVG file):
python3 mapconverter.py --resolution 8192 all.svg
- (Windows only)
As WSL does not have an X server built in, you will need to install a 3rd party X server, such as https://sourceforge.net/projects/vcxsrv/
* run Xlaunch from the start menu
* Uncheck "Use Native openGL"
* Open the Ubuntu WSL terminal
* Specify the X display to use
```
export DISPLAY=:0
```
* Start viz1090 as described below.
RUNNING
- Start dump1090 (http://www.github.com/MalcolmRobb/dump1090) locally in network mode:
dump1090 --net
- Run viz1090
./viz1090 --fullsceen --lat [your latitude] --lon [your longitude]
viz1090 will open an SDL window set to the resolution of your screen.
RUNTIME OPTIONS
Argument | Description |
---|---|
--server [domain name or ip] | Specify a dump1090 server |
--port [port number] | Specify dump1090 server port |
--metric | Display metric units |
--lat | Specify your latitude in degrees |
--lon | Specify your longitiude in degrees |
--screensize [width] [height] | Specify a resolution, otherwise use resolution of display |
--uiscale [scale] | Scale up UI elements by integer amounts for high resolution screen |
--fullscreen | Render fullscreen rather than in a window |
HARDWARE NOTES
This software was originally intended for Raspberry Pi devices, and it is currently optimized for the Raspberry Pi 4 with the following configuration:
- Raspberry Pi 4
- A display:
- Pimoroni HyperPixel 4.0 Display *best overall, but requires some rework to use battery monitoring features of the PiJuice mentioned below
- Waveshare 5.5" AMOLED *this is very good screen but the Google Pixel 2 phone mentioned below has a very similar display for the same price (along with everything else you need in a nice package)
- Waveshare 4.3" HDMI(B)
- Adafruit 2.8" Capacitive Touch
- A battery hat, such as:
- PiJuice Battery Hat *I2C pins must be reworked to connect to the Hyperpixel nonstandard I2C breakout pins, unfortunately
- MakerFocus UPS Hat
- Any USB SDR receiver:
- Noelec Nano V3
- Stratux V2 *very low power but hard to find
If running as a front end only, with a separate dump1090 server, the best option is to use an Android phone, such as the Pixel 2, which significantly outperforms a Raspberry Pi 4.
viz1090 has been tested on other boards such as the UP Core and UP Squared, but these boards have poor performance compared to a Raspberry Pi 4, along with worse software and peripheral support, so they are not recommended. viz1090 with a low resolution map will run on these boards or even a Raspberry Pi Zero, so these remain options with some tradeoffs.
Of course, a variety of other devices work well for this purpose - all of the development so far has been done on a touchscreen Dell XPS laptop.
Credits
viz1090 is largely based on dump1090 (Malcom Robb, Salvatore Sanfilippo)