• Stars
    star
    487
  • Rank 90,352 (Top 2 %)
  • Language Tcl
  • License
    BSD 2-Clause "Sim...
  • Created over 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Client-side package and programs for forwarding ADS-B data to FlightAware

PiAware

The basic aim of the piaware package is to forward data read from an ADS-B receiver to FlightAware.

It does this using a program, piaware, aided by some support programs.

  • piaware - establishes an encrypted session to FlightAware and forwards data
  • piaware-config - used to configure piaware like with a FlightAware username and password
  • piaware-status - used to check the status of piaware
  • faup1090 - run by piaware to connect to dump1090 or some other program producing beast-style ADS-B data and translate between its format and FlightAware's
  • fa-mlat-client - run by piaware to gather data for multilateration

This repo is the basis of the piaware Debian install package available from https://flightaware.com/adsb/piaware/

Building from source

This repository provides only part of the overall piaware package. You must also build fa-mlat-client and faup1090 and put them in the right places.

Please use piaware_builder to build the piaware package; this is a mostly automated build that knows how to assemble and build the different parts of the piaware pacakge. It is used to build the Raspbian piaware release packages that FlightAware provides. It should also work on other Debian-based systems.

piaware program

The piaware program establishes a compressed, encrypted TLS connection to FlightAware and authenticates either by MAC address, or by a registered FlightAware username (or email address) and password.

It then starts faup1090 to translate ADS-B data from a raw Beast-format feed on port 30005 to a filtered ADS-B format. The filtered data is uploaded to FlightAware over the previously established TLS connection.

Every five minutes piaware also sends a message containing basic health information about the local machine such as system clock, CPU temperature, CPU load, basic filesystem capacity and system uptime.

Piaware will start the multilateration client fa-mlat-adept on request. fa-mlat-client extracts raw messages from port 30005 and selectively forwards them by UDP to the FlightAware servers. UDP is used as this message forwarding is time-sensitive, but it's not too important if some messages get dropped. Multilateration control messages are sent over the main piaware TCP connection.

Piaware uses several techniques to keep the connection established and disconnect and reconnect if something goes wrong.

piaware-config program

piaware-config provides a way for you to configure piaware's settings to control authentication, updates, and multilateration.

The configuration is read once when piaware starts. If you change piaware's configuration, you should then restart piaware by:

$ sudo service piaware restart

Displaying the current configuration

Running piaware-config with no arguments will show the current configuration:

$ piaware-config

The "-showall" argument will show all settings, including those that are using the default values:

$ piaware-config -showall

Configuring updates

To configure whether piaware will accept requests for automatic (requested by FlightAware) or manual (requested by you via the FlightAware website control panel) updates and restarts:

# disable auto updates:
$ sudo piaware-config allow-auto-updates no
# disable manual updates:
$ sudo piaware-config allow-manual-updates no

Updates default to enabled for Piaware sdcard images, and disabled for package installs.

Configuring multilateration support

Multilateration data is sent to FlightAware by default. To disable it:

# disable multilateration:
$ sudo piaware-config allow-mlat no

Configuring multilateration results

By default, multilateration positions resulting from the data that you feed to FlightAware are returned to you by sending them to the local dump1090 process on port 30104; dump1090 will then include them on the web map it generates.

There are two controls for this. There is an overall enable/disable control that can be used to entirely disable returning results if they are not needed:

$ sudo piaware-config mlat-results no

If you want to send the results elsewhere, you can modify where they are sent and the format used:

  # Connect to localhost:30104 and send multilateration results in Beast format.
  # Listen on port 310003 and provide multilateration results in Basestation format to anyone who connects

$ sudo piaware-config mlat-results-format "beast,connect,localhost:30104 basestation,listen,31003"

The default configuration now connects to port 30104, not 30004. The default FlightAware dump1090 configuration has been updated to match this. This change is to avoid accidentally feeding mlat results to an older dump1090 that is not mlat-aware and might end up feeding the results to places you don't want to feed them to. If you really do want to feed to port 30004, and you know that's not going to cause problems with mlat results going where they shouldn't, you can return to the older behaviour by:

$ sudo piaware-config mlat-results-format "beast,connect,localhost:30004"

piaware-status program

piaware-status will examine your system and try to figure out what's going on. It will report on whether dump1090, faup1090 and piaware are running or not and it will identify what program, if any, is producing data on port 30005 and whether or not piaware is connected to FlightAware.

log file

piaware logs to the file /var/log/piaware.log. This is rotated weekly; older logs are at /var/log/piaware.log.0, /var/log/piaware.log.1, etc.

