Difference between revisions of "DreamCatcher"

From RadioNerds
Jump to navigation Jump to search
Line 374: Line 374:
  
 
====Command Help====
 
====Command Help====
[Skylark][outernet@outernet:/usr/sbin]$ /usr/sbin/ondd -h
+
<nowiki>[Skylark][outernet@outernet:/usr/sbin]$ /usr/sbin/ondd -h
:00:11:21.099 [main] Unable to load config: /etc/ondd.conf (null)
+
00:11:21.099 [main] Unable to load config: /etc/ondd.conf (null)
:Usage: ondd  
+
Usage: ondd  
::--cfg-file CONFIG_FILE override default config file location
+
--cfg-file CONFIG_FILE override default config file location
::--pid-file PID_FILE override default pid file location
+
--pid-file PID_FILE override default pid file location
::--ctrl-sock SOCK_FILE override default control socket path used for ipc
+
--ctrl-sock SOCK_FILE override default control socket path used for ipc
::--status-sock SOCK_FILE override default status report socket path - status e
+
--status-sock SOCK_FILE override default status report socket path - status e
::--cert-file CERT_FILE override default ceritificate file location
+
--cert-file CERT_FILE override default ceritificate file location
::-D SOCK_FILE data socket path to which the demodulator sends raw s
+
-D SOCK_FILE data socket path to which the demodulator sends raw s
::--sdr-timeout-handler script to execute if no data arrives through the date
+
--sdr-timeout-handler script to execute if no data arrives through the date
::-o PATH path to output directory where downloaded files are d
+
-o PATH path to output directory where downloaded files are d
::-c PATH path to cache directory where partially downloaded fd
+
-c PATH path to cache directory where partially downloaded fd
::-O PATH if specified, files which path does not begin with td
+
-O PATH if specified, files which path does not begin with td
::-b N set the maximum number of download completion eventsy
+
-b N set the maximum number of download completion eventsy
::-d start ondd in daemon mode
+
-d start ondd in daemon mode
::-i print to stdout the current signal strength and snr,d
+
-i print to stdout the current signal strength and snr,d
::-V enable verbose mode
+
-V enable verbose mode
::-v display ondd version info
+
-v display ondd version info
::-h display this helptext
+
-h display this helptext
 
+
</nowiki>
  
 
==ADS-B reception using dump1090==
 
==ADS-B reception using dump1090==

Revision as of 23:19, 1 August 2017

Setting up the OS

There are two OSs that you can use on the DreamCatcher.

Armbian
Standard ARM Linux OS based on Debian, Highly supported but does NOT have build in support for Outernet. This OS requires lots of tweaking to up and going...
Compress_plain_32x32.png Armbian for DreamCatcher, V5.27


Skylark
Os based on Busybox is read only and has the full Outernet system ready to go. This is the one to use if you want to play with outernet with no tweaking
Compress_plain_32x32.png Skylark, for the Passive Antenna, Released May 14, 2017
Compress_plain_32x32.png Skylark, for the Active Antenna, Released June 22, 2017

Burning the image to an SD Card

A microSD greater than 4GB in size is required.

Extract the image

It is compressed using "gzip.", many common Unzipping tools on your chosen OS can un-compress these.

Linux / OSx
gunzip [filename.gz]
Windows
use 7Zip


Write the image to the SD card

the best way to burn the SD card is by using etcher here---> https://etcher.io/



Startup the DreamCatcher with Armbian Distro

1) Insert SD card into Dreamcatcher board slot marked "SD0_OS," next to LED array.

2) insert the USB Wifi Dongle, or other USB network device if you have it.

3) Optionally - connect the USB Cable to your PC with a terminal application open.

4) connect power to a USB port, or alternatively the USB cable to PC can provide power

after the bootup process you should see a "Dreamcatcher Login:" prompt

Default Username
root
Default Password
1234


Configure Wifi

To connect to a wifi network, you can use one of the following methods, SSID/password will be stored and applied automatically at next boot.


Single Command Line

nmcli d wifi connect [your_ssid] password [your_password]

nmcli d wifi connect MYSSID password IMSOSECURE

if you succeed, you should see something like:

Connection with UUID '8f820c8a-5af3-4336-8161-6f57030a7ec5' created and activated on device 'wlan1'


Simple Command line Gui

nmtui


The UI is very self explanatory.


Check the current IP

to check assigned ip use:

ifconfig

root@dreamcatcher:/etc# ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1104 (1.0 KiB)  TX bytes:1104 (1.0 KiB)

