One Pi, Two Dongles, Two Maps, Two Receivers

REV 2, dated May 12, 2018
The first post describes step-by-step method for dump1090-mutability only.
Now added another post describing step-by-step method for dump1090-fa
Scroll down few posts to see it OR directly jump to it Click Here for DUMP1090-FA

REV 1, dated April 15, 2018

Credits:

- Oliver Jowett @obj
- yxespotter @yxespotter
- abcd567 @abcd567

INTRODUCTION

If you are looking for a possibility to run more than one DVB-T (or Pro Stick) receiver on a Pi, you have arrived at the right thread.

Some examples which can advantageously use this method are:

  1. To cover different sides of a house with different sets of “Antenna+DVB-T” placed at two different sides of the house.
  2. One Antenna+DVB-T set to receive nearby planes, while other “Antenna+DVB-T” set to receive far away palnes.

To do this you dont have to install one more dump1090-mutability or any other decoder. You can use the same dump1090-mutability installation to run a 2nd instance of it for use with 2nd set of Antenna+DVB-T.

This method basically consists of following:

(1) Serializing dongles so that they are picked by their respective instances of dump1090.

(2) Creating 2nd copies of following two files with a different name for starting, initializing, and configuring 2nd instance.

# Original File Copy Created
1 /etc/init.d/dump1090-mutability /etc/init.d/dump1090-mut-2
2 /etc/default/dump1090-mutability /etc/default/dump1090-mut-2

.

(3) Creating separate map for 2nd dongle by making a copy of folder containing map files, and adding symlinks to these copied files from 2nd instance of dump1090.
.

# Original Folder Copied Folder
1 /usr/share/dump1090-mutability /usr/share/dump1090-mut-2

.

(4) Giving commands to implement changes and make 2nd instance autostart at boot.

DETAILED PROCEDURE

STEP-1: Serialize Dongles

Serialize two dongles (DVB-T / ProStick), one serial number 00000000, other serial number 00000001

  1. Stop dump1090-mutability.
  2. Plug in one Dongle into Pi, serialize it, and put sticker of serial number.
  3. Unplug first dongle, plugin 2nd dongle and serialize it, and put sticker of serial number.

How to Change Serial Number of Dongle - ADSB 1090 + UAT 978 Dongles Plugged Into Same Pi

STEP-2: Create 2nd instance of dump1090-mutability which will use 2nd Dongle.

(1) Make a copy of file /etc/init.d/dump1090-mutability with name /etc/init.d/dump1090-mut-2. After creating copy, edit it.


cd /etc/init.d     
sudo cp dump1090-mutability dump1090-mut-2     
sudo nano dump1090-mut-2     

Make changes as shown in RED, and save file

1

.

(2) Make a copy of file /etc/default/dump1090-mutability with name /etc/default/dump1090-mut-2. After creating copy, edit it.


cd /etc/default    
sudo cp dump1090-mutability dump1090-mut-2    
sudo nano dump1090-mut-2     

Make changes as shown below in RED. Save file.

1

.

STEP-3: Enable 2 Separate Maps for 2 Dongles.

Map 1 at < IP OF PI >/dump1090/gmap.html
Map 2 at < IP OF PI >/dump1090-2/gmap.html

(1) Make a copy of FOLDER /usr/share/dump1090-mutability with name /usr/share/dump1090-mut-2. This folder contains folder html which contains all map files.


cd /usr/share    
sudo cp -r dump1090-mutability dump1090-mut-2    

(2) Edit file /etc/lighttpd/conf-enabled/89-dump1090.conf to ADD code for dump1090-mutability-2


sudo nano /etc/lighttpd/conf-enabled/89-dump1090.conf      

(3) ADD CODE: Copy original two blocks of code in file (shown BLACK) and paste below original code (shown RED).
(4) In the pasted code (RED), Add -2 (shown GREEN). Save file

1

.

STEP-4: IMPORTANT STEP, DO NOT MISS.

Implement changes and make 2nd instance Auto-Start at reboot.

sudo update-rc.d dump1090-mut-2 defaults       
sudo systemctl daemon-reload      
sudo reboot       

MAP-1

http:// < IP-OF-PI >/dump1090/gmap.html

.

MAP-2

http:// < IP-OF-PI >/dump1090-2/gmap.html


.

6 Likes

Hi abcd,
try making a 10 seconds delay script for the second instance to run and place the start job in cron

    sudo nano /usr/local/bin/start_dump1090-2_delay.sh

