diff --git a/rs92/README.md b/rs92/README.md new file mode 100644 index 0000000..25f3bb9 --- /dev/null +++ b/rs92/README.md @@ -0,0 +1,107 @@ + +## Radiosonde RS92 + +Tools for decoding RS92-SGP and RS92-AGP radiosonde signals. + +### Files + +* `nav_gps_vel.c` - include-file for `rs92gps.c`, `rs92gps_2dfix.c`, `rs92ecc.c`, `rs92agp.c` + +* `rs92gps.c` - RS92-SGP decoder (includes `nav_gps_vel.c`) + + #### Compile + `gcc rs92gps.c -lm -o rs92gps` + + #### Usage + `./rs92gps [options] `
+ * `file`:
+ 1.1 ``: FM-demodulated signal, recorded as wav audio file
+ 2.1 `--rawin1 `: raw data file created with option `-r`
+ 2.2 `--rawin2 `: SM raw data + * `options`:
+ `-i`: invert signal/polarity
+ `-r`: output raw data
+ `-a `: use SEM almanac (GPS satellites, orbital data) + (cf. https://celestrak.com/GPS/almanac/SEM/)
+ `-e `: use RINEX ephemerides (GPS satellites, orbital data) + (e.g. YYYY=2017: ftp://cddis.gsfc.nasa.gov/gnss/data/daily/2017/brdc/, + brdcDDD0.YYn.Z, YY - year, DDD - day)
+ `-v`: additional data/info
+ `--vel`: output velocity (vH: horizontal, D: direction/heading, vV: vertical)
+ `--crc`: output only frames with valid GPS-CRC
+ + `./rs92gps -h`: list more options + + #### Examples + The rs92-radiosonde transmits pseudorange GPS data and GPS time. + To calculate its position, orbital data of the GPS satellites is needed. + You can use either almanac data which is less accurate (but can be used +/- 3 days), + or rinex ephemerides data (recommended) which is more accurate but should not be + older than 2 hours. + The recommended sample rate of the FM-demodulated signal is 48 kHz. + The GPS-altitude is above ellipsoid (in europe, subtract 40-50m geoid height). + * `./rs92gps -r 2015101_14Z.wav > raw.txt` (raw output into `raw.txt`)
+ `./rs92gps -v -e brdc3050.15n --rawin1 raw.txt` + * `./rs92gps -v -e brdc3050.15n 2015101_14Z.wav` + * `./rs92gps -v --vel2 -e brdc3050.15n 2015101_14Z.wav | tee log.txt` (console output and into file `log.txt`) + + The FSK-demodulation is kept very simple. If the signal quality is low, a lowpass filter is recommended, e.g. + (using `sox`) + * `sox 2015101_14Z.wav -t wav - lowpass 2600 2>/dev/null | ./rs92gps -v -e brdc3050.15n` + + You can redirect live audio stream to the decoder via `sox`, e.g. + * `sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | ./rs92gps -v --vel -e brdc3050.15n` + * `sox -t oss /dev/dsp -t wav - lowpass 2600 2>/dev/null | stdbuf -oL ./rs92gps -v --vel2 -e brdc3050.15n | tee log.txt`
+ + If the signal is inverted + (depends on sdr-software and/or audio-card/settings), try option `-i`. + +* `rs92gps_2dfix.c` - test decoder for 2d-fix (if only 3 satellites are available). If the position altitude is known/given, + a position can be calculated with 3 satellites. + + #### Compile + `gcc rs92gps_2dfix.c -lm -o rs92gps_2dfix` + + #### Usage + Same as `rs92gps`. + Additional option `--2dalt `:
+ `` is the (estimated) altitude of the radiosonde in meters above ellipsoid. + Default (without `--2dalt `) is 0m. + + +* `rs92ecc.c` - RS92-SGP decoder with Reed-Solomon error correction (uses fec-lib by KA9Q) + + #### Compile + * ka9q-fec (fec-3.0.1):
+ `gcc -c init_rs_char.c`
+ `gcc -c decode_rs_char.c`
+ * `gcc init_rs_char.o decode_rs_char.o rs92ecc.c -lm -o rs92ecc`
+ (includes also `fec.h` from fec-3.0.1) + + #### Usage + Same as `rs92gps`. + Additional option `--ecc`. + + Will be replaced by Reed-Solom-Decoder in `RS/ecc/bch_ecc.c` (cf. `RS/rs41/rs41ecc.c`). + + +* `rs92agp.c` - RS92-AGP, RS92-BGP decoder + +* `rs92.txt` - infos + +* `pos2kml.pl`, `pos2gpx.pl`, `pos2nmea.pl`
+ perl scripts for kml-, gpx-, or nmea-output, resp. + #### Usage/Example + `./rs92ecc --ecc --crc -v --vel2 -e brdc3050.15n 2015101_14Z.wav | ./pos2nmea.pl`
+ `stderr`: frame output
+ `stdout`: NMEA output
+ Only NMEA: + `./rs92ecc --ecc --crc -v --vel2 -e brdc3050.15n 2015101_14Z.wav | ./pos2nmea.pl 2>/dev/null` + + +* `gps_navdata.c` - test tool/example, compares orbital data. Includes `nav_gps.c` and + compares `almanac.sem.week0843.061440.txt`, `brdc2910.15n`, `nga18670.Z`. + + + +