diff --git a/stage4/32-pisdr-dump1090/00-run.sh b/stage4/32-pisdr-dump1090/00-run.sh index f82d95b..ecb1fca 100755 --- a/stage4/32-pisdr-dump1090/00-run.sh +++ b/stage4/32-pisdr-dump1090/00-run.sh @@ -2,13 +2,141 @@ on_chroot << EOF mkdir -p "/home/${FIRST_USER_NAME}/PiSDR/Software" -cd "/home/${FIRST_USER_NAME}/PiSDR/Software" +cd "/home/${FIRST_USER_NAME}/PiSDR/Software" if [ ! -d "dump1090" ]; then - git clone --depth 1 https://github.com/antirez/dump1090.git + mkdir -p "/home/${FIRST_USER_NAME}/PiSDR/Software/dump1090" fi +install -v -o 1000 -g 1000 -m 755 targets/enable.sh "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/PiSDR/Software/dump1090" +install -v -o 1000 -g 1000 -m 755 targets/disable.sh "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/PiSDR/Software/dump1090" +install -v -o 1000 -g 1000 -m 755 targets/configure_rbfeeder.sh "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/PiSDR/Software/dump1090" +install -v -o 1000 -g 1000 -m 755 targets/configure_fr24feed.sh "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/PiSDR/Software/dump1090" + cd dump1090 -make -j$(nproc) -cp dump1090 /usr/bin/ + +repository="https://github.com/wiedehopf/readsb.git" + +apt-get update +apt-get install --no-install-recommends --no-install-suggests -y git build-essential debhelper libusb-1.0-0-dev \ + pkg-config dh-systemd libncurses5-dev lighttpd zlib1g-dev zlib1g unzip + +rm -rf "$ipath"/git +if ! git clone --branch stale --depth 1 "$repository" "$ipath/git" +then + echo "Unable to git clone the repository" + exit 1 +fi + +rm -rf "$ipath"/readsb*.deb + +cd "$ipath/git" + +sed -i 's/librtlsdr0, librtlsdr-dev, //g' debian/control + +export DEB_BUILD_OPTIONS=noddebs +if ! dpkg-buildpackage -b -Prtlsdr -ui -uc -us +then + echo "Something went wrong building the debian package, exiting!" + exit 1 +fi + +echo "Installing the Package" +if ! dpkg -i ../readsb_*.deb +then + echo "Something went wrong installing the debian package, exiting!" + exit 1 +fi +echo "Package installed!" + +cp -n debian/lighttpd/* /etc/lighttpd/conf-available + +# script to change gain + +mkdir -p /usr/local/bin +cat >/usr/local/bin/readsb-gain <<"EOF" +#!/bin/bash +gain=$(echo $1 | tr -cd '[:digit:].-') +if [[ $gain == "" ]]; then echo "Error, invalid gain!"; exit 1; fi +if ! grep gain /etc/default/readsb &>/dev/null; then sed -i -e 's/RECEIVER_OPTIONS="/RECEIVER_OPTIONS="--gain 49.6 /' /etc/default/readsb; fi +sudo sed -i -E -e "s/--gain .?[0-9]*.?[0-9]* /--gain $gain /" /etc/default/readsb +sudo systemctl restart readsb +EOF +chmod a+x /usr/local/bin/readsb-gain + +# set-location +cat >/usr/local/bin/readsb-set-location <<"EOF" +#!/bin/bash + +lat=$(echo $1 | tr -cd '[:digit:].-') +lon=$(echo $2 | tr -cd '[:digit:].-') + +if ! awk "BEGIN{ exit ($lat > 90) }" || ! awk "BEGIN{ exit ($lat < -90) }"; then + echo + echo "Invalid latitude: $lat" + echo "Latitude must be between -90 and 90" + echo + echo "Example format for latitude: 51.528308" + echo + echo "Usage:" + echo "readsb-set-location 51.52830 -0.38178" + echo + exit 1 +fi +if ! awk "BEGIN{ exit ($lon > 180) }" || ! awk "BEGIN{ exit ($lon < -180) }"; then + echo + echo "Invalid longitude: $lon" + echo "Longitude must be between -180 and 180" + echo + echo "Example format for latitude: -0.38178" + echo + echo "Usage:" + echo "readsb-set-location 51.52830 -0.38178" + echo + exit 1 +fi + +echo +echo "setting Latitude: $lat" +echo "setting Longitude: $lon" +echo +if ! grep -e '--lon' /etc/default/readsb &>/dev/null; then sed -i -e 's/DECODER_OPTIONS="/DECODER_OPTIONS="--lon -0.38178 /' /etc/default/readsb; fi +if ! grep -e '--lat' /etc/default/readsb &>/dev/null; then sed -i -e 's/DECODER_OPTIONS="/DECODER_OPTIONS="--lat 51.52830 /' /etc/default/readsb; fi +sed -i -E -e "s/--lat .?[0-9]*.?[0-9]* /--lat $lat /" /etc/default/readsb +sed -i -E -e "s/--lon .?[0-9]*.?[0-9]* /--lon $lon /" /etc/default/readsb +systemctl restart readsb +EOF +chmod a+x /usr/local/bin/readsb-set-location + +echo -------------- +cd "$ipath" + +wget -O tar1090-install.sh https://raw.githubusercontent.com/wiedehopf/tar1090/master/install.sh +bash tar1090-install.sh /run/readsb + +if ! systemctl show readsb | grep 'ExecMainStatus=0' -qs; then + echo -------------- + echo -------------- + journalctl -u readsb | tail -n30 + echo -------------- + echo -------------- + echo "ERROR: readsb service didn't start, if inquiring about the issue please post the above 30 lines of log!" + echo " common issues: SDR not plugged in." + echo " the webinterface will show an error until readsb is running!" + echo -------------- +fi + +echo -------------- + +echo "[PiSDR] Disabling services. To enable them, run 'bash enable.sh'." + +systemctl disable --now readsb +systemctl disable --now tar1090 +systemctl disable --now lighttpd + +echo "[PiSDR] Deleting build files to save space." + +rm -fr /usr/local/share/tar1090/git-db +rm -fr /usr/local/share/tar1090/git + EOF \ No newline at end of file diff --git a/stage4/32-pisdr-dump1090/targets/configure_fr24feed.sh b/stage4/32-pisdr-dump1090/targets/configure_fr24feed.sh new file mode 100755 index 0000000..4f6db73 --- /dev/null +++ b/stage4/32-pisdr-dump1090/targets/configure_fr24feed.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# configure fr24feed to use readsb + +systemctl stop fr24feed &>/dev/null + +rm -f /etc/lighttpd/conf-enabled/89-dump1090.conf + +apt-get remove -y dump1090-mutability &>/dev/null +apt-get remove -y dump1090 &>/dev/null +apt-get remove -y dump1090-fa &>/dev/null + +if [ -f /etc/fr24feed.ini ] +then + chmod a+rw /etc/fr24feed.ini + cp -n /etc/fr24feed.ini /usr/local/share/adsb-wiki + if ! grep host /etc/fr24feed.ini &>/dev/null; then sed -i -e '/fr24key/a host=' /etc/fr24feed.ini; fi + sed -i -e 's/receiver=.*/receiver="beast-tcp"\r/' -e 's/host=.*/host="127.0.0.1:30005"\r/' -e 's/bs=.*/bs="no"\r/' -e 's/raw=.*/raw="no"\r/' /etc/fr24feed.ini + systemctl restart fr24feed &>/dev/null +fi + +if (( $(cat /etc/lighttpd/conf-enabled/* | grep -c -E -e '^server.stat-cache-engine *\= *"disable"') > 1 )); then + rm -f /etc/lighttpd/conf-enabled/88-readsb-statcache.conf +fi + +systemctl enable readsb +systemctl restart readsb diff --git a/stage4/32-pisdr-dump1090/targets/configure_rbfeeder.sh b/stage4/32-pisdr-dump1090/targets/configure_rbfeeder.sh new file mode 100755 index 0000000..88f130b --- /dev/null +++ b/stage4/32-pisdr-dump1090/targets/configure_rbfeeder.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# configure rbfeeder to use readsb + +systemctl stop rb-feeder &>/dev/null + +rm -f /etc/lighttpd/conf-enabled/89-dump1090.conf + +apt-get remove -y dump1090-mutability &>/dev/null +apt-get remove -y dump1090 &>/dev/null +apt-get remove -y dump1090-fa &>/dev/null + +if [[ -f /etc/rbfeeder.ini ]]; then + if grep -qs -e 'network_mode=false' /etc/rbfeeder.ini &>/dev/null && + grep -qs -e 'mode=beast' /etc/rbfeeder.ini && + grep -qs -e 'external_port=30005' /etc/rbfeeder.ini && + grep -qs -e 'external_host=127.0.0.1' /etc/rbfeeder.ini + then + sed -i -e 's/network_mode=false/network_mode=true/' /etc/rbfeeder.ini + fi + systemctl restart rbfeeder &>/dev/null +fi diff --git a/stage4/32-pisdr-dump1090/targets/disable.sh b/stage4/32-pisdr-dump1090/targets/disable.sh new file mode 100755 index 0000000..2992e63 --- /dev/null +++ b/stage4/32-pisdr-dump1090/targets/disable.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +systemctl disable --now readsb +systemctl disable --now tar1090 +systemctl disable --now lighttpd diff --git a/stage4/32-pisdr-dump1090/targets/enable.sh b/stage4/32-pisdr-dump1090/targets/enable.sh new file mode 100755 index 0000000..365f99d --- /dev/null +++ b/stage4/32-pisdr-dump1090/targets/enable.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +systemctl enable --now readsb +systemctl enable --now tar1090 +systemctl enable --now lighttpd