kopia lustrzana https://github.com/ogre/habdec
191 wiersze
7.0 KiB
Markdown
191 wiersze
7.0 KiB
Markdown
# HABDEC - RTTY decoder for High Altitude Balloons
|
|
|
|
![alt text](./webClientScreenshot.png)
|
|
|
|
Habdec is a C++17 software to decode RTTY telemetry from High Altitude Balloons and upload it to ~~UKHAS Habitat~~ [sondehub.org](https://amateur.sondehub.org)
|
|
|
|
Some facts:
|
|
- builds and runs on Windows/Linux and x64/RaspberryPI/OdroixXU4 platforms
|
|
- Uses [SoapySDR](https://github.com/pothosware/SoapySDR) to consume IQ stream from your SDR
|
|
- runs in command line (headless)
|
|
- provides websocket server so can be controlled from any web browser [even on your phone](https://www.youtube.com/watch?v=dli8FEFy5tM)
|
|
- can be easily integrated into your own code
|
|
- has example python client
|
|
- decodes [SSDV](https://ukhas.org.uk/doku.php?id=guides:ssdv) images
|
|
|
|
Original motivation for habdec was to have a portable tracking device you could take to a chasecar or into a field.
|
|
Fatty laptop with dl-fldigi, full-fledged SDR app and required internet connection is not too comfortable.
|
|
|
|
Ultimatelly habdec is intended for integration into bigger app, based on OpenStreetmap and running on portable RaspberryPI or OdroidXU4 - see [here](https://www.youtube.com/watch?v=ZuoNf171e_A), [here](https://twitter.com/froszu/status/1274308780923269120) or [here](https://twitter.com/froszu/status/1271166163993661440)
|
|
|
|
It was successfully used to track and recover several HAB payloads.
|
|
Below is an altitude graph from ARY5 flight - you can see amount of valid telemetry sentences received. One receiver was a stationary antenna, the other is car roof magmount.
|
|
|
|
![alt text](./chart_alt_mobile.svg)
|
|
![alt text](./chart_alt_stationary.svg)
|
|
|
|
## Getting habdec
|
|
|
|
To get habdec you can download precompiled exec or build it from source.
|
|
|
|
#### Getting Binary:
|
|
- Install SoapySDR binaries from [here](https://github.com/pothosware/SoapySDR/wiki#installation)
|
|
- Download habdec executable for your platform from [here](https://github.com/ogre/habdec/wiki)
|
|
|
|
There's also raspberryPi 3 image with ready to use binary and build env. Go to [Wiki](https://github.com/ogre/habdec/wiki)
|
|
|
|
#### Building from source:
|
|
To build habdec you need a C++17 compiler and CMake version 3.8.2
|
|
You also need to build or install some dependencies:
|
|
- basic decoder: [FFTW](http://www.fftw.org/)
|
|
- websocket server: [SoapySDR](https://github.com/pothosware/SoapySDR), [boost 1.68](https://www.boost.org/) (any version with boost-beast)
|
|
|
|
Instructions how to build habdec and it's dependencies are described in [BuildInstructions.md](./BuildInstructions.md)
|
|
|
|
## Usage
|
|
|
|
`habdecWebsocketServer.exe --help`
|
|
```
|
|
Command Line Interface options:
|
|
--config arg Last run config file. Autosaved on every
|
|
successful decode.
|
|
|
|
CLI opts:
|
|
--help Display help message
|
|
--device arg SDR Device Number. -1 to list
|
|
--sampling_rate arg (=0) Sampling Rate, as supported by device
|
|
--no_exit arg Constantly retry on missing device instead of exit.
|
|
--port arg Command Port, example: --port 127.0.0.1:5555
|
|
--station arg HABHUB station callsign. Omitting this flag disables HABHUB upload.
|
|
--latlon arg station GPS location (decimal)
|
|
--alt arg station altitude in meters
|
|
--freq arg frequency in MHz
|
|
--ppm arg frequency correction in PPM
|
|
--gain arg gain
|
|
--print arg live print received chars, values: 0, 1
|
|
--rtty arg rtty: baud bits stops, example: --rtty 300 8 2
|
|
--biast arg biasT, values: 0, 1
|
|
--bias_t arg biasT, values: 0, 1
|
|
--afc arg Auto Frequency Correction, values: 0, 1
|
|
--usb_pack arg AirSpy USB bit packing
|
|
--dc_remove arg DC remove
|
|
--dec arg decimation: 2^dec, range: 0-8
|
|
--lowpass arg lowpass bandwidth in Hertz
|
|
--lp_trans arg lowpass transition width. (0-1)
|
|
--sentence_cmd arg Call external command with sentence as parameter
|
|
--sondehub arg (=https://api.v2.sondehub.org) sondehub API url
|
|
```
|
|
|
|
### Examples:
|
|
Print available devices
|
|
|
|
```
|
|
habdecWebsocketServer.exe --device -1
|
|
|
|
|
|
Reading config from file ./habdecWebsocketServer.opts
|
|
Current options:
|
|
device: -1
|
|
sampling_rate: 2.048e+06
|
|
command_host: 0.0.0.0
|
|
command_port: 5,555
|
|
station: habdec
|
|
freq: 4.3435e+08
|
|
gain: 15
|
|
live_print: 1
|
|
baud: 300
|
|
rtty_ascii_bits: 8
|
|
rtty_ascii_stops: 2
|
|
biast: 0
|
|
Found Rafael Micro R820T tuner
|
|
[INFO] [UHD] Win32; Microsoft Visual C++ version 14.0; Boost_106700; UHD_3.13.0.2-1-g78745bda
|
|
|
|
Available devices:
|
|
0:
|
|
device_id 0
|
|
driver airspy
|
|
label AIRSPY [440464c8:39627b4f]
|
|
serial 440464c8:39627b4f
|
|
Sampling Rates:
|
|
2.5e+06
|
|
1e+07
|
|
|
|
1:
|
|
available Yes
|
|
driver rtlsdr
|
|
label Generic RTL2832U OEM :: 00000001
|
|
manufacturer Realtek
|
|
product RTL2838UHIDIR
|
|
rtl 0
|
|
serial 00000001
|
|
tuner Rafael Micro R820T
|
|
Found Rafael Micro R820T tuner
|
|
Sampling Rates:
|
|
250,000
|
|
1.024e+06
|
|
1.536e+06
|
|
1.792e+06
|
|
1.92e+06
|
|
2.048e+06
|
|
2.16e+06
|
|
2.56e+06
|
|
2.88e+06
|
|
3.2e+06
|
|
|
|
|
|
No SDR device specified. Select one by specifying it's NUMBER
|
|
Failed Device Setup. EXIT.
|
|
|
|
```
|
|
|
|
Run with AirSpy
|
|
|
|
habdecWebsocketServer.exe --device 0 --sampling_rate 2.5e6
|
|
|
|
Specify websocket address and port
|
|
|
|
habdecWebsocketServer.exe --device 0 --sampling_rate 2.5e6 -port 12.13.14.15:5555
|
|
|
|
Some more options
|
|
```
|
|
habdecWebsocketServer.exe --device 0 --sampling_rate 2.5e6
|
|
--port 12.13.14.15:5555 --station Fred
|
|
--rtty 300 8 2
|
|
--print 1
|
|
--freq 434.5 --gain 20 --biast 1 --afc 1
|
|
```
|
|
|
|
|
|
|
|
### Web Client
|
|
|
|
To control habdec parameters from your browser:
|
|
- start browser
|
|
- open `habdec/code/webClient/index.html` file from disk
|
|
- set server field ip:port and Connect
|
|
|
|
Do not try connecting directly to `http://ip:port ` - habdec is not an HTTP server and you will see this error:
|
|
|
|
`The WebSocket handshake Connection field is missing the upgrade token`
|
|
|
|
|
|
## Known Limitations
|
|
|
|
- RTTY Modes **NOT** supported: 5bit baudot, 1.5 bit stop
|
|
- SSDV images are not uploaded to http://ssdv.habhub.org
|
|
- Automatic Frequency Correction needs more work. Use consciously. dc_remove=on can help if AFC is confused by center spike.
|
|
- Connecting from browser is not very reliable yet, sometimes you need to refresh and wait.
|
|
|
|
|
|
## Reporting Problems
|
|
|
|
Use bugtracker.
|
|
|
|
## Authors
|
|
|
|
* **Michał Frątczak** - *parts of code from* - [GQRX](https://github.com/csete/gqrx)
|
|
|
|
## License
|
|
|
|
This project is licensed under the GNU General Public License
|