inside the empty file

sleep 10
sudo systemctl restart dump1090-mutability-2

save this ctrl O

Then make executable

   sudo chmod 0755 /usr/local/bin/start_dump1090-2_delay.sh

Then enter cron job to run at reboot using

crontab -e

enter this line

@reboot /usr/local/bin/start_dump1090-2_delay.sh

save and exit cron.

See if that cures that issue abcd

Regards,

Mike

3 Likes

Thank you Mike. Seems a viable solution.
I am away from my Desktop. Will try it tonight or tomorrow.

  1. Revised first post yesterday: updated/revamped.
    Also added following command in STEP-4 to make 2nd instance of dump1090-mutability to AutoStart at boot/reboot.

    sudo update-rc.d dump1090-mut-2 defaults

  2. Have to try 2nd Dongle with dump1090-fa also. Hopefully this method should work with it also, after replacing -mutability by -fa, and mut-2 by fa-2 in files and command for 2nd instance. Will try it sometime this week.

1 Like

Another EXCELLENT post @abcd567.

Thanks!!!

So…

!: how does this affect your feed to FA???

2: How does this affect your pi, power wise???

3: This can be used with ADSB Receiver (Joe) scripts?

4: How does this work with the graphs used in above 1090 Piaware system??

And of course, the same result could be obtained FA wise, if they would let you combine 2 receivers, at the same location, into on set of FA id data. You could have one receiver set up for close tracking and one receiver set up for long distance tracking… @David Baxter :wink:

The 2nd instance does NOT contribute to any of the above. The reason is that to avoid clash between two instances, the 2nd instance has been deliberately set to use ALL PORTS DIFFERENT FROM DEFAULT PORTS used by 1st instance (Please see below). As the piaware+other data feeders and graphs use default ports, these go well with 1st instance but cannot have any connection to 2nd instance.

1

.

The workaround for this is to creat a pipe between two instances and transfer 2nd instance data to first instance through this pipe. The 1st instance then merge both data and feed the merged data to sites and graphs. Merging of two receivers data is not suitable for FA MLAT, and their servers will soon detect that the feed is a merged feed, and will remove Pi from MLAT .

How to create a “pipe” between two instances to MERGE their data (UNTESTED)

CAUTION: BY MERGING YOU WILL BREAK MLAT

Create a file merge.sh

cd ~/
sudo nano merge.sh

In this file copy paste this code:


#!/bin/sh
while true
  do
    sleep 30
     /bin/nc 127.0.0.1 31005 |  /bin/nc  127.0.0.1 30004
  done

Save (Ctrl+o) and close (Ctrl+x)
Make file executable


sudo chmode +x merge.sh   

To auto start merging


sudo nano /etc/rc.local

#Add following line just above single-worded last line (i.e. above exit0)

/home/pi/merge.sh &

Save (Ctrl+o) and Close (Ctrl+x)
Now reboot Pi


sudo reboot

.

As far as I know, the Dongle takes about 300mA. Adding 2nd dongle will therefore increase power used by 300mA. The 300mA figure is an average value. Exact value depends on type of dongle and message rate.

My CPU Usage for each instance is around 25 ~ 35%. It depends upon number of messages handled.

When you say it will break MLAT, is that on both instances or only the 2nd one? Work around for MLAT, any way of disabling it for the 2nd instance or you bite the bullet and disable mlat for the FA site of the 1st instance.

1 Like

Normally the two dvb/dump work in isolation, as shown in diagram below (ignore pipe in the diagram as it is normally not there).

If a pipe is established as shown in block diagram below, dump1 acts additionally as merger.

Sorry NO MLAT if merged using the pipe.

2 Likes

@jlb56
It just occured to me that like dump1090, why we don’t/can’t run a 2nd instance of piaware data feeder, and configure it to get data from 2nd instance of dump1090? This will make two completely independent stations (both MLAT enabled) running on single Pi.

2 Likes

If you feed the primary(from the secondary) dump instance using a protocol that doesn’t provide timing information, it could also work.
I feed two DUMP978 instances into one dump1090.
I believe that the AVR protocol doesn’t provide timing information.

This would be useful, if say the primary was a vertical antenna(all a round reception) and the secondary was directional (A yagi or skycatcher etc). For me, pointing something away from the NYC Hudson river traffic would be useful, if I wasn’t so low and blocked towards the south and east.

2 Likes

