This fork of dvbsdr exists so I can configuration-manage the changes I have made to dvbsdr for Project Horus flights.
To those arriving at this repository from various blog/news articles - please go check out the work by F5OEO and natsfr - without them this project would not be possible. What I've done is add some control around the edges, and package it up in a form suitable for use on a high-altitude balloon.
Additions by VK5QI:
scripts/rpi_tx.sh
- Essentially the same as the encode_modulate.sh script mentioned below, with customizations for our flight.- dvbsdr systemd service file (
dvbsdr.service
). Allows dvbsdr to be started and stopped using sytemd.- Note: not everything stops cleanly using sytemctl stop. Suggest using systemctl kill, followed by a systemctl stop to properly kill the software.
dvb_watchdog.py
, intended to be run on startup from/etc/rc.local
. This script monitors a few temperature sensors, some IO pins, and (eventually) GPS descent/altitude data to determine when the DVB-S modulator and Power Amplifier should be enabled. Currently the following IO Connections are used:- GPIO 21 - DVB-S Enable. Short pin to ground to enable DVB-S transmissions. Disconnect to stop transmissions.
- GPIO 13 - PA Enable. This used to drive a Panasonic AQZ102 Solid State Relay, with the relay's LED driven via a 180-oh resistor.
- GPIO 4 - 1Wire Interface, to a DS18B20, glued to the heat spreader plate.
As I have had issues reliably getting full power out of the LimeSDR Mini when using a stored limemini.cal file, I've taken the approach of calibrating at each startup. As I have control over the PA, I disable power to the PA prior to starting DVB-S modulation, then enable the PA 30 seconds later.
TODO:
- Monitor modulator output, and try and detect there are issues with the PiCam. (Maybe monitor running processes?)
- Add GPS input, with descent rate detection. Aim here is to cut power to the PA when the payload is in descent, and is about to land. Will need to use some non-volatile storage (save a file?) to ensure this persists across reboots.
- Maybe use another GPIO line to override these checks, for testing on ground?
- Horus 55 - 2021-03-07
- Frequency: 445 MHz
- TX Power: 800mW
- Modulation: 1Msps QPSK, DVB-S with r=1/2 FEC.
- Video Resolution: 704x400 (SD, ~600kbit/s)
- Temperature cutout used: 63หC (never reached this)
- Longest range received: 200km (Eudunda, SA, to Whyalla, SA)
- Video Link: https://www.youtube.com/watch?v=5vYcVRWrdhs
- Writeup: TBD
avc2ts doesn't have a command-line option to flip the video, which might be required if the camera is mounted upside-down (as it is in my case). To get around this, this line needs to be uncommented in avc2ts.cpp (which will be located in ~/dvbsdr/build/avc2ts/ after running the install script), and changed to read
setMirror(OPORT_VIDEO,OMX_MirrorBoth);
Then, re-compile (run make
in the avc2ts directory) and copy the avc2ts binary into ~/dvbsdr/bin/
.
dvbsdr is an integration of several projects around Digital Amator TeleVision using SDR technics.
LimeSDRMini is the main supported SDR hardware for now.
This project is less user friendly than BATC Portsdown also based on similar components.
This project help people who want to use latest developments and more in depeth experts parameters.
It should run on
- Raspberry Pi
- Nvidia Jetson Nano
- Some parts works on regular X86 Debian based
- Pi : Assuming a Raspbian Lite installation (stretch) : https://www.raspberrypi.org/downloads/raspbian/
- Jetson Nano : Assuming a Linux Tegra Ubuntu
- X86 : Debian stretch based
Be sure to have git package installed :
sudo apt-get update
sudo apt-get install git
You can now clone the repository. A script (install.sh) is there for easy installation. You could inspect it and make steps manualy in case of any doubt.
git clone https://github.com/F5OEO/dvbsdr
cd dvbsdr
./install.sh
Scripts are located under dvbsdr/scripts
- Pi : Encode from Picamera or USB Webcam
./encode_modulate.sh
- Jetson nano : Encode from Picamera V2 or transmodulate from an incoming IP transport stream
./jetson_nano.sh
- All : Modulate from an incoming IP transport stream
./encode_modulate.sh
Please inspect each script, parameters are mainly self documented.
In order to decrease USB bandwidth and have better signal quality, a special Firmware is available.
In order to use this mode you should prior flash it,
./install_fpga_mapping.sh
If you like to reverse back to regular firmware
./restore_original_firmware.sh
Some components are installed but not used right now (csdr,leandvb,KisSpectrum...) which will be integrated in the future (or not) to extend DATV only transmission feature.