Initial commit of files

This commit is contained in:
2021-01-22 10:13:24 -05:00
parent c86648ed30
commit 8d69d4c2db
25 changed files with 781 additions and 0 deletions

BIN
Imager/imager_1.4.exe Normal file

Binary file not shown.

BIN
Imager/imager_1.4_amd64.deb Normal file

Binary file not shown.

View File

@ -0,0 +1,139 @@
#
# Copyright 2012-2013 Osmocom rtl-sdr project
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# original RTL2832U vid/pid (hama nano, for example)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE:="0666"
# RTL2832U OEM vid/pid, e.g. ezcap EzTV668 (E4000), Newsky TV28T (E4000/R820T) etc.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0666"
# DigitalNow Quad DVB-T PCI-E card (4x FC0012?)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6680", MODE:="0666"
# Leadtek WinFast DTV Dongle mini D (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6f0f", MODE:="0666"
# Genius TVGo DVB-T03 USB dongle (Ver. B)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="707f", MODE:="0666"
# Terratec Cinergy T Stick Black (rev 1) (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00a9", MODE:="0666"
# Terratec NOXON rev 1 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b3", MODE:="0666"
# Terratec Deutschlandradio DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b4", MODE:="0666"
# Terratec NOXON DAB Stick - Radio Energy (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b5", MODE:="0666"
# Terratec Media Broadcast DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b7", MODE:="0666"
# Terratec BR DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b8", MODE:="0666"
# Terratec WDR DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b9", MODE:="0666"
# Terratec MuellerVerlag DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c0", MODE:="0666"
# Terratec Fraunhofer DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c6", MODE:="0666"
# Terratec Cinergy T Stick RC (Rev.3) (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d3", MODE:="0666"
# Terratec T Stick PLUS (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d7", MODE:="0666"
# Terratec NOXON rev 2 (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00e0", MODE:="0666"
# PixelView PV-DT235U(RN) (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1554", ATTRS{idProduct}=="5020", MODE:="0666"
# Astrometa DVB-T/DVB-T2 (R828D)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0131", MODE:="0666"
# Compro Videomate U620F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0620", MODE:="0666"
# Compro Videomate U650F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0650", MODE:="0666"
# Compro Videomate U680F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0680", MODE:="0666"
# GIGABYTE GT-U7300 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d393", MODE:="0666"
# DIKOM USB-DVBT HD
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d394", MODE:="0666"
# Peak 102569AGPK (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d395", MODE:="0666"
# KWorld KW-UB450-T USB DVB-T Pico TV (TUA9001)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d397", MODE:="0666"
# Zaapa ZT-MINDVBZP (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d398", MODE:="0666"
# SVEON STV20 DVB-T USB & FM (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d39d", MODE:="0666"
# Twintech UT-40 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a4", MODE:="0666"
# ASUS U3100MINI_PLUS_V2 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a8", MODE:="0666"
# SVEON STV27 DVB-T USB & FM (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3af", MODE:="0666"
# SVEON STV21 DVB-T USB & FM
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3b0", MODE:="0666"
# Dexatek DK DVB-T Dongle (Logilink VG0002A) (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1101", MODE:="0666"
# Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1102", MODE:="0666"
# Dexatek DK 5217 DVB-T Dongle (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1103", MODE:="0666"
# MSI DigiVox Micro HD (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1104", MODE:="0666"
# Sweex DVB-T USB (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="a803", MODE:="0666"
# GTek T803 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="b803", MODE:="0666"
# Lifeview LV5TDeluxe (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="c803", MODE:="0666"
# MyGica TD312 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d286", MODE:="0666"
# PROlectrix DV107669 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d803", MODE:="0666"

12
Projects/ADS-B/ads-b.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
ADSB=$HOME/ProbeStar/pi_tools/Projects/ADS-B/dump1090
if [ -d $ADSB ]; then
cd $ADSB
if [ ! -d /run/dump1090-fa ]; then
sudo mkdir -p /run/dump1090-fa
sudo chmod a+rwx /run/dump1090-fa
fi
./dump1090 --interactive --net --write-json /run/dump1090-fa/
fi

125
Projects/ADS-B/config.js Normal file
View File