@abcd567
I know that feeding flarm with rpi is not allowed due to proprietary flarm-protocoll or whatever, but wouldn´t this 2 sticks+one rpi guide be perfect for an adsb+flarm-feeder? One stick for 1090mhz adsb and one stick for 868mhz flarm feedding to ogn http://live.glidernet.org
This should cover the hole airtraffic… :wink:

1 Like

FLARM is encrypted:

So…

Article 6 of EU Directive 2013/40/EU[13] states that “[…] intercepting, by technical means, non-public transmissions of computer data to, from or within an information system, including electromagnetic emissions from an information system carrying such computer data, intentionally and without right, is punishable as a criminal offence […]”. “Information system” is defined in Article 2 as “a device or group of interconnected or related devices, one or more of which, pursuant to a programme, automatically processes computer data, as well as computer data stored, processed, retrieved or transmitted by that device or group of devices for the purposes of its or their operation, use, protection and maintenance”.
The Convention on Cybercrime has a similar text in its Article 3. The Convention on Cybercrime has been ratified by most signatory countries.

DUMP1090-FA

The method for dump1090-fa is different because:

  1. File /etc/init.d/dump1090-fa does not exist
  2. File /etc/default/dump1090-fa is in a different format. Further, in the Piaware image, it is over-written by piaware-config at restart of piaware or reboot of Pi.

In view of above, following method is adopted to run second Dongle with 2nd instance of dump1090-fa.

DETAILED PROCEDURE

STEP-1: Serialize Dongles

Serialize two dongles (DVB-T / ProStick), one serial number 00000000, other serial number 00000001

Stop dump1090-mutability.
Plug in one Dongle into Pi, serialize it, and put sticker of serial number.
Unplug first dongle, plugin 2nd dongle and serialize it, and put sticker of serial number.

How to Change Serial Number of Dongle - ADSB 1090 + UAT 978 Dongles Plugged Into Same Pi

STEP-2: Create 2nd instance of dump1090-fa which will use 2nd Dongle.

(1) Create a blank file /etc/init.d/dump1090-fa-2

sudo touch /etc/init.d/dump1090-fa-2

(2) Make new file executable

sudo chmod +x /etc/init.d/dump1090-fa-2   

(3) Open newly created blank file to edit

sudo nano /etc/init.d/dump1090-fa-2   

(4) Copy-paste following code in new blank file

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dump1090-mutability
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: dump1090 daemon (mutability variant)
# Description:       Receives ADS-B messages from a RTLSDR dongle
#                    and makes them available to other applications via
#                    a variety of network protocols.
### END INIT INFO

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="dump1090-fa-2 daemon"
NAME=dump1090-fa-2
DAEMON=/usr/bin/dump1090-fa
ARGS="--measure-noise "
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# work out daemon args

# sanitize missing settings
[ -z "$START_DUMP1090" ] && START_DUMP1090=no
[ -z "$DUMP1090_USER" ] && DUMP1090_USER="missing-DUMP1090_USER-setting-in-config"
[ -z "$RAW_INPUT_PORT" ] && RAW_INPUT_PORT=0
[ -z "$RAW_OUTPUT_PORT" ] && RAW_OUTPUT_PORT=0
[ -z "$SBS_OUTPUT_PORT" ] && SBS_OUTPUT_PORT=0
[ -z "$BEAST_INPUT_PORT" ] && BEAST_INPUT_PORT=0
[ -z "$BEAST_OUTPUT_PORT" ] && BEAST_OUTPUT_PORT=0
[ -z "$NET_BUFFER" ] && NET_BUFFER=0
[ -z "$JSON_INTERVAL" ] && JSON_INTERVAL=0
[ -z "$MAX_RANGE" ] && MAX_RANGE=300

# receiver:
NICELEVEL="--nicelevel -5"
case "x$DEVICE" in
 x|x0) ARGS="$ARGS --net" ;;
 xnone) ARGS="$ARGS --net-only"; NICELEVEL="" ;;
 *) ARGS="$ARGS --net --device-index $DEVICE" ;;
esac
case "x$GAIN" in
 x|xmax) ;;
 xagc) ARGS="$ARGS --gain -10" ;;
 *) ARGS="$ARGS --gain $GAIN" ;;
esac
if [ -n "$PPM" ]; then ARGS="$ARGS --ppm $PPM"; fi

# decoder:
if [ "x$FIX_CRC" = "xyes" ]; then ARGS="$ARGS --fix"; fi
if [ -n "$LAT" ]; then ARGS="$ARGS --lat $LAT"; fi
if [ -n "$LON" ]; then ARGS="$ARGS --lon $LON"; fi
ARGS="$ARGS --max-range $MAX_RANGE"

