Skip to content

Commit

Permalink
Merge branch 'main' into maint-3.10
Browse files Browse the repository at this point in the history
  • Loading branch information
daniestevez committed Oct 24, 2022
2 parents c12756e + 390ea29 commit 74b29d0
Show file tree
Hide file tree
Showing 72 changed files with 1,629 additions and 50 deletions.
26 changes: 25 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

## [5.1.0], [4.8.0], [3.15.0] - 2022-10-24

### Added
- Support for AzaadiSAT
- Support for BlueWalker 3
- Support for EIRSAT-1
- Support for GEOSCAN-EDELVEIS
- Support for HSU-SAT1
- Support for JAGSAT-1
- Support for Light-1
- Support for 10 Sputnix satellites in 2022-08-09 launch
- Support for SelfieSat
- Support for TUMnanoSAT
- Phase Unwrap block
- gr_satellites --satcfg to read default arguments from file

### Fixed
- AALTO deframer GRC file
- FSK demodulator with negative deviation in non-IQ mode
- Python bindings for 8APSK Costas Loop

## [5.0.0], [4.7.0], [3.14.0] - 2022-07-22

### Added
Expand Down Expand Up @@ -520,8 +541,10 @@ Large refactor release bringing new functionality and improvements. This is an o
## [1.0.0] - 2018-08-02
First gr-satellites release using semantic versioning