fa_adept_client package

The fa_adept_client package provides a class library for being a FlightAware aviation data exchange protocol (ADEPT) client.

fa_adept_config package

The fa_adept_config package provides functions for reading and writing the piaware config file.

piaware package

The piaware package provides functions used by various of the piaware programs.

systemd service file

piaware is started as a systemd service ("piaware.service"). It can be started and stopped with:

sudo systemctl start piaware
sudo systemctl stop piaware
sudo systemctl restart piaware

The current state can be checked with:

systemctl status piaware

FlightAware

FlightAware has released over a dozen applications (under the free and liberal BSD license) into the open source community. FlightAware's repositories are available on GitHub for public use, discussion, bug reports, and contribution. Read more at https://flightaware.com/about/code/

More Repositories

1

Tcl-bounties

Bounty program for improvements to Tcl and certain Tcl packages
103
star
2

speedtables

Speed tables is a high-performance memory-resident database. The speed table compiler reads a table definition and generates a set of C access routines to create, manipulate and search tables containing millions of rows. Currently oriented towards Tcl.
Tcl
66
star
3

piaware_builder

Debian package builder for piaware
Shell
60
star
4

tclreadline

GNU readline for interactive Tcl shells
Shell
56
star
5

cpptcl

C++ library for interoperability between C++ and TCL
C++
53
star
6

adsb-flight-scanner-android

Open Source ADS-B aircraft position tracker on the 1090 MHz (ES) and 978 MHz (UAT) bands for Android devices
Java
53
star
7

fa-grafana

Grafana dashboards for PiAware
Shell
38
star
8

yajl-tcl

Tcl bindings for Yet Another JSON Library
Tcl
37
star
9

firehose_examples

Example programs that demonstrate how to use the FlightAware Firehose service
Java
35
star
10

scotty

A Tcl extension for building network management (SNMP, ICMP, UDP, DNS) applications
C
32
star
11

Pgtcl

Tcl client side interface to PostgreSQL (libpgtcl)
C
31
star
12

TclProDebug

Upgrade of debugger from classic TclPro to Tcl 8.5+
Tcl
30
star
13

flightxml3_examples

Example programs for FlightXML3
C#
30
star
14

firestarter

Getting started with FlightAware Firehose
Python
29
star
15

tclx

Official home of the TclX extension for Tcl
C
29
star
16

beast-splitter

Utility that distributes Mode-S Beast output to multiple clients
C++
28
star
17

mdsplib

Updated METAR Decoder Software Package Library
C
24
star
18

aeroapps

Getting started with FlightAware AeroAPI
Python
22
star
19

tohil

a feathered serpent, delightful integration between python, the serpent, and TCL, the feather...
C
21
star
20

swift-tcl

Swift class library that bridges between Swift and Tcl
Swift
16
star
21

tcllauncher

This is tcllauncher, a launcher program for Tcl applications.
M4
16
star
22

tcl.gd

Feature-complete Tcl interface to GD graphics drawing library
M4
16
star
23

tclrmq

Pure Tcl Library for RabbitMQ
Tcl
13
star
24

mongotcl

Tcl interface to the MongoDB database
C
13
star
25

flightxml2-client-ruby

FlightAware FlightXML Ruby Client
Ruby
13
star
26

dump1090_builder

Debian package builder for dump1090
12
star
27

kafkatcl

Tcl interface to the Apache Kafka distributed messaging system
C
12
star
28

fids_frontend

Frontend FIDS service for FlightAware sample apps
JavaScript
12
star
29

tclcurl-fa

TclCurl package to provide Curl support in Tcl.
C
12
star
30

piaware-support

Configuration support package for PiAware sdcard images
PostScript
11
star
31

tclbsd

A Tcl package for interfacing to various BSD UNIX system calls and library routines
M4
10
star
32

casstcl

Tcl language interface to the Cassandra database
C
9
star
33

pg-deltaflood

stream changes to a PostgreSQL database in an easily parsed format for mirroring to a third party application or database
C
9
star
34

piaware-web

Landing/status webpage for PiAware sdcard images
JavaScript
9
star
35

FlightXML-FIDS-PHP

This is an example Flight Information Display System (FIDS) using PHP and FlightXML, the FlightAware API.
PHP
8
star
36

tclspline

This is tclspline, a direct Tcl interface to spline routines extracted from Tk
Shell
8
star
37

piaware-gui

Tcl/Tk GUI for PiAware
Tcl
7
star
38