# net:

ARGS="$ARGS \
--net-ri-port $RAW_INPUT_PORT --net-ro-port $RAW_OUTPUT_PORT \
--net-bi-port $BEAST_INPUT_PORT --net-bo-port $BEAST_OUTPUT_PORT \
--net-sbs-port $SBS_OUTPUT_PORT"
if [ -n "$NET_HEARTBEAT" ]; then ARGS="$ARGS --net-heartbeat $NET_HEARTBEAT"; fi
if [ -n "$NET_OUTPUT_SIZE" ]; then ARGS="$ARGS --net-ro-size $NET_OUTPUT_SIZE"; fi
if [ -n "$NET_OUTPUT_INTERVAL" ]; then ARGS="$ARGS --net-ro-interval $NET_OUTPUT_INTERVAL"; fi
if [ "$NET_BUFFER" -le "65536" ]; then ARGS="$ARGS --net-buffer 0"
elif [ "$NET_BUFFER" -le "131072" ]; then ARGS="$ARGS --net-buffer 1"
elif [ "$NET_BUFFER" -le "262144" ]; then ARGS="$ARGS --net-buffer 2"
else ARGS="$ARGS --net-buffer 3"; fi
if [ -n "$NET_BIND_ADDRESS" ]; then ARGS="$ARGS --net-bind-address $NET_BIND_ADDRESS"; fi

# misc:
if [ -n "$STATS_INTERVAL" ]; then ARGS="$ARGS --stats-every $STATS_INTERVAL"; fi
if [ -n "$JSON_DIR" ]; then ARGS="$ARGS --write-json $JSON_DIR"; fi
if [ -n "$JSON_INTERVAL" ]; then ARGS="$ARGS --write-json-every $JSON_INTERVAL"; fi
case "x$JSON_LOCATION_ACCURACY" in
  xexact) ARGS="$ARGS --json-location-accuracy 2" ;;
  xapproximate) ARGS="$ARGS --json-location-accuracy 1" ;;
  *) ARGS="$ARGS --json-location-accuracy 0" ;;
esac

if [ "x$LOG_DECODED_MESSAGES" != "xyes" ]; then ARGS="$ARGS --quiet"; fi

if [ -n "$EXTRA_ARGS" ]; then ARGS="$ARGS $EXTRA_ARGS"; fi

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started

        if [ "x$START_DUMP1090" != "xyes" ]; then
            log_warning_msg "Not starting $NAME daemon, disabled via /etc/default/$NAME"
            return 2
        fi

        start-stop-daemon --start --quiet --pidfile $PIDFILE --user "$DUMP1090_USER" --exec $DAEMON --test > /dev/null \
                || return 1

        # create JSON_DIR with the appropriate permissions
        # (it is on /run by default, so will be lost on reboot)
        if [ "x$JSON_DIR" != "x" ]; then
           if [ ! -e $JSON_DIR ]; then
             (mkdir $JSON_DIR && chmod 0755 $JSON_DIR && chown $DUMP1090_USER $JSON_DIR) || log_warning_msg "Failed to create $JSON_DIR"
           fi
        fi

        # create logfile with the appropriate permissions if not already there
        touch $LOGFILE
        chown "$DUMP1090_USER":root $LOGFILE

        start-stop-daemon --start $NICELEVEL --quiet --pidfile $PIDFILE --user "$DUMP1090_USER" --chuid "$DUMP1090_USER" --make-pidfile --background --no-close --exec $DAEMON -- \
                $ARGS >>$LOGFILE 2>&1 \
                || return 2
        sleep 1
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE --user "$DUMP1090_USER" --exec $DAEMON
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        sleep 1
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  status)
        status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac

:


.

(5) Save file (Ctrl+o) and close it (Ctrl+x)

(6) IMPORTANT : Enable Daemon dump1090-fa-2 to autostart at boot.

sudo update-rc.d dump1090-fa-2 defaults   
sudo systemctl daemon-reload    

(7) Create a new blank file /etc/default/dump1090-fa-2

sudo nano /etc/default/dump1090-fa-2

(8) Copy-paste following code into this blank file, and Save (Ctrl+o)

# dump1090-fa-2 configuration file
# This is a POSIX shell fragment.
# You can edit this file directly.

# Set to "yes" to start dump1090 on boot.
START_DUMP1090="yes"