[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.0.0...main
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.1.0...main
[5.1.0]: https://github.com/daniestevez/gr-satellites/compare/v5.0.0...v5.1.0
[5.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.6.0...v5.0.0
[4.8.0]: https://github.com/daniestevez/gr-satellites/compare/v4.7.0...v4.8.0
[4.7.0]: https://github.com/daniestevez/gr-satellites/compare/v4.6.0...v4.7.0
[4.6.0]: https://github.com/daniestevez/gr-satellites/compare/v4.5.0...v4.6.0
[4.5.0]: https://github.com/daniestevez/gr-satellites/compare/v4.4.0...v4.5.0
Expand All @@ -532,6 +555,7 @@ First gr-satellites release using semantic versioning
[4.1.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0...v4.1.0
[4.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0-rc1...v4.0.0
[4.0.0-rc1]: https://github.com/daniestevez/gr-satellites/compare/v3.7.0...v4.0.0-rc1
[3.14.0]: https://github.com/daniestevez/gr-satellites/compare/v3.14.0...v3.15.0
[3.14.0]: https://github.com/daniestevez/gr-satellites/compare/v3.13.0...v3.14.0
[3.13.0]: https://github.com/daniestevez/gr-satellites/compare/v3.12.0...v3.13.0
[3.12.0]: https://github.com/daniestevez/gr-satellites/compare/v3.11.0...v3.12.0
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)

# Set the version information here
set(VERSION_MAJOR 5)
set(VERSION_API 0)
set(VERSION_API 1)
set(VERSION_ABI 0)
set(VERSION_PATCH 0)

Expand Down
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,17 @@ channels such as email. Please understand this when asking for support.
Take a look [here](https://github.com/daniestevez/gr-satellites/discussions/304) to
check whether a new topic fits better in the issues page or in the discussions page.

## Known problems

The AVX2 Viterbi decoder in [Volk](https://github.com/gnuradio/volk) versions
earlier than 1.5.0 is broken (the decoder
[was disabled in Volk 1.5.0](https://github.com/gnuradio/volk/commit/61497d115aead301850453d418415f5ad346ee25)).
If using an older version of Volk on a machine that supports AVX2, the
gr-satellites decoders for the satellites that use convolutional coding will not
work. To solve this, the AVX2 kernel should be disabled in `~/.volk/volk_config` or by using
the `VOLK_GENERIC=1` environment variable. See
[issue #217](https://github.com/daniestevez/gr-satellites/issues/217)).

## Satellite teams

Satellite teams interested in using gr-satellites for you groundstation
Expand Down
16 changes: 9 additions & 7 deletions apps/gr_satellites
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ if gr.api_version() != '9':
import satellites.core
import satellites.components.datasources as datasources
from satellites.utils.config import open_config
from satellites.utils.satcfg import get_cfg
from satellites.satyaml import yamlfiles


Expand Down Expand Up @@ -65,6 +66,10 @@ def argument_parser():
p.add_argument(
'--ignore_unknown_args', action='store_true',
help='Treat unknown arguments as warning')
p.add_argument(
'--satcfg', action='store_true',
help='Use arguments from sat.cfg for named satellite'
)

p_input = p.add_argument_group('input')

Expand Down Expand Up @@ -151,6 +156,7 @@ class gr_satellites_top_block(gr.top_block):
gr.top_block.__init__(self, 'gr-satellites top block')
sat = parse_satellite(sys.argv[1])
try:
norad = yamlfiles.open_satyaml(**parse_satellite(sys.argv[1]))['norad']
satellites.core.gr_satellites_flowgraph.add_options(parser, **sat)
except ValueError as e:
if e.args[0] == 'satellite not found':
Expand All @@ -162,16 +168,14 @@ class gr_satellites_top_block(gr.top_block):
print('Could not open SatYAML file:')
print(e)
exit(1)
satcfg_args = get_cfg(norad) if '--satcfg' in sys.argv[2:] else []
if '--ignore_unknown_args' in sys.argv[2:]:
options, unknown = parser.parse_known_args(sys.argv[2:])
options, unknown = parser.parse_known_args(satcfg_args + sys.argv[2:])
if len(unknown) > 0:
print('Warning: unknown arguments passed {}'.format(unknown),
file=sys.stderr)
else:
options = parser.parse_args(sys.argv[2:])
if options.list_satellites:
list_satellites()
sys.exit(0)
options = parser.parse_args(satcfg_args + sys.argv[2:])
check_options(options, parser)

self.options = options
Expand Down Expand Up @@ -300,8 +304,6 @@ def main():
if len(sys.argv) >= 2 and sys.argv[1] in ['--version',
'--list_satellites']:
options = parser.parse_args()
if options.list_satellites:
list_satellites()
sys.exit(0)

if len(sys.argv) <= 1 or sys.argv[1][0] == '-':
Expand Down
12 changes: 12 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
gr-satellites (5.1.0-0) jammy kinetic; urgency=medium

* Mainstream release v5.1.0

-- <daniel@destevez.net> Mon, 24 Oct 2022 17:30:00 +0000

gr-satellites (5.0.0-1) jammy; urgency=medium

* Add additional dependencies to Debian package

-- <daniel@destevez.net> Fri, 22 Jul 2022 20:40:00 +0000

gr-satellites (5.0.0-0) jammy; urgency=medium

* Mainstream release v5.0.0
Expand Down
9 changes: 5 additions & 4 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@ Build-Depends: cmake,
dh-python,
doxygen,
gnuradio-dev,
libsndfile1-dev,
liborc-0.4-dev,
libspdlog-dev,
pkg-config,
python3-dev,
python3-six,
swig,
python3-construct,
python3-requests
python3-dev,
python3-requests,
python3-six
Standards-Version: 4.5.0
Homepage: http://github.com/daniestevez/gr-satellites
Vcs-Git: git://github.com/daniestevez/gr-satellites.git
Expand Down
18 changes: 18 additions & 0 deletions docs/source/command_line.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ basic information about the arguments it allows.
$ gr_satellites
usage: gr_satellites satellite [-h] [--version] [--list_satellites]
[--ignore_unknown_args]
[--satcfg]
(--wavfile WAVFILE | --rawfile RAWFILE | --rawint16 RAWINT16 | --audio [DEVICE] | --udp | --kiss_in KISS_IN)
[--samp_rate SAMP_RATE] [--udp_ip UDP_IP]
[--udp_port UDP_PORT] [--iq] [--udp_raw]
Expand Down Expand Up @@ -232,6 +233,7 @@ For example, this shows all the options allowed by the FUNcube-1 decoder:
--version show program's version number and exit
--list_satellites list supported satellites and exit
--ignore_unknown_args Treat unknown arguments as warning
--satcfg Use default options from sat.cfg for named satellite
input:
--wavfile WAVFILE WAV/OGG/FLAC input file (using libsndfile)
Expand Down Expand Up @@ -753,6 +755,22 @@ arguments to a warning instead of exiting with an error. This can be useful when
running in automated scripts and some options may not be available on that satellite.
For example the ``--f_offset`` and ``--use_agc``

Using sat.cfg for default arguments
"""""""""""""""""""""""""""""""""""

With ``--satcfg`` the configuration file `~/.gr_satellites/sat.cfg` will be read and arguments
added automatically to the command line. Some of these can be overridden with specifying
them on the command line again.
The format of the file is one row per satellite, first the norad ID then the rest of the row is treated as aguments.

Example:

.. code-block:: ini
39444 --f_offset 12000
46276 --disable_dc_block --deviation 500 --clk_bw 0.15
35933 --clk_bw 0.3
.. _GQRX: https://gqrx.dk/
.. _gr-frontends: https://github.com/daniestevez/gr-frontends
Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = '5.0.0'
release = '5.1.0'


# -- General configuration ---------------------------------------------------
Expand Down
17 changes: 12 additions & 5 deletions docs/source/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ out-of-tree module.
Dependencies
^^^^^^^^^^^^

gr-satellites requires `GNU Radio`_ version at least 3.8.
gr-satellites requires `GNU Radio`_ version at least 3.8. Depending on the GNU
Radio version, a different branch of gr-satellites should be used. See the
`gr-satellites README`_ for more information about the different branches.


.. warning::
Expand All @@ -21,29 +23,34 @@ gr-satellites requires `GNU Radio`_ version at least 3.8.
by default when GNU Radio is installed. The main ones that may cause problems
are:

* swig
* swig (only for GNU Radio 3.8)
* liborc (in Debian-based distributions ``liborc-0.4-dev`` is needed)
* libsndfile (only for GNU Radio 3.9 and greater; in Debian-based
distributions ``libsndfile1-dev`` is needed).
* spdlog (only for GNU Radio 3.10 and greater; in Debian-based distributions
``libspdlog-dev`` is needed).

Additionally, the following libraries are required:
Additionally, the following Python packages are required:

* `construct`_, at least version 2.9.
* `requests`_

.. note::
construct and requests are Python packages and can be installed with `pip`_
construct and requests can be installed with `pip`_
by doing

.. code-block:: console
$ pip3 install --user --upgrade construct requests
Alternatively, construct and requests can be installed from your
distribution's package manager
distribution's package manager.

.. _GNU Radio: https://gnuradio.org/
.. _construct: https://construct.readthedocs.io/en/latest/
.. _requests: https://pypi.org/project/requests/
.. _pip: https://pypi.org/project/pip/
.. _gr-satellites README: https://github.com/daniestevez/gr-satellites/blob/main/README.md

Optional dependencies
^^^^^^^^^^^^^^^^^^^^^
Expand Down
9 changes: 8 additions & 1 deletion docs/source/satyaml.rst
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,10 @@ The framings allowed in the ``framing`` field are the following:
transceiver with a PN9 scrambler and a CRC-16

* ``Reaktor Hello World``, custom framing used by Reaktor Hello World. It uses a
Texas Intruments CC1125 transceiver with a PN9 scrambler and a CRC-16
Texas Intruments CC1125 transceiver with a PN9 scrambler and a CRC-16.

* ``Light-1``, custom framing used by Light-1 and BlueWalker 3. It is the same
as the ``Reaktor Hello World`` framing, but uses a different syncword.

* ``S-NET``, custom framing used by S-NET, which uses BCH FEC and interleaving

Expand Down Expand Up @@ -250,6 +253,10 @@ The framings allowed in the ``framing`` field are the following:

* ``FORESAIL-1``, the custom framing used by FORESAIL-1. It is the same as the
AX-100 ASM mode, but the ASM used is the CCSDS ASM ``0x1ACFFC1D``.

* ``HSU-SAT1``, the custom framing used by HSU-SAT1.

* ``GEOSCAN``, the custom framing used by GEOSCAN-EDELVEIS.

Some framings, such as the CCSDS protocols need the additional field
``frame size`` to indicate the frame size.
Expand Down
1 change: 1 addition & 0 deletions grc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ install(FILES
satellites_pdu_length_filter.block.yml
satellites_pdu_scrambler.block.yml
satellites_pdu_to_kiss.block.yml
satellites_phase_unwrap.block.yml
satellites_print_header.block.yml
satellites_print_timestamp.block.yml
satellites_pwsat2_submitter.block.yml
Expand Down
3 changes: 3 additions & 0 deletions grc/components/deframers/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,12 @@ install(FILES
satellites_endurosat_deframer.block.yml
satellites_eseo_deframer.block.yml
satellites_fossasat_deframer.block.yml
satellites_geoscan_deframer.block.yml
satellites_grizu263a_deframer.block.yml
satellites_hsu_sat1_deframer.block.yml
satellites_ideassat_deframer.block.yml
satellites_k2sat_deframer_component.block.yml
satellites_light1_deframer.block.yml
satellites_lilacsat_1_deframer.block.yml
satellites_lucky7_deframer.block.yml
satellites_mobitex_deframer.block.yml
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ outputs:

templates:
imports: import satellites.components.deframers
make: satellites.components.deframers.reaktor_hello_world_deframer(syncword_threshold = ${threshold}, options=${options})
make: satellites.components.deframers.aalto_deframer(syncword_threshold = ${threshold}, options=${options})

documentation: |-
Deframes AALTO-1 custom packets
Expand Down
43 changes: 43 additions & 0 deletions grc/components/deframers/satellites_geoscan_deframer.block.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
id: satellites_geoscan_deframer
label: GEOSCAN Deframer
category: '[Satellites]/Deframers'

parameters:
- id: threshold
label: Syncword threshold
dtype: int
default: 0
- id: options
label: Command line options
dtype: string
default: '""'
hide: part

inputs:
- domain: stream
dtype: float

outputs:
- domain: message
id: out

templates:
imports: import satellites.components.deframers
make: satellites.components.deframers.geoscan_deframer(syncword_threshold = ${threshold}, options=${options})

documentation: |-
Deframes AALTO-1 custom packets
The frames are transmitted by a Texas Intruments CC1125 transceiver with a PN9 scrambler and the built-in CRC.
Input:
A stream of soft symbols containing GEOSCAN packets
Output:
PDUs with the deframed GEOSCAN packets
Parameters:
Syncword threshold: number of bit errors to allow in syncword detection
Command line options: options to pass down to the block, following the syntax of the gr_satellites command line tool
file_format: 1
35 changes: 35 additions & 0 deletions grc/components/deframers/satellites_hsu_sat1_deframer.block.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
id: satellites_hsu_sat1_deframer
label: HSU-SAT1 Deframer
category: '[Satellites]/Deframers'

parameters:
- id: options
label: Command line options
dtype: string
default: '""'
hide: part

inputs:
- domain: stream
dtype: float

outputs:
- domain: message
id: out

templates:
imports: import satellites.components.deframers
make: satellites.components.deframers.hsu_sat1_deframer(options=${options})

documentation: |-
Deframes HSU-SAT1 packets
Input:
A stream of soft symbols containing HSU-SAT1 packets
Output:
PDUs with the deframed packets
Command line options: options to pass down to the block, following the syntax of the gr_satellites command line tool
file_format: 1

0 comments on commit 74b29d0

Please sign in to comment.