memcached-for-Tcl

memcached client library for Tcl based applications
M4
7
star
39

tcl-jira-api

Tcl package to interface with the JIRA REST API
Tcl
6
star
40

tcl-apns

Tcl methods for interfacing with the Apple Push Notification Service (APNS) for iPhone/iOS alerts
Tcl
6
star
41

tclsyslogd

BSD syslogd with integrated Tcl interpreter that can look at each message received
C
5
star
42

TclTweezer

An instrument for examining and modifying the internal state of Tcl objects
C
4
star
43

readonly-pi

Run a Pi with a readonly sdcard
Shell
4
star
44

tcl-ip-console

provides telnet access to the Tcl interpreter of long-running, event-driven programs
Tcl
4
star
45

fa_schema_tools

Schema tools for PostgreSQL including comparing two database schema for differences, making sure all tables have a primary or unique key, and more...
Tcl
4
star
46

flightxml-client-ruby

Ruby bindings for FlightXML -- FlightAware's API for accessing real-time and historical aviation data
Ruby
4
star
47

syslogbox

Tcl code libraries to go with tclsyslogd
Tcl
4
star
48

flightaware.github.com

website for flightaware.github.com
HTML
3
star
49

zookeepertcl

Tcl interface to Apache zookeeper distributed coordination system
M4
3
star
50

tclbench

a few simple benchmarks for Tcl interpreters
Tcl
3
star
51

socketservertcl

Basic socketserver support in Tcl inspired by libancillary
M4
3
star
52

tcl-udp-examples

Demos/examples using UDP from Tcl with Tnm and tcludp
Tcl
2
star
53

swift-tcl-extension-demo

Demo Tcl extension implemented in Swift
Swift
2
star
54

swift-tcl8.6

Swift modulemap for Tcl8.6
C
2
star
55

piaware-configurator

Flask endpoints to configure and control PiAware over HTTP
Python
2
star
56

piaware-exporter

Prometheus metrics exporter for PiAware
Python
2
star
57

speedtable-tools

Tools for speedtables
Tcl
2
star
58

baremaps-exporter

A fast golang exporter for tilesets created with Apache Baremaps
Go
2
star
59

tcl-fogbugz-api

Tcl package for using the FogBugz API
Tcl
2
star
60

alerts_frontend

Frontend Alerts service for FlightAware's AeroAPI
JavaScript
2
star
61

tsvcut-c

cut out specific fields from a TSV (tab separated values) file containing alternating key-value pairs
C
2
star
62

speedbag

a package for providing accelerated C-based routines for TSV parsing into an array
M4
2
star
63

jsmin-tcl

A Tcl JavaScript minifier inspired by Douglas Crockfordโ€™s JSMin
Tcl
2
star
64

tclgdb

Use gdb breakpoints for Tcl source with Tcl_CreateTrace
M4
2
star
65

tcltls-rebuild

Rebuild of Debian tcl-tls package with --enable-ssl-fastpath
C
1
star
66

prometheus-tcl

Pure Tcl Prometheus Client Library
Tcl
1
star
67

piaware-ble-connect

Bluetooth Low Energy Service for PiAware SD card images
Python
1
star
68

TclXML

Tcl package that wraps the functionality of libxml2 and libxslt
C
1
star
69

target-eye

REST API For File-Based Service Discovery in Prometheus
Python
1
star
70

tcljs

Tcl extension to execute JavaScript using the SpiderMonkey Javascript interpreter
C
1
star
71

pltcl94

C
1
star
72

tclpacparser

Tcl bindings for pacparser, a proxy auto-config (PAC) file parser and proxy lookup tool
Shell
1
star
73

starch

Framework for runtime selection of architecture-dependent code
C
1
star
74

tsp_examples

Examples using the Tcl Static Prime compiler
Tcl
1
star
75

swift-speedtables

Framework for creating multi-way indexed tables in Swift, similar to Speedtables in Tcl
Swift
1
star
76

tclsass

Tcl interface to the libsass library
M4
1
star
77

swift-tcl-demo

Demonstration application for Swift and Tcl integration
Swift
1
star
78

tcl-otp

A Pure TCL library providing the HOTP and TOTP Algorithms
Tcl
1
star
79

lttngtcl

LTTng trace provider which connects to Tcl_CreateTrace
M4
1
star
80

pltcl96

Base for standalone pl/tcl from Postgresql 9.6
C
1
star
81

egm2008

Earth Gravitational Model (EGM2008)
Rust
1
star