wlan1     Link encap:Ethernet  HWaddr e8:4e:06:4b:a6:fa  
          inet addr:10.0.1.150  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ea4e:6ff:fe4b:a6fa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:78 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14882 (14.5 KiB)  TX bytes:4947 (4.8 KiB)

Install The RTL-SDR Libraires and Utilities

To install librtlsdr and sdr utilities like rtl_fm etc, use:

apt update; apt install rtl-sdr

(you will need to have already connected to network for this to work)


Shutting Down

Unlike Skylark, the root filesystem here is modified and is writeable, so it is important you shut this down properly:

sudo poweroff


Hardware Details

Board LEDS

Onboard LEDs can be controlled by writing to the ON/OFF Control file in SysFs. In the case of LED1/Pckts to turn on the led, write a 1 to the SYSFS Device On/Off Control.

To Turn the Led on:

echo 1 > /sys/class/leds/packet/brightness

To Turn it off:

echo 0 > /sys/class/leds/packet/brightness


LED1 / Pckts
Description Flashes with Outernet Packets are Received
Color Green
Default at Boot OFF
SysFs Device /sys/class/leds/packet
Usage On/Off = brightness
Notes Unused in Armbian



LED2 / Flock
Description Satellite Lock Indicator on when satellite signal is locked
Color Red
Default at Boot OFF
SysFs Device /sys/class/leds/lock
Usage On/Off = brightness
Notes Unused in Armbian



LED3 / SNR1
Description SNR indicator
Color Blue
Default at Boot OFF
SysFs Device /sys/class/leds/snr1
Usage On/Off = brightness
Notes Unused in Armbian



LED4 / SNR2
Description SNR indicator
Color Blue
Default at Boot OFF
SysFs Device /sys/class/leds/snr2
Usage On/Off = brightness
Notes Unused in Armbian



LED5 / SNR3
Description SNR indicator
Color Blue
Default at Boot OFF
SysFs Device /sys/class/leds/snr3
Usage On/Off = brightness
Notes Unused in Armbian



LED6 / SNR4
Description SNR indicator
Color Blue
Default at Boot OFF
SysFs Device /sys/class/leds/snr4
Usage On/Off = brightness
Notes Unused in Armbian



LED7 / USR1
Description sdcard activity indicator. equivalent of the HDD activity light
Color Green
Default at Boot OFF
SysFs Device /sys/class/leds/storage
Usage On/Off = brightness
Notes



LED8 / USR2
Description heartbeat: flashes when kernel is booted and working normally.
Color Green
Default at Boot OFF
SysFs Device /sys/class/leds/heartbeat
Usage On/Off = brightness
Notes long off, N short flashes, long off, repeat, where N = 2 * Load_Average



LED9 / PWR
Description Power: White LED, on when board is powered.
Color White
Default at Boot ON
SysFs Device
Usage
Notes



LED10 / AGP3
Description
Color Red
Default at Boot
SysFs Device
Usage
Notes



LED11 / STATUS
Description
Color Green
Default at Boot
SysFs Device
Usage
Notes



LED12 / USBH
Description USB Hub Indicator Light, Green when active
Color Green
Default at Boot ON
SysFs Device /sys/class/leds/usbhuben
Usage On/Off = brightness
Notes Turning this off, will disable all USB ports.



RF Ports

There are two RF ports on the DreamCatcher, they are labeled "LNA_IN" (at the corner of the board), and "LNA_BYPASS". They are SMA Type connections. To enable them you will write a 0 or a 1 to the appropriate SYSFS file location. Writing a 1 will enable it, and a 0 will disable it. if you enable one, you must disable the other;

NOTE: you must be a Superuser to control these... use "sudo su" first


Enable LNA_BYPASS

This is normally selected when you are using an external LNA, or Active Antenna
echo 1 > /sys/class/leds/rfswitch1/brightness
echo 0 > /sys/class/leds/rfswitch2/brightness


Enable LNA_IN

This would be used with a passive antenna or internal LNA
echo 0 >  /sys/class/leds/rfswitch1/brightness
echo 1 >/sys/class/leds/rfswitch2/brightness


Enable LNA_BYPASS Bias Tee

To Enable the bias tee, use the following commands
NOTE: 68 mA current limit set by R76/100k
echo 119 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio119/direction
echo 1 > /sys/class/gpio/gpio119/value


Temperature Monitoring

Armbian includes a monitoring application that gives you access to some of the hardware level details... for example to determine the CPU Temp use the following command:

armbianmonitor -m

however this of little use in automated monitoring or application development.


Usage: armbianmonitor [-h] [-b] [-c $path] [-d $device] [-D] [-m] [-p] [-r] [-u]

############################################################################

 Use armbianmonitor for the following tasks:

 armbianmonitor -c /path/to/test performs disk health/performance tests
 armbianmonitor -d monitors writes to $device
 armbianmonitor -D tries to upload debug disk info to improve armbianmonitor
 armbianmonitor -m provides simple CLI monitoring
 armbianmonitor -p tries to install cpuminer for performance measurements
 armbianmonitor -r tries to install RPi-Monitor
 armbianmonitor -u tries to upload armhwinfo.log for support purposes

############################################################################

Direct access to Temp

The following returns the temperature of the CPU in Celsius

cat /sys/class/thermal/thermal_zone0/temp

Returns:

32900

This is the same as 32.9C


TODO: I want to see how the RPi-Monitor works on the DreamCatcher, i know it works on the RaspberryPi and the OrangePi

Additional Headers

SPI1
Description Serial Peripheral Interface
MOSI Master Output, Slave Input
MISO Master Input, Slave Output
CS0 Slave Select
CLK Clock
GND Ground



SPI2
Description Serial Peripheral Interface
MOSI Master Output, Slave Input
MISO Master Input, Slave Output
CS0 Slave Select
CLK Clock
GND Ground




Outernet Specific Applications

ONDD Setup

FTP to a DreamCatcher, copy the following files off of the system... be SURE to FORCE binary transfer.
/usr/sbin/ondd (md5:207723be33f4da57bd64a6549e11e95d)
/usr/sbin/ontimeout (md5:5092f17f0152ca352799290999ba7a6c)


Create an empty conf file
/etc/ondd/ondd.conf
Create a place to place downloads
/home/downloads (or wherever)
Create a place for download cache
/home/download_cache
Run ondd with the following command:
/usr/sbin/ondd -d --pid_file /var/run/ondd.pid --cfg-gile [empty cfg file you created] -c [location for download cache] -o [location for completed downloads] -D /var/run/ondd.data --sdr-timeout-handler /usr/sbin/ontimeout

Command Help

[Skylark][outernet@outernet:/usr/sbin]$ /usr/sbin/ondd -h
00:11:21.099 [main] Unable to load config: /etc/ondd.conf (null)
Usage: ondd 
--cfg-file CONFIG_FILE override default config file location
--pid-file PID_FILE override default pid file location
--ctrl-sock SOCK_FILE override default control socket path used for ipc
--status-sock SOCK_FILE override default status report socket path - status e
--cert-file CERT_FILE override default ceritificate file location
-D SOCK_FILE data socket path to which the demodulator sends raw s
--sdr-timeout-handler script to execute if no data arrives through the date
-o PATH path to output directory where downloaded files are d
-c PATH path to cache directory where partially downloaded fd
-O PATH if specified, files which path does not begin with td
-b N set the maximum number of download completion eventsy
-d start ondd in daemon mode
-i print to stdout the current signal strength and snr,d
-V enable verbose mode
-v display ondd version info
-h display this helptext

ADS-B reception using dump1090

Install Updates and Base Packages

sudo apt update
sudo apt upgrade
sudo apt install rtl-sdr librtlsdr-dev pkg-config build-essential

NOTE: When i did this part, it bricked the card twice, not sure why, it just did... so YMMV

wget https://raw.githubusercontent.com/keenerd/rtl-sdr/master/rtl-sdr.rules
sudo mv rtl-sdr.rules /etc/udev/rules.d/

Reboot the DreamCatcher

sudo reboot

Install dump1090

Download and compile dump1090 (one time only):

mkdir adsb
cd adsb
git clone https://github.com/MalcolmRobb/dump1090
cd dump1090
make

Antennas

Hook-up a 1090MHz antenna, suitable for ADS-B reception to the LNA_BYPASS RF input of Dreamcatcher. You can find some good starting points here: http://discussions.flightaware.com/ads-b-flight-tracking-f21/three-easy-diy-antennas-for-beginners-t20177.html


Running dump1090

echo 1 | sudo tee /sys/class/leds/rfswitch1/brightness
echo 0 | sudo tee /sys/class/leds/rfswitch2/brightness
./dump1090 --interactive --net

NOTE: The “rfswitch1” and “rfswitch2” lines are not strictly necessary, but will not hurt anything - the Dreamcatcher Armbian image ships with the LNA bypass enabled by default.

Running dump1090 as a daemon

if you dump1090 to run in the background after a reboot, you need to set it up as a daemon.

Create a Startup script in /etc/init.d

The following is a sample startup script. This was poached from this site: http://www.satsignal.eu/raspberry-pi/dump1090.html

  • Create a simple script in /etc/init.d, in my case i called it, dump1090.sh
  • Cut and paste the following into the file
#!/bin/bash
### BEGIN INIT INFO
#
# Provides:		dump1090
# Required-Start:	$remote_fs
# Required-Stop:	$remote_fs
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	dump1090 initscript

#
### END INIT INFO
## Fill in name of program here.
PROG="dump1090"
PROG_PATH="/home/pi/dump1090"
PROG_ARGS="--interactive --net --no-fix --net-ro-size 500 --net-ro-rate 5 --net-heartbeat 60 --gain -10"
PIDFILE="/var/run/dump1090.pid"

start() {
      if [ -e $PIDFILE ]; then
          ## Program is running, exit with error.
          echo "Error! $PROG is currently running!" 1>&2
          exit 1
      else
          ## Change from /dev/null to something like /var/log/$PROG if you want to save output.
          cd $PROG_PATH
          ./$PROG $PROG_ARGS 2>&1 >/dev/null &
          echo "$PROG started"
          touch $PIDFILE
      fi
}

stop() {
      if [ -e $PIDFILE ]; then
          ## Program is running, so stop it
         echo "$PROG is running"
         killall $PROG
         rm -f $PIDFILE
         echo "$PROG stopped"
      else
          ## Program is not running, exit with error.
          echo "Error! $PROG not started!" 1>&2
          exit 1
      fi
}

## Check to see if we are running as root first.
## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html
if [ "$(id -u)" != "0" ]; then
      echo "This script must be run as root" 1>&2
      exit 1
fi

case "$1" in
      start)
          start
          exit 0
      ;;
      stop)
          stop
          exit 0
      ;;
      reload|restart|force-reload)
          stop
          start
          exit 0
      ;;
      **)
          echo "Usage: $0 {start|stop|reload}" 1>&2
          exit 1
      ;;
esac
exit 0

NOTE: You need to alter the PROG_PATH value to the location of your dump1090 application

  • Set the permission to executable
    sudo chmod +x /etc/init.d/dump1090.sh
  • Install to the startup directories
    sudo update-rc.d dump1090.sh defaults
  • If you want to remove it later
    sudo update-rc.d -f dump1090.sh remove
  • Test Start the application
    sudo /etc/init.d/dump1090.sh start
  • NOTE: If you want to stop it
    sudo /etc/init.d/dump1090.sh stop

Verify that it is running

To verify that the application is running connect to the IP Address of the system and 8080 like

http://10.0.1.150:8080

you should see a map load..

Running the Dreamcatcher SDR from another System

The SDR on the dreamcatcher is connected the the CPU via USB, this connection can be changed to an external USB and the SDR can be connected to another systems USB. Doing this will prevent the SDR from being used by the dreamcatcher.


To Do this:

  1. Populate USB1 connector (or just solder wires for a usb pigtail cable)
  2. Remove R72 and R73 and move them to the R116 and R117 footprints.


This will disconnect the SDR from the usb hub on the DreamCatcher and route it's usb to the external cable.


Listen to FM broadcasts

Its possible to listen to standard FM broadcast radio using the Dreamcatchers SDR.

Install necessary Software

sudo apt install rtl-sdr sox


Enable sound output through the 3.5mm TRRS connector

alsamixer

Enable every column except the second and third by pressing “m” (for mute/unmute) when the column is selected. Use the keyboard left-arrow and right-arrow keys to move among the columns. For the second column, use up-arrow and down-arrow keys to adjust output volume. Be careful to not set it too high; if the column color changes to white, it has been set too high. Leave the third column muted.

You may have to reset theseAon every boot. Alternatively, you can save and restore them using: sudo /usr/sbin/alsactl store sudo /usr/sbin/alsactl restore

Connect a TRRS (tip-ring-ring-sleeve) headset cable - the kind you might use with an Android phone - to the 3.5mm connector on Dreamcatcher that is labelled “headphn”. This has 4 conductors - a “normal” set of headphones has 3.

Run this:


rtl_fm -f 104.7M -M fm -s 340k -A fast -r 32k -l 0 -E deemp | play -r 32k -t raw -e s -b 16 -c 1 -V1 -

More information about the various command line options is at the rtl_fm homepage at http://kmkeen.com/rtl-demod-guide/


Obviously, the most important one is the -f option for selecting the tuned frequency. You may also have to play around with the -s if the output is noisy. FM broadcasts tend to be quite powerful signals, and I have not needed an antenna for receiving any of the local stations, but in case of bad reception, just adding a sub-1M SMA cable at the LNA_BYPASS RF input of the Dreamcatcher should improve reception dramatically.