# User to run dump1090 as.
DUMP1090_USER="dump1090"

# Logfile to log to
LOGFILE="/var/log/dump1090-fa-2.log"

#
# Receiver options
#

# RTLSDR device index or serial number to use
# If set to "none", dump1090 will be started in --net-only mode
DEVICE="1"

# RTLSDR gain in dB.
# If set to "max" the maximum supported gain is used.
# If set to "-10" (the default) the tuner AGC is used to set the gain.
GAIN="-10"

# RTLSDR frequency correction in PPM
PPM="0"

#
# Decoding options
#

# If yes, fixes messages with correctable CRC errors.
FIX_CRC="yes"

# If set, supplies a reference location for local position decoding.
LAT=""
LON=""

# If set, provides the absolute maximum receiver range used to
# filter bad position reports, and to determine when local position
# decoding is safe to use. Specify this in nautical miles (NM).
MAX_RANGE="300"

#
# Networking options
#

# Port to listen on for raw (AVR-format) input connections. 0 disables.
RAW_INPUT_PORT="31001"

# Port to listen on for raw (AVR-format) output connections. 0 disables.
RAW_OUTPUT_PORT="31002"

# Port to listen on for SBS-format output connections. 0 disables.
SBS_OUTPUT_PORT="31003"

# Port to listen on for Beast-format input connections. 0 disables.
BEAST_INPUT_PORT="31004,31104"

# Port to listen on for Beast-format output connections. 0 disables.
BEAST_OUTPUT_PORT="31005"

# TCP heartbeat interval in seconds. 0 disables.
NET_HEARTBEAT="60"

# Minimum output buffer size per write, in bytes.
NET_OUTPUT_SIZE="500"

# Maximum buffering time before writing, in seconds.
NET_OUTPUT_INTERVAL="1"

# TCP buffer size, in bytes
NET_BUFFER="262144"

# Bind ports on a particular address. If unset, binds to all interfaces.
# This defaults to binding to localhost. If you need to allow remote
# connections, change this.
#NET_BIND_ADDRESS="127.0.0.1"

#
# Misc options
#

# Interval (in seconds) between logging stats to the logfile. 0 disables.
STATS_INTERVAL="3600"

# Path to write json state to (for use with an external webserver). Blank disables.
JSON_DIR="/run/dump1090-fa-2"

# Interval between writing json state (in seconds). 0 disables.
JSON_INTERVAL="1"

# Accuracy of receiver location to write to json state, one of "exact" / "approximate" / "none"
JSON_LOCATION_ACCURACY="approximate"

# Set to yes to log all decoded messages
# This can get large fast!
LOG_DECODED_MESSAGES="no"

# Additional options that are passed to the Daemon.
EXTRA_ARGS=""
NET_BIND_ADDRESS=""

.

(9) The file /etc/default/dump1090-fa-2 is configuration file for dump1090-fa-2.
Add your required Gain, Latitude and Longitude in it in following lines:

# RTLSDR gain in dB.
# If set to "max" the maximum supported gain is used.
# If set to "-10" (the default) the tuner AGC is used to set the gain.
GAIN="-10"


# If set, supplies a reference location for local position decoding._
LAT=""
LON=""

STEP-3: Enable 2 Separate Maps for 2 Dongles.

Map 1 at < IP OF PI >/dump1090-fa/
Map 2 at < IP OF PI >/dump1090-fa-2/

(1) Make a copy of FOLDER /usr/share/dump1090-fa with name /usr/share/dump1090-fa-2. This folder contains folder html which contains all map files.

cd /usr/share    
sudo cp -r dump1090-fa dump1090-fa-2    

(2) Create new file /etc/lighttpd/conf-available/89-dump1090-fa-2.conf

sudo nano /etc/lighttpd/conf-available/89-dump1090-fa-2.conf  

(3) Copy-paste following code in the newly created blank file 89-dump1090-fa-2.conf

# Allows access to the static files that provide the dump1090 map view,
# and also to the dynamically-generated json parts that contain aircraft
# data and are periodically written by the dump1090 daemon.


alias.url += (
  "/dump1090-fa-2/data/" => "/run/dump1090-fa-2/",
  "/dump1090-fa-2/" => "/usr/share/dump1090-fa-2/html/"
)


# redirect the slash-less URL
url.redirect += (
  "^/dump1090-fa-2$" => "/dump1090-fa-2/"
)

.
(4) Save file (Ctrl+o) and close (Ctrl+x)

(5) IMPORTANT : Enable lighttpd module dump1090-fa-2

sudo lighty-enable-mod dump1090-fa-2   
sudo /etc/init.d/lighttpd force-reload   

(6) REBOOT PI

MAP-1

http:// < IP-OF-PI >/dump1090-fa/

MAP-2

http:// < IP-OF-PI >/dump1090-fa-2/

Very interesting. My knowledge of Linux is about nil as of right now. My dongles I have serialized them a while back. I thought about running the second (rtl-sdr.com V3) for 978 operations but in the US I dont think its available. I also thought is it possible to run ACARSDECO2 or DUMP VDL2.

Uat978 is only used in the U.S.A…
It is fairly simple to add to an RPI. Joe’s scripts make it really easy
https://www.adsbreceiver.net

So the Flarm data in FR24 and Planefinder are illegal??
Whats the difference when I have my own RPI receiving flarm?
The Flarm-guys dont get my money - thats all.
http://wiki.glidernet.org/wiki:raspberry-pi-installation

From Wikipedia, regarding FLARM’s protocol:

"The FLARM radio protocol has always been encrypted, which is reasoned by the manufacturer to ensure the integrity of the system and also because of privacy and security considerations. Version 4 used in 2008 and Version 6 used in 2015 were reverse engineered despite its encryption.[11] [12]However, FLARM changes the protocol on a regular basis to add functionality and protect security[citation needed].

The decryption of the FLARM radio protocol might be illegal, especially in EU countries. Article 6 of EU Directive 2013/40/EU[13] states that “[…] intercepting, by technical means, non-public transmissions of computer data to, from or within an information system, including electromagnetic emissions from an information system carrying such computer data, intentionally and without right, is punishable as a criminal offence […]”. “Information system” is defined in Article 2 as “a device or group of interconnected or related devices, one or more of which, pursuant to a programme, automatically processes computer data, as well as computer data stored, processed, retrieved or transmitted by that device or group of devices for the purposes of its or their operation, use, protection and maintenance”. The Convention on Cybercrime[14] has a similar text in its Article 3. The Convention on Cybercrime has been ratified by most signatory countries.[15] It is questionable, however,[citation needed] if encrypted traffic advisory data, published in agreement of the operator to be received by an undetermined number of other aviation participants, enforces cybercrime data protection claims if the data is being decrypted solely for the purpose of nearby traffic advisory by third party systems.

The radio protocol has been criticised for its proprietary encryption, including a petition encouraging a change to an open protocol[16]. It has been argued that encryption increases processing time and contradicts the goal to increase aviation safety due to a closed monopoly market, because an open protocol could enable third party manufacturers to develop compatible devices, spreading the use of interoperable traffic advisory systems. FLARM Technology opposed these claims as published on the petition page and published a white paper[17] explaining the design of the system. They offer the technology to third parties[18][19], which requires the implementation of the OEM circuit board in compatible devices. Radio protocol specifications and crypto keys are not shared to third party manufacturers.

While the FLARM serial data protocol is public, the prediction engine of FLARM is patented by Onera (France)[20] and proprietary. It is licensed to manufacturers by FLARM Technology in Switzerland."

(1) INDEPENDENT SETUP OF 2 INSTANCES OF DUMP1090

.

(2) AGGREGATED SETUP OF 2 INSTANCES OF DUMP1090

NOTE :
MLAT SHOULD BE DISABLED IF AGGREGATION IS USED
(MLAT gets confused by two receivers data in one feed, gives erroneous results, and ultimately crashes).

.

AGGREGATION METHOD (Creating Data “Pipe”):

(1) Install netcat

sudo apt-get update
sudo apt-get install netcat

.

(2) Create a file named mypipe.sh

sudo nano mypipe.sh   

.

(3) Copy-paste any one of the following two codes (Do NOT copy-paste both):

(a) For Beast format

#!/bin/sh  
while true  
  do  
    sleep 30  
    nc 127.0.0.1 31005 | nc 127.0.0.1 30004  
  done

.

(b) For AVR format

#!/bin/sh  
while true  
  do  
    sleep 30  
    nc 127.0.0.1 31002 | nc 127.0.0.1 30001  
  done

.

(4) Save file (Ctrl+o) and close (Ctrl+x)

(5) Make file executable

sudo chmod +x mypipe.sh

.

(6) Run the aggregation script mypipe.sh

./mypipe.sh & disown  
2 Likes