[WORKING] Base Raspbian image to ADSBx feeder. (Using dump1090 SkyView)

Discussion in 'Feeding' started by James, Oct 17, 2018.

  1. James

    James Guest

    I started this with the idea of building a SkyView ADSBx feeder with ease. Unfortunately, FlightAware has purposely made it difficult to setup a feeder that doesn't feed FlightAware using PiAware.

    It is not hard but it does take a lot of steps.

    We will use nano as our editor in terminal.

    Frustrations expressed during this tutorial are my own views on Oliver being employed by FlightAware for some time and not the views of ADSBx. ~ James

    By the end. you will have a dump1090 FlightAware Skyview that feeds ADSBx.

    Screenshot_2018-10-16_21-17-26.png


    First: Getting Raspbian Running

    https://www.raspberrypi.org/downloads/raspbian/

    This was created using Raspbian Stretch Lite. Desktop will also work.

    Unzip the zip file to an .img file and write it to your SD card using etcher.io.

    https://etcher.io/

    Takes 10-15 minutes to write the disk image to the SD card.

    Once it is complete, you will see the written SD card on Windows. Eject it.

    Connect a monitor and keyboard to Pi, put the SD card in it. Power it.

    You'll get a bunch of text and eventually login prompt.

    Default username and password is:

    pi
    raspberry

    Then you'll get a login prompt, if you didn't mess up. :D

    [email protected]:~ $ _

    [OPTIONAL: SKIP IF NO WIFI, USING ETHERNET]

    If you are ever going to use Wi-fi at current location, let's get it setup. You can always do this later if you are hard wired.

    sudo raspi-config

    Type what is above and hit Enter on keyboard.

    You will be greeted with a menu.

    Choose with arrow keys.

    Network Options
    Hit Enter
    Wi-fi

    Hit enter, it will ask you to select your country, SSID, and password.

    Wifi will be setup and you will be sent back out to the main menu. Hit Tab twice to get to Finish and hit Enter on keyboard.

    Phew! Back to the command prompt.

    Type clear and hit Enter on keyboard.

    Let's also enable ssh

    sudo touch /boot/ssh

    And reboot.

    sudo shutdown -r now

    From here on out having putty on Windows working or being able to ssh into the Pi will make your life much easier. You will be able to copy paste the commands and not deal with typos.


    Second: Installing Dump1090

    I'm going to assume that you know to hit Enter after I give commands in italics.

    There are many options for dump1090.

    There is the original, Malcom, et all forks, there is mutability 1.15, and there is FlightAware SkyView.

    All work the same but have different user interfaces.

    Update Raspbian & Install drivers rtl-sdr:

    Make sure we are updated.

    sudo apt update
    sudo apt upgrade


    You may be prompted to hit Y to confirm.

    sudo apt install -y rtl-sdr

    Install Dump1090 (SkyView)

    This is where things start to get a little more complicated. We're going to compile dump1090 from the source code on github.


    --

    Unfortunately FlightAware (or Oliver aka mutability) has stopped work on dump1090 that isn't FlightAware branded. Good for Oliver to get employment from FlightAware!

    Oliver used to release a .deb package to make install easy, but that has even stopped. Thanks FlightAware! Not! <circa 1990>

    Oh well. Such is life these days when a company thinks they own all the ADS-B data in the world.

    I suspect that in the future they will make is even more difficult to get things working without using PiAware or FlightAware code.

    --


    https://github.com/flightaware/dump1090

    Commands to make this get done.

    sudo apt install -y git debhelper cmake doxygen libtecla-dev libusb-1.0-0-dev libncurses5-dev help2man pandoc

    Then we wait ....

    cd /home/pi
    sudo apt-get install -y librtlsdr-dev
    git clone https://github.com/flightaware/dump1090.git
    cd dump1090
    make BLADERF=no


    And then we wait as text scrolls by ....

    Let's create a startup script for dump1090.

    cd /home/pi
    nano start-dump1090.sh


    Replace <latitude> and <longitude> with your latitude and longitude.

    Code:
    #!/bin/bash
    
    LATITUDE=<latitude>
    LONGITUDE=<longitude>
    
    mkdir /var/run/dump1090-data
    
    while true
    do
        /home/pi/dump1090/dump1090 --quiet --gain -10 --modeac --net --lat $LATITUDE --lon $LONGITUDE --write-json /var/run/dump1090-data > /dev/null
        sleep 10
    done
    
    
    CRTL+O to save/write and make it executable.

    chmod +x start-dump1090.sh

    Let's make dump1090 start on boot using the old school method of rc.local.

    sudo nano /etc/rc.local

    Code:
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi
    
    /home/pi/start-dump1090.sh &
    
    exit 0
    
    
    CTRL+O to write/save with nano.

    Reboot and see if it worked.

    sudo shutdown -r now

    At this point you have a working ADS-B receiver outputting Beast/AVR on port 30005 and Basestation on 30003!

    Third: Feeding ADSBx

    This is the easiest part.

    Login to the Pi again however you are doing it, either ssh, putty, mouse and keyboard.

    nc localhost 30003

    You should see Basestation output. Hopefully you are in a busy airspace.

    MSG,8,1,1,A24757,1,2018/10/17,02:45:39.606,2018/10/17,02:45:41.124,,,,,,,,,,,,
    MSG,7,1,1,A24757,1,2018/10/17,02:45:41.073,2018/10/17,02:45:41.124,,8825,,,,,,,,,,
    MSG,8,1,1,A24757,1,2018/10/17,02:45:41.835,2018/10/17,02:45:41.888,,,,,,,,,,,,
    MSG,8,1,1,A6515B,1,2018/10/17,02:45:42.610,2018/10/17,02:45:42.655,,,,,,,,,,,,
    MSG,8,1,1,A6515B,1,2018/10/17,02:45:42.641,2018/10/17,02:45:42.661,,,,,,,,,,,,
    MSG,7,1,1,A6515B,1,2018/10/17,02:45:43.551,2018/10/17,02:45:43.585,,2025,,,,,,,,,,
    MSG,8,1,1,A6515B,1,2018/10/17,02:45:43.571,2018/10/17,02:45:43.590,,,,,,,,,,,,
    MSG,7,1,1,A6515B,1,2018/10/17,02:45:43.873,2018/10/17,02:45:43.912,,2025,,,,,,,,,,

    CTRL+C to close netcat


    Install ADSBx

    git clone https://github.com/adsbxchange/adsb-exchange.git
    cd adsb-exchange
    chmod +x setup.sh
    sudo ./setup.sh

    NOTICE: LEAVE NOTHING BLANK. You must fill in each field or your feeder won't work.

    First screen. Yes. Hit Enter.

    Second screen. Type a name for feeder. Be Creative. It needs to be unique for MLAT server to accept it. Hit Enter.

    Third screen. Type your latitude. Hit Enter.

    Fourth screen. Type your longitude. Hit Enter.

    Fifth screen. Type your altitude. Feet or meters, doesn't matter. Close enough. Hit Enter.

    Sixth screen. Port. 30005 is anonymous. No other port should be used unless you picked and requested a custom port.

    Seventh screen. Confirm. Yes. Enter.

    Task bar progress and 'Setup is now complete.' screen. Hit Enter.

    You may get below error. Everything will still work. I am looking into what this is and why it suddenly appeared with the newest Raspbian. It appears to be from Python.

    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    IndexError: list index out of range



    Reboot.

    sudo shutdown -r now

    Optional: IF YOU WANT SkyView Map served from the Pi.

    sudo apt install -y lighttpd

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


    Code:
    url.redirect += (
      "^/dump1090/$" => "/dump1090/index.html",
      "^/dump1090$" => "/dump1090/index.html"
    )
    
    alias.url += (
      "/dump1090/data/" => "/run/dump1090-data/",
      "/dump1090/" => "/home/pi/dump1090/public_html/"
    )
    
    server.stat-cache-engine    = "disable"
    
    
    sudo service lighttpd force-reload

    A reboot for good measure!

    sudo shutdown -r now


    Point a web browser to the IP of the Pi on your network!

    http://<your_pi_address>/dump1090/index.html

    And that's it!



    General Housekeeping.

    You should change the default login password for the user pi.

    passwd

    You can do other things with a Pi, a feeder doesn't use much CPU/RAM.
     
    Last edited by a moderator: Oct 17, 2018
  2. James

    James Guest

    Joining the ZeroTier ADSBx Network. If you ever need remote help or want me to setup something.


    https://www.zerotier.com/download.shtml

    ===
    Quick Setup

    You should never pipe direct to bash, but sometimes it works in a pinch.

    ===
    curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \
    if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

    OR

    curl -s https://install.zerotier.com/ | sudo bash

    THEN

    sudo zerotier-cli join c7c8172af18c605f

    sudo zerotier-cli status
    sudo zerotier-cli listnetworks


    Then contact me via https://adsbexchange.com/contact/
     
    Last edited by a moderator: Oct 17, 2018