@ -0,0 +1,125 @@
// --------------------------------------------------------
//
// This file is to configure the configurable settings.
// Load this file before script.js file at gmap.html.
//
// --------------------------------------------------------
// -- Title Settings --------------------------------------
// Show number of aircraft and/or messages per second in the page title
PlaneCountInTitle = true;
MessageRateInTitle = false;
// -- Output Settings -------------------------------------
// The DisplayUnits setting controls whether nautical (ft, NM, knots),
// metric (m, km, km/h) or imperial (ft, mi, mph) units are used in the
// plane table and in the detailed plane info. Valid values are
// "nautical", "metric", or "imperial".
DisplayUnits = "nautical";
// -- Map settings ----------------------------------------
// These settings are overridden by any position information
// provided by dump1090 itself. All positions are in decimal
// degrees.
// Default center of the map.
DefaultCenterLat = 42.522230;
DefaultCenterLon = -83.23768;
// The google maps zoom level, 0 - 16, lower is further out
DefaultZoomLvl = 10;
// Center marker. If dump1090 provides a receiver location,
// that location is used and these settings are ignored.
SiteShow = false; // true to show a center marker
SiteLat = 42.522230; // position of the marker
SiteLon = -83.23768;
SiteName = "Proberts"; // tooltip of the marker
// -- Marker settings -------------------------------------
// These settings control the coloring of aircraft by altitude.
// All color values are given as Hue (0-359) / Saturation (0-100) / Lightness (0-100)
ColorByAlt = {
// HSL for planes with unknown altitude:
unknown : { h: 0, s: 0, l: 40 },
// HSL for planes that are on the ground:
ground : { h: 15, s: 80, l: 20 },
air : {
// These define altitude-to-hue mappings
// at particular altitudes; the hue
// for intermediate altitudes that lie
// between the provided altitudes is linearly
// interpolated.
//
// Mappings must be provided in increasing
// order of altitude.
//
// Altitudes below the first entry use the
// hue of the first entry; altitudes above
// the last entry use the hue of the last
// entry.
h: [ { alt: 2000, val: 20 }, // orange
{ alt: 10000, val: 140 }, // light green
{ alt: 40000, val: 300 } ], // magenta
s: 85,
l: 50,
},
// Changes added to the color of the currently selected plane
selected : { h: 0, s: -10, l: +20 },
// Changes added to the color of planes that have stale position info
stale : { h: 0, s: -10, l: +30 },
// Changes added to the color of planes that have positions from mlat
mlat : { h: 0, s: -10, l: -10 }
};
// For a monochrome display try this:
// ColorByAlt = {
// unknown : { h: 0, s: 0, l: 40 },
// ground : { h: 0, s: 0, l: 30 },
// air : { h: [ { alt: 0, val: 0 } ], s: 0, l: 50 },
// selected : { h: 0, s: 0, l: +30 },
// stale : { h: 0, s: 0, l: +30 },
// mlat : { h: 0, s: 0, l: -10 }
// };
// Outline color for aircraft icons with an ADS-B position
OutlineADSBColor = '#000000';
// Outline color for aircraft icons with a mlat position
OutlineMlatColor = '#4040FF';
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
// In miles, nautical miles, or km (depending settings value 'DisplayUnits')
SiteCirclesDistances = new Array(100,150,200);
// Controls page title, righthand pane when nothing is selected
PageName = "PiAware SkyAware";
// Show country flags by ICAO addresses?
ShowFlags = true;
// Path to country flags (can be a relative or absolute URL; include a trailing /)
FlagPath = "flags-tiny/";
// Set to true to enable the ChartBundle base layers (US coverage only)
ChartBundleLayers = false;
// Provide a Bing Maps API key here to enable the Bing imagery layer.
// You can obtain a free key (with usage limits) at
// https://www.bingmapsportal.com/ (you need a "basic key")
//
// Be sure to quote your key:
// BingMapsAPIKey = "your key here";
//
BingMapsAPIKey = null;
// Turn on display of extra Mode S EHS / ADS-B v1/v2 data
// This is not polished yet (and so is disabled by default),
// currently it's just a data dump of the new fields with no UX work.
ExtendedData = false;

1
Projects/ADS-B/dump1090 Symbolic link
View File

@ -0,0 +1 @@
/home/pi/src/dump1090/

View File

@ -0,0 +1,17 @@
#Alias /dump1090 /var/www/html/dump1090/
#Alias ^/dump1090-fa$ /dump1090-fa/
Alias /dump1090/data /tmp/dump1090-fa/
Alias /data /tmp/dump1090-fa/
<Directory “/var/www/html/dump1090/”>
Options All
AllowOverride All
SetEnvIf Request_URI “/dump1090/data/..json$" Header set “Access-Control-Allow-Origin” "”
</Directory>
<Directory “/run/dump1090-fa/”>
Options All
AllowOverride All
SetEnvIf Request_URI “/dump1090/data/..json$" Header set “Access-Control-Allow-Origin” "”
</Directory>

31
Projects/ADS-B/setup.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
# install software
sudo apt-get install apache2 rtl-sdr python-gi-cairo
# script
mkdir -p ~/bin
cp ads-b.sh ~/bin
# rules
sudo cp *.rules /etc/udev/rules.d
sudo service udev restart
# apache setup
sudo cp dump1090-fa.conf /etc/apache2/conf-enabled/
sudo service apache2 restart
# dump1090 build and install
mkdir -p ~/src
pushd ~/src/dump1090
git clone https://github.com/flightaware/dump1090
make
sudo mkdir -p /var/www/html/dump1090-fa
sudo cp -a public_html/* /var/www/html/dump1090-fa
popd
ln -fs ~/src/dump1090
# dump1090 config
sudo cp config.js /var/www/html/dump1090-fa
cd /var/www/html/dump1090-fa
sudo ln -fs /run/dump1090-fa data

View File

@ -0,0 +1,14 @@
# Default settings for the gpsd init script and the hotplug wrapper.
# Start the gpsd daemon automatically at boot time
START_DAEMON="true"
# Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO="true"
# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyACM0"
# Other options you want to pass to gpsd
GPSD_OPTIONS="-G"

Binary file not shown.

3
Projects/GPS/python/setup.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
sudo -H pip3 install gps serial pynmea2

24
Projects/GPS/python/test.py Executable file
View File

@ -0,0 +1,24 @@
#! /usr/bin/python3
from gps import *
import time
gpsd = gps(mode=WATCH_ENABLE|WATCH_NEWSTYLE)
print('latitude\tlongitude\ttime utc\t\taltitude\tepv\tept\tspeed\tclimb') # '\t' = TAB to try and output the data in columns.
try:
while True:
report = gpsd.next() #
if report['class'] == 'TPV':
out = ""
for i in ['lat','lon','time','alt','epv','ept','speed','climb']:
out += str(getattr(report,i,0.0)) + "\t"
print(out)
time.sleep(1)
except (KeyboardInterrupt, SystemExit): #when you press ctrl+c
print("Done.\nExiting.")

View File

@ -0,0 +1 @@
42.521985, -83.237700, 10, 0
1 42.521985 -83.237700 10 0

View File

@ -0,0 +1,234 @@
#! /usr/bin/python3
import os
import sys
import getopt
import csv
from math import *
from gps import *
from time import strftime, sleep
import RPi.GPIO as GPIO
##############################################################################
# sound stuff
##############################################################################
import os
from sys import platform as _platform
sound_args = ""
def play_sound(file):
if _platform == "win32" or _platform == "win64" or _platform == "cygwin":
cmd = "wmplayer " + '"' + file + '"'
else:
cmd = "aplay -N " + sound_args + " " + file + " &"
os.system(cmd)
##############################################################################
# buzzer stuff
##############################################################################
# https://www.instructables.com/Raspberry-Pi-Tutorial-How-to-Use-a-Buzzer/
buzzer=23
seconds=3
def buzzer_init():
GPIO.setwarnings(0)
GPIO.setmode(GPIO.BCM)
GPIO.setup(buzzer, GPIO.OUT)
def buzzer_on():
GPIO.output(buzzer, GPIO.HIGH)
play_sound("alert.wav")
def buzzer_off():
GPIO.output(buzzer, GPIO.LOW)
def buzzer_run():
global seconds
sec = seconds
while (sec):
buzzer_on()
sleep(0.5)
buzzer_off()
sleep(0.5)
sec = sec - 1
buzzer_init()
##############################################################################
# gps stuff
##############################################################################
# https://ozzmaker.com/using-python-with-a-gps-receiver-on-a-raspberry-pi/
gpsd = gps(mode=WATCH_ENABLE|WATCH_NEWSTYLE)
#
# GPS receiver is ublox from V2V-MD at 10x seconds
#
# http://www.movable-type.co.uk/scripts/latlong.html
earth_flatening = 1.0/298.257223563
earth_radius = 6378137.0
def haversine(lat1, lon1, lat2, lon2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
# 6367 km is the radius of the Earth
return earth_radius * c
def roydistance(lat1, lon1, lat2, lon2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# Roy's method
f1 = (1.0 - earth_flatening)
top = (pow((lon2-lon1), 2) * pow(cos(lat1), 2)) + pow(lat2-lat1, 2)
bot = pow(sin(lat1), 2) + (pow(f1, 2) * pow(cos(lat1), 2))
dist = f1 * earth_radius * sqrt(top/bot)
return dist
##############################################################################
# virtual cones
##############################################################################
# node from csv (each line is lat, long, distance, next code# (optional)):
# 42.522040, -83.237594, 5, 1
def read_csv(csv_file):
file_csv = open(csv_file)
data_csv = csv.reader(file_csv)
virtual_cones = list(data_csv)
total_cones = len(virtual_cones)
print(csv_file, total_cones)
# print(virtual_cones)
return virtual_cones
##############################################################################
# main
##############################################################################
def main(argv):
virtual_list = [[],[],[],[],[],[],[],[],[]]
virtual_count = 0
current_cone = [0,0,0,0,0,0,0,0]
total_cones = [0,0,0,0,0,0,0,0]
try:
os.mkdir("logs")
except:
pass
log = open(strftime("logs/way-%Y%m%d-%H%M.log"), 'a')
log.write("Time,Latitude,Longitude,Heading,Speed,Description\n")
try:
opts, args = getopt.getopt(argv,"",["",""])
except getopt.GetoptError:
print(sys.argv[0], '<csvfile>')
sys.exit(2)
# for opt, arg in opts:
# nop
# slurp in files for each list
for arg in args:
virtual_cones = read_csv(arg)
current_cone[virtual_count] = 0
total_cones[virtual_count] = 0
virtual_list[virtual_count] = virtual_cones
virtual_count = virtual_count + 1
# print(virtual_list)
buzz_no = 0
max_buzz = 3
try:
while True:
report = gpsd.next() #
if report['class'] == 'TPV':
time = getattr(report, 'time', 0.0)
lat = getattr(report, 'lat', 0.0)
lon = getattr(report, 'lon', 0.0)
heading = getattr(report, 'track', 0.0)
speed = getattr(report, 'speed', 0.0)
log.write(time+","+str(lat)+","+str(lon)+","+str(heading)+","+str(speed))
# print("Position: %f, %f, %d" % (lat, lon, speed))
# walk through each list
for i in range(0, virtual_count):
# end of list?
if current_cone[i] >= total_cones[i]:
current_cone[i] = 0
# check first node for reset
if current_cone[i]:
# node from csv (each line is lat, long, distance, next code#)
row = virtual_list[i][0]
cone_lat = float(row[0])
cone_lon = float(row[1])
cone_dist = float(row[2])
dist = haversine(lat, lon, cone_lat, cone_lon) / 1000.0
if dist < cone_dist:
current_cone[i] = 0
# node from csv (each line is lat, long, distance, next code#)
row = virtual_list[i][current_cone[i]]
cone_lat = float(row[0])
cone_lon = float(row[1])
cone_dist = float(row[2])
# next cone
cone_next = current_cone[i] + 1
try:
cone_next = int(row[3])
except:
cone_next = 0
# distance between vehicle and cone
# dist = haversine(lat, lon, cone_lat, cone_lon)
dist = roydistance(lat, lon, cone_lat, cone_lon)
# check distance trigger
if (dist < cone_dist and buzz_no < max_buzz):
log.write(".Waypoint="+str(i)+":"+str(current_cone[i]))
print("Waypoint %d:%d reached: %f, %f, %d" % (i, current_cone[i], lat, lon, speed))
buzzer_run()
current_cone[i] = cone_next
buzz_no = buzz_no + 1
else:
buzz_no = 0
log.write("\n")
# time.sleep(0.2)
except (KeyboardInterrupt, SystemExit): #when you press ctrl+c
log.close()
print("Done.\nExiting.")
main(sys.argv[1:])

5
Projects/GPS/setup.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
sudo apt-get install -y gpsd gpsd-clients gpsbabel libgps-dev python-gps
sudo cp etc/default/gpsd /etc/default/gpsd

0
README Normal file
View File

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,15 @@
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=1
fast_reauth=1
country=US
network={
#ssid="HamGate"
ssid=48616d47617465
#psk="Roughnecks Ho"
psk=3a631133a09e414b21a433ecef9be7cb09fa8442e15e4b4eb21ce156ab44bcf4
id_str="0"
priority=100
}

View File

@ -0,0 +1,139 @@
#
# Copyright 2012-2013 Osmocom rtl-sdr project
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# original RTL2832U vid/pid (hama nano, for example)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE:="0666"
# RTL2832U OEM vid/pid, e.g. ezcap EzTV668 (E4000), Newsky TV28T (E4000/R820T) etc.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0666"
# DigitalNow Quad DVB-T PCI-E card (4x FC0012?)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6680", MODE:="0666"
# Leadtek WinFast DTV Dongle mini D (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6f0f", MODE:="0666"
# Genius TVGo DVB-T03 USB dongle (Ver. B)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="707f", MODE:="0666"
# Terratec Cinergy T Stick Black (rev 1) (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00a9", MODE:="0666"
# Terratec NOXON rev 1 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b3", MODE:="0666"
# Terratec Deutschlandradio DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b4", MODE:="0666"
# Terratec NOXON DAB Stick - Radio Energy (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b5", MODE:="0666"
# Terratec Media Broadcast DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b7", MODE:="0666"
# Terratec BR DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b8", MODE:="0666"
# Terratec WDR DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b9", MODE:="0666"
# Terratec MuellerVerlag DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c0", MODE:="0666"
# Terratec Fraunhofer DAB Stick (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c6", MODE:="0666"
# Terratec Cinergy T Stick RC (Rev.3) (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d3", MODE:="0666"
# Terratec T Stick PLUS (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d7", MODE:="0666"
# Terratec NOXON rev 2 (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00e0", MODE:="0666"
# PixelView PV-DT235U(RN) (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1554", ATTRS{idProduct}=="5020", MODE:="0666"
# Astrometa DVB-T/DVB-T2 (R828D)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0131", MODE:="0666"
# Compro Videomate U620F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0620", MODE:="0666"
# Compro Videomate U650F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0650", MODE:="0666"
# Compro Videomate U680F (E4000)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0680", MODE:="0666"
# GIGABYTE GT-U7300 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d393", MODE:="0666"
# DIKOM USB-DVBT HD
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d394", MODE:="0666"
# Peak 102569AGPK (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d395", MODE:="0666"
# KWorld KW-UB450-T USB DVB-T Pico TV (TUA9001)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d397", MODE:="0666"
# Zaapa ZT-MINDVBZP (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d398", MODE:="0666"
# SVEON STV20 DVB-T USB & FM (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d39d", MODE:="0666"
# Twintech UT-40 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a4", MODE:="0666"
# ASUS U3100MINI_PLUS_V2 (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a8", MODE:="0666"
# SVEON STV27 DVB-T USB & FM (FC0013)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3af", MODE:="0666"
# SVEON STV21 DVB-T USB & FM
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3b0", MODE:="0666"
# Dexatek DK DVB-T Dongle (Logilink VG0002A) (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1101", MODE:="0666"
# Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1102", MODE:="0666"
# Dexatek DK 5217 DVB-T Dongle (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1103", MODE:="0666"
# MSI DigiVox Micro HD (FC2580)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1104", MODE:="0666"
# Sweex DVB-T USB (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="a803", MODE:="0666"
# GTek T803 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="b803", MODE:="0666"
# Lifeview LV5TDeluxe (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="c803", MODE:="0666"
# MyGica TD312 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d286", MODE:="0666"
# PROlectrix DV107669 (FC0012)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d803", MODE:="0666"

12
bin/ads-b.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
ADSB=$HOME/ProbeStar/pi_tools/Projects/ADS-B/dump1090-fa
if [ -d $ADSB ]; then
cd $ADSB
if [ ! -d /run/dump1090-fa ]; then
sudo mkdir -p /run/dump1090-fa
sudo chmod a+rwx /run/dump1090-fa
fi
./dump1090 --interactive --net --write-json /run/dump1090-fa/
fi

9
bin/os-update.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
sudo apt update
sudo apt full-upgrade
sudo apt purge -y bluealsa pimixer
sudo apt install -y pulseaudio-module-bluetooth
sudo reboot