1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2017, 2018, 2019, 2020, 2022 Arun Isaac <arunisaac@systemreboot.net>
3 ;;; Copyright © 2019, 2020 Christopher Howard <christopher@librehacker.com>
4 ;;; Copyright © 2019, 2020 Evan Straw <evan.straw99@gmail.com>
5 ;;; Copyright © 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
6 ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
7 ;;; Copyright © 2020 Charlie Ritter <chewzerita@posteo.net>
8 ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
9 ;;; Copyright © 2021 João Pedro Simas <jpsimas@gmail.com>
10 ;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>
11 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
12 ;;; Copyright © 2022 Sheng Yang <styang@fastmail.com>
13 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
14 ;;; Copyright © 2022 Ryan Tolboom <ryan@using.tech>
16 ;;; This file is part of GNU Guix.
18 ;;; GNU Guix is free software; you can redistribute it and/or modify it
19 ;;; under the terms of the GNU General Public License as published by
20 ;;; the Free Software Foundation; either version 3 of the License, or (at
21 ;;; your option) any later version.
23 ;;; GNU Guix is distributed in the hope that it will be useful, but
24 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 ;;; GNU General Public License for more details.
28 ;;; You should have received a copy of the GNU General Public License
29 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
31 (define-module (gnu packages radio)
32 #:use-module ((guix licenses) #:prefix license:)
33 #:use-module (guix gexp)
34 #:use-module (guix packages)
35 #:use-module (guix download)
36 #:use-module (guix git-download)
37 #:use-module (guix utils)
38 #:use-module (gnu packages)
39 #:use-module (gnu packages admin)
40 #:use-module (gnu packages algebra)
41 #:use-module (gnu packages astronomy)
42 #:use-module (gnu packages audio)
43 #:use-module (gnu packages autotools)
44 #:use-module (gnu packages base)
45 #:use-module (gnu packages bash)
46 #:use-module (gnu packages boost)
47 #:use-module (gnu packages check)
48 #:use-module (gnu packages compression)
49 #:use-module (gnu packages curl)
50 #:use-module (gnu packages databases)
51 #:use-module (gnu packages documentation)
52 #:use-module (gnu packages engineering)
53 #:use-module (gnu packages fltk)
54 #:use-module (gnu packages gcc)
55 #:use-module (gnu packages gd)
56 #:use-module (gnu packages geo)
57 #:use-module (gnu packages gettext)
58 #:use-module (gnu packages ghostscript)
59 #:use-module (gnu packages gl)
60 #:use-module (gnu packages glib)
61 #:use-module (gnu packages gnome)
62 #:use-module (gnu packages golang)
63 #:use-module (gnu packages gps)
64 #:use-module (gnu packages graphviz)
65 #:use-module (gnu packages gstreamer)
66 #:use-module (gnu packages gtk)
67 #:use-module (gnu packages image)
68 #:use-module (gnu packages image-processing)
69 #:use-module (gnu packages javascript)
70 #:use-module (gnu packages libusb)
71 #:use-module (gnu packages linux)
72 #:use-module (gnu packages logging)
73 #:use-module (gnu packages lua)
74 #:use-module (gnu packages maths)
75 #:use-module (gnu packages mp3)
76 #:use-module (gnu packages multiprecision)
77 #:use-module (gnu packages ncurses)
78 #:use-module (gnu packages networking)
79 #:use-module (gnu packages perl)
80 #:use-module (gnu packages pkg-config)
81 #:use-module (gnu packages popt)
82 #:use-module (gnu packages pulseaudio)
83 #:use-module (gnu packages protobuf)
84 #:use-module (gnu packages pretty-print)
85 #:use-module (gnu packages python)
86 #:use-module (gnu packages python-science)
87 #:use-module (gnu packages python-web)
88 #:use-module (gnu packages python-xyz)
89 #:use-module (gnu packages qt)
90 #:use-module (gnu packages readline)
91 #:use-module (gnu packages ruby)
92 #:use-module (gnu packages sdl)
93 #:use-module (gnu packages serialization)
94 #:use-module (gnu packages sphinx)
95 #:use-module (gnu packages swig)
96 #:use-module (gnu packages tcl)
97 #:use-module (gnu packages tex)
98 #:use-module (gnu packages texinfo)
99 #:use-module (gnu packages tls)
100 #:use-module (gnu packages video)
101 #:use-module (gnu packages xiph)
102 #:use-module (gnu packages xml)
103 #:use-module (gnu packages xorg)
104 #:use-module (guix build-system cmake)
105 #:use-module (guix build-system glib-or-gtk)
106 #:use-module (guix build-system gnu)
107 #:use-module (guix build-system go)
108 #:use-module (guix build-system python)
109 #:use-module (guix build-system qt))
111 (define-public libfec
112 ;; Use commit to get compilation fixes that are not in a release yet.
113 (let ((commit "9750ca0a6d0a786b506e44692776b541f90daa91")
117 (version (git-version "1.0" revision commit))
122 (url "https://github.com/quiet/libfec")
124 (file-name (git-file-name name version))
126 (base32 "0i6jhrdswr1wglyb9h39idpz5v9z13yhidvlbj34vxpyngrkhlvs"))))
127 (build-system cmake-build-system)
129 `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
130 #:test-target "test_all"))
131 (home-page "https://github.com/quiet/libfec")
132 (synopsis "Forward error correction algorithms library")
134 "This package provides a set of functions that implement several popular
135 @dfn{forward error correction} (FEC) algorithms and several low-level routines
136 useful in modems implemented with @dfn{digital signal processing} (DSP).")
137 (license license:lgpl2.1))))
139 (define-public libcorrect
140 (let ((commit "f5a28c74fba7a99736fe49d3a5243eca29517ae9")
144 (version (git-version "0" revision commit))
149 (url "https://github.com/quiet/libcorrect")
151 (file-name (git-file-name name version))
153 (base32 "0qc9k8x51k2xfvp6cx8vdiyb3g6fl1y657z4m201aw2m06hs1hzg"))))
154 (build-system cmake-build-system)
157 #:test-target "check"
159 #~(modify-phases %standard-phases
160 (add-after 'build 'build-libfec-compatibility-layer
162 (invoke "make" "shim")))
163 (add-after 'install 'delete-static-libraries
165 (delete-file (string-append #$output "/lib/libcorrect.a"))
166 (delete-file (string-append #$output "/lib/libfec.a")))))))
167 (home-page "https://github.com/quiet/libcorrect")
168 (synopsis "Forward error correction library")
170 "This library provides convolutional and Reed-Solomon codes for forward
171 error correction. It also includes a compatibility layer so that it can be
172 used as a drop-in substitute for @code{libfec}.")
173 (license license:bsd-3))))
175 (define-public liquid-dsp
180 (origin (method git-fetch)
182 (url "https://github.com/jgaeddert/liquid-dsp")
183 (commit (string-append "v" version))))
184 (file-name (git-file-name name version))
186 (base32 "0mr86z37yycrqwbrmsiayi1vqrgpjq0pn1c3p1qrngipkw45jnn0"))))
187 (build-system gnu-build-system)
189 (list autoconf automake))
193 `(;; For reproducibility, disable use of SSE3, SSE4.1, etc.
194 #:configure-flags '("--enable-simdoverride")
196 (modify-phases %standard-phases
197 (add-after 'install 'delete-static-library
198 (lambda* (#:key outputs #:allow-other-keys)
199 (delete-file (string-append (assoc-ref outputs "out")
200 "/lib/libliquid.a")))))))
201 (home-page "https://liquidsdr.org")
202 (synopsis "Signal processing library for software-defined radios")
204 "Liquid DSP is a @dfn{digital signal processing} (DSP) library designed
205 specifically for software-defined radios on embedded platforms. The aim is to
206 provide a lightweight DSP library that does not rely on a myriad of external
207 dependencies or proprietary and otherwise cumbersome frameworks. All signal
208 processing elements are designed to be flexible, scalable, and dynamic,
209 including filters, filter design, oscillators, modems, synchronizers, complex
210 mathematical operations, and much more.")
211 (license license:expat)))
213 (define-public rtl-sdr
214 ;; No tagged release since 2018
215 (let ((commit "5e73f90f1d85d8db2e583f3dbf1cff052d71d59b")
219 (version (git-version "0.6.0" revision commit))
224 (url "https://git.osmocom.org/rtl-sdr/")
226 (file-name (git-file-name name version))
228 (base32 "106fwzyr7cba952f3p3wm3hdqzm9zvm0v3gcz4aks2n7fnvrgrvn"))))
229 (build-system cmake-build-system)
235 `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
236 "-DINSTALL_UDEV_RULES=ON")
237 #:tests? #f ; No tests
239 (modify-phases %standard-phases
240 (add-after 'unpack 'fix-paths
241 (lambda* (#:key outputs #:allow-other-keys)
242 (substitute* "CMakeLists.txt"
243 (("DESTINATION \"/etc/udev/")
244 (string-append "DESTINATION \""
245 (assoc-ref outputs "out")
247 (add-after 'fix-paths 'fix-udev-rules
249 (substitute* "rtl-sdr.rules"
250 ;; The plugdev group does not exist; use dialout as in
251 ;; the hackrf package.
252 (("GROUP=\"plugdev\"")
253 "GROUP=\"dialout\"")))))))
254 (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr")
255 (synopsis "Software defined radio driver for Realtek RTL2832U")
256 (description "DVB-T dongles based on the Realtek RTL2832U can be used as a
257 cheap software defined radio, since the chip allows transferring the raw I/Q
258 samples to the host. @code{rtl-sdr} provides drivers for this purpose.
260 The default Linux driver managing DVB-T dongles as TV devices doesn't work for
261 SDR purposes and clashes with this package. Therefore you must prevent the
262 kernel from loading it automatically by adding the following line to your
263 system configuration:
266 (kernel-arguments '(\"modprobe.blacklist=dvb_usb_rtl28xxu\"))
269 To install the rtl-sdr udev rules, you must extend 'udev-service-type' with
270 this package. E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
271 (license license:gpl2+))))
273 (define-public airspyhf
281 (url "https://github.com/airspy/airspyhf")
283 (file-name (git-file-name name version))
285 (base32 "0n699i5a9fzzhf80fcjlqq6p2a013rzlwmwv4nmwfafy6c8cr924"))))
286 (build-system cmake-build-system)
292 '(#:configure-flags '("-DINSTALL_UDEV_RULES=ON")
293 #:tests? #f ; No tests
295 (modify-phases %standard-phases
296 (add-after 'unpack 'fix-paths
297 (lambda* (#:key outputs #:allow-other-keys)
298 (substitute* "tools/CMakeLists.txt"
299 (("DESTINATION \"/etc/udev/")
300 (string-append "DESTINATION \""
301 (assoc-ref outputs "out")
303 (add-after 'fix-paths 'fix-udev-rules
305 (substitute* "tools/52-airspyhf.rules"
306 ;; The plugdev group does not exist; use dialout as in
307 ;; the hackrf package.
308 (("GROUP=\"plugdev\"")
309 "GROUP=\"dialout\"")))))))
310 (home-page "https://github.com/airspy/airspyhf")
311 (synopsis "Software defined radio driver for Airspy HF+")
313 "This package provides the driver and utilities for controlling the Airspy
314 HF+ Software Defined Radio (SDR) over USB.
316 To install the airspyhf udev rules, you must extend @code{udev-service-type}
317 with this package. E.g.: @code{(udev-rules-service 'airspyhf airspyhf)}")
318 (license license:bsd-3)))
320 (define-public soapysdr
328 (url "https://github.com/pothosware/SoapySDR")
329 (commit (string-append "soapy-sdr-" version))))
330 (file-name (git-file-name name version))
332 (base32 "19f2x0pkxvf9figa0pl6xqlcz8fblvqb19mcnj632p0l8vk6qdv2"))))
333 (build-system cmake-build-system)
337 (list (search-path-specification
338 (variable "SOAPY_SDR_PLUGIN_PATH")
339 (files (list (string-append "lib/SoapySDR/modules"
340 (version-major+minor version)))))))
341 (home-page "https://github.com/pothosware/SoapySDR/wiki")
342 (synopsis "Vendor and platform neutral SDR support library")
344 "SoapySDR is a library designed to support several kinds of software
345 defined radio hardware devices with a common API.")
346 (license license:boost1.0)))
348 (define-public soapyairspyhf
350 (name "soapyairspyhf")
356 (url "https://github.com/pothosware/SoapyAirspyHF")
357 (commit (string-append "soapy-airspyhf-" version))))
358 (file-name (git-file-name name version))
360 (base32 "04krqinglgkjvx7klqik6yn8rb4mlpwzb6zvnmvm7szqci2agggz"))))
361 (build-system cmake-build-system)
363 (list airspyhf soapysdr))
365 `(#:tests? #f)) ; No test suite
366 (home-page "https://github.com/pothosware/SoapyAirspyHF/wiki")
367 (synopsis "SoapySDR Airspy HF+ module")
368 (description "This package provides Airspy HF+ devices support to the
370 (license license:expat)))
372 (define-public soapyaudio
373 ;; Use commit directly because fixes for recent hamlib are not in the latest
375 (let ((commit "79129c9bb98deca3294c05108fdc545579af6418")
379 (version (git-version "0.1.1" revision commit))
384 (url "https://github.com/pothosware/SoapyAudio")
386 (file-name (git-file-name name version))
388 (base32 "0mrcnd3k0j599x3k93dkpi5zgr0l7nblz8am9f0s6zs3dikfncvb"))
389 (modules '((guix build utils)))
392 ;; Delete bundled rtaudio.
393 (delete-file-recursively "RtAudio")))))
394 (build-system cmake-build-system)
406 `(#:configure-flags '("-DUSE_HAMLIB=ON")
407 #:tests? #f ; No test suite
409 (modify-phases %standard-phases
410 (add-after 'unpack 'fix-rtaudio-detection
411 ;; CMake only finds rtaudio if it looks for it before looking
412 ;; for hamlib, not sure why...
414 (substitute* "CMakeLists.txt"
415 (("option\\(USE_HAMLIB OFF" all)
416 (string-append "find_package(RtAudio)\n" all))))))))
417 (home-page "https://github.com/pothosware/SoapyAudio/wiki")
418 (synopsis "SoapySDR module for audio devices")
420 "This package provides support for sound card devices to the SoapySDR
421 library. It also adds hamlib support, which provides basic gain and frequency
422 controls for certain tuners which may be paired with an audio device.")
423 (license license:expat))))
425 (define-public soapyhackrf
433 (url "https://github.com/pothosware/SoapyHackRF")
434 (commit (string-append "soapy-hackrf-" version))))
435 (file-name (git-file-name name version))
437 (base32 "0wnnsm3c4ivwcbs1b68svbyds13aajws9mqk2xjc2pqgj0fdhcvz"))))
438 (build-system cmake-build-system)
440 (list hackrf soapysdr))
442 `(#:tests? #f)) ; No test suite
443 (home-page "https://github.com/pothosware/SoapyHackRF/wiki")
444 (synopsis "SoapySDR HackRF module")
446 "This package provides HackRF devices support to the SoapySDR library.")
447 (license license:expat)))
449 (define-public soapyrtlsdr
457 (url "https://github.com/pothosware/SoapyRTLSDR")
458 (commit (string-append "soapy-rtl-sdr-" version))))
459 (file-name (git-file-name name version))
461 (base32 "1dlnryj6k20pk7w7v4v13y099r7ikhvlzbgzgphmi5cxkdv0shrd"))))
462 (build-system cmake-build-system)
464 (list rtl-sdr soapysdr))
466 `(#:tests? #f)) ; No test suite
467 (home-page "https://github.com/pothosware/SoapyRTLSDR/wiki")
468 (synopsis "SoapySDR RTL-SDR module")
470 "This package provides RTL-SDR devices support to the SoapySDR library.")
471 (license license:expat)))
473 (define-public python-simplesoapy
475 (name "python-simplesoapy")
480 (uri (pypi-uri "SimpleSoapy" version))
482 (base32 "0bh02m5zj82mp7sxpvwr24ylmrbp3p4r9q7psqcfnxl628w3b4hl"))))
483 (build-system python-build-system)
485 (list python-numpy soapysdr))
486 (home-page "https://github.com/xmikos/simplesoapy")
487 (synopsis "Python wrapper for SoapySDR")
489 "This package provide a simple pythonic wrapper for the SoapySDR
491 (license license:expat)))
493 (define-public soapy-power
500 (uri (pypi-uri "soapy_power" version))
502 (base32 "1rajmygcqvv5ph7yk65r4w581lfszrz0f48csvfmma1ami0lirdm"))))
503 (build-system python-build-system)
508 python-simplespectral))
509 (home-page "https://github.com/xmikos/soapy_power")
510 (synopsis "Obtain power spectrum from SDR devices")
511 (description "The @code{soapy_power} obtains the power spectrum from SDR
512 devices that are supported by the SoapySDR library.")
513 (license license:expat)))
515 (define-public qspectrumanalyzer
517 (name "qspectrumanalyzer")
522 (uri (pypi-uri "QSpectrumAnalyzer" version))
524 (base32 "1bhl8zp4z7v3595ailyivx9vb7y5si6kr22aylphb5pf60jxqhn0"))))
525 (build-system python-build-system)
531 python-simplespectral
536 #~(modify-phases %standard-phases
537 (add-after 'install 'wrap-path
538 ;; Add the location of the default backend to PATH.
539 (lambda* (#:key inputs #:allow-other-keys)
540 (wrap-program (string-append #$output
541 "/bin/qspectrumanalyzer")
543 (,(string-append (assoc-ref inputs "soapy-power")
545 (home-page "https://github.com/xmikos/qspectrumanalyzer")
546 (synopsis "Spectrum analyzer for multiple SDR platforms")
548 "This package provides a spectrum analyzer for multiple SDR platforms.
549 It is a GUI for @code{soapy_power}, @code{hackrf_sweep}, @code{rtl_power},
550 @code{rx_power} and other backends.")
551 (license license:gpl3)))
553 (define-public aptdec
554 ;; No release since 2013, use commit directly.
555 (let ((commit "51405971fd4e97714d1e987269e49c6edfe4e0da")
559 (version (git-version "1.7" revision commit))
564 (url "https://github.com/Xerbo/aptdec")
566 (file-name (git-file-name name version))
568 (base32 "0fzkhqnbkc2dd39jzb5m5mwcl31b0x3w0yykpx4s195llq4bdvis"))))
569 (build-system cmake-build-system)
571 (list libpng libsndfile))
573 `(#:tests? #f)) ; no tests
574 (home-page "https://github.com/Xerbo/aptdec")
575 (synopsis "NOAA Automatic Picture Transmission (APT) decoder")
576 (description "Aptdec decodes Automatic Picture Transmission (APT) images.
577 These are medium resolution images of the Earth transmitted by, among other
578 satellites, the POES NOAA weather satellite series. These transmissions are
579 on a frequency of 137 MHz. They can be received using an inexpensive antenna
580 and a dedicated receiver.")
581 (license license:gpl2+))))
583 (define-public redsea
590 (url "https://github.com/windytan/redsea")
591 (commit (string-append "v" version))))
592 (file-name (git-file-name name version))
595 "1bx4l87vz935cj5hapdh1dkjlmlfg73cgsjaf27314n7p4xkv50v"))))
596 (build-system gnu-build-system)
599 (modify-phases %standard-phases
600 ;; The configure.ac file does not explicitly link against libiconv
601 ;; except on Mac OS, causing the build to fail. This phase comments
602 ;; out the original AC_SUBST macro (located inside a conditional) and
603 ;; adds an explicit use of it underneath, so that libiconv is always
605 (add-after 'unpack 'patch-libiconv
607 (substitute* "configure.ac"
611 "esac\nAC_SUBST([ICONV], [\"-liconv\"])"))
614 (list libiconv libsndfile liquid-dsp))
616 (list autoconf automake))
617 (home-page "https://github.com/windytan/redsea")
618 (synopsis "Lightweight RDS to JSON decoder")
619 (description "redsea is a lightweight command-line @dfn{FM Radio Data
620 System} (FM-RDS) decoder. Redsea can be used with any RTL-SDR USB radio stick
621 with the rtl_fm tool, or any other @dfn{software-defined radio} (SDR) via
622 csdr, for example. It can also decode raw ASCII bitstream, the hex format
623 used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
624 (license license:expat)))
626 (define-public gnuradio
634 (url "https://github.com/gnuradio/gnuradio")
635 (commit (string-append "v" version))))
636 (file-name (git-file-name name version))
638 (base32 "0xdhb2blzajxpi0f2ch23hh6bzdwz5q7syi3bmiqzdjlj2yjfzd4"))))
639 (build-system cmake-build-system)
652 (texlive-updmap.cfg (list texlive-amsfonts
654 ;; TODO: Add newunicodechar.
655 texlive-latex-graphics))
656 xorg-server-for-tests))
682 python-pyqt-without-qtwebkit
693 `(#:modules ((guix build cmake-build-system)
694 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
695 ((guix build python-build-system) #:prefix python:)
698 #:imported-modules (,@%cmake-build-system-modules
699 (guix build glib-or-gtk-build-system)
700 (guix build python-build-system))
702 (list "-DENABLE_GRC=ON"
703 (string-append "-DMATHJAX2_ROOT="
704 (assoc-ref %build-inputs "js-mathjax")
705 "/share/javascript/mathjax"))
707 (modify-phases %standard-phases
708 (add-after 'unpack 'make-source-writable
710 ;; The test_add and test_newmod open(sources, "w") for some reason.
711 (for-each make-file-writable
712 (find-files "." ".*"))))
713 (add-after 'unpack 'fix-paths
714 (lambda* (#:key inputs #:allow-other-keys)
715 (let ((qwt (assoc-ref inputs "qwt")))
716 (substitute* "cmake/Modules/FindQwt.cmake"
718 (string-append qwt "/include"))
720 (string-append qwt "/lib"))
721 (("qwt6-\\$\\{QWT_QT_VERSION\\}")
723 (substitute* "cmake/Modules/GrPython.cmake"
726 (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
727 "gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
730 (add-before 'check 'set-test-environment
731 (lambda* (#:key inputs #:allow-other-keys)
732 (setenv "HOME" "/tmp")
734 (setenv "DISPLAY" ":1")))
736 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
737 (invoke "ctest" "-j" (if parallel-tests?
738 (number->string (parallel-job-count))
740 "--output-on-failure"
741 ;;disable broken tests
743 '(;; https://github.com/gnuradio/gnuradio/issues/3871
744 "qa_header_payload_demux"
745 ;; https://github.com/gnuradio/gnuradio/issues/4348
746 "qa_packet_headerparser_b"
747 ;; qa_rotator_cc sometimes fails, it looks like
748 ;; a floating point number precision issue.
751 (add-after 'install 'wrap-python
752 (assoc-ref python:%standard-phases 'wrap))
753 (add-after 'wrap-python 'wrap-glib-or-gtk
754 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
755 (add-after 'wrap-glib-or-gtk 'wrap-with-GI_TYPELIB_PATH
756 (lambda* (#:key inputs outputs #:allow-other-keys)
757 (let ((out (assoc-ref outputs "out"))
758 (paths (map (match-lambda
759 ((output . directory)
760 (let ((girepodir (string-append
762 "/lib/girepository-1.0")))
763 (if (file-exists? girepodir)
767 (wrap-program (string-append out "/bin/gnuradio-companion")
768 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths)))))))))
770 ;; Variables required to find third-party plugins at runtime.
771 (list (search-path-specification
772 (variable "GRC_BLOCKS_PATH")
773 (files '("share/gnuradio/grc/blocks")))
774 (search-path-specification
775 (variable "GUIX_PYTHONPATH")
776 (files (list (string-append "lib/python"
778 (package-version python))
779 "/site-packages"))))))
780 (synopsis "Toolkit for software-defined radios")
782 "GNU Radio is a development toolkit that provides signal processing blocks
783 to implement software radios. It can be used with external RF hardware to
784 create software-defined radios, or without hardware in a simulation-like
786 (home-page "https://www.gnuradio.org")
787 (license license:gpl3+)))
789 (define-public gr-osmosdr
790 ;; No tag for version supporting Gnuradio 3.9; use commit.
791 (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
795 (version (git-version "0.2.3" revision commit))
800 (url "https://git.osmocom.org/gr-osmosdr")
802 (file-name (git-file-name name version))
804 (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
805 (build-system cmake-build-system)
807 (list doxygen pkg-config pybind11 python-mako python-six))
825 `(#:modules ((guix build cmake-build-system)
826 ((guix build python-build-system) #:prefix python:)
828 #:imported-modules (,@%cmake-build-system-modules
829 (guix build python-build-system))
831 (modify-phases %standard-phases
832 (add-after 'install 'wrap-python
833 (assoc-ref python:%standard-phases 'wrap)))))
834 (synopsis "GNU Radio block for interfacing with various radio hardware")
835 (description "This is a block for GNU Radio allowing to use a common API
836 to access different radio hardware.")
837 (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
838 (license license:gpl3+))))
839 (deprecated-package "gnuradio-osmosdr" gr-osmosdr)
841 (define-public libosmo-dsp
849 (url "https://git.osmocom.org/libosmo-dsp")
851 (file-name (git-file-name name version))
853 (base32 "00plihnpym1gkfpflah8il9463qxzm9kx2f07jyvbkszpj8viq5g"))))
854 (build-system gnu-build-system)
856 `(("autoconf" ,autoconf)
857 ("automake" ,automake)
858 ("bash-minimal" ,bash-minimal)
861 ("pkg-config" ,pkg-config)
862 ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
864 ;; TODO: Add newunicodechar.
865 texlive-latex-graphics)))))
870 (modify-phases %standard-phases
871 (add-after 'unpack 'fix-paths
872 (lambda* (#:key inputs #:allow-other-keys)
873 (substitute* "git-version-gen"
875 (search-input-file inputs "/bin/bash"))))))))
876 (synopsis "DSP primitives for SDR")
878 "This a C-language library for common DSP (Digital Signal Processing)
879 primitives for SDR (Software Defined Radio).")
880 (home-page "https://osmocom.org/projects/libosmo-dsp")
881 (license license:gpl2+)))
883 (define-public gr-iqbal
884 ;; No tag for version supporting Gnuradio 3.9; use commit.
885 (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
889 (version (git-version "0.38.2" revision commit))
894 (url "https://git.osmocom.org/gr-iqbal")
896 (file-name (git-file-name name version))
898 (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
899 (build-system cmake-build-system)
916 (synopsis "GNU Radio block to correct IQ imbalance")
918 "This is a GNU Radio block to correct IQ imbalance in quadrature
919 receivers. It's composed of two main block:
921 @item Fix: Given a phase and amplitude error, it will correct a complex signal.
922 @item Optimize: Attempts to auto-detect the phase and amplitude error to feed
923 to the fix block above.
925 (home-page "https://git.osmocom.org/gr-iqbal/")
926 (license license:gpl3+))))
927 (deprecated-package "gnuradio-iqbalance" gr-iqbal)
929 (define-public gr-satellites
931 (name "gr-satellites")
937 (url "https://github.com/daniestevez/gr-satellites")
938 (commit (string-append "v" version))))
939 (file-name (git-file-name name version))
941 (base32 "0mcrxwb27n2v8v8vmcmmm1pbmy3c02a22mz2wnpdsfb2163qpchw"))))
942 (build-system cmake-build-system)
944 (list pkg-config pybind11 python-six))
959 `(#:modules ((guix build cmake-build-system)
960 ((guix build python-build-system) #:prefix python:)
962 #:imported-modules (,@%cmake-build-system-modules
963 (guix build python-build-system))
965 (modify-phases %standard-phases
966 (add-before 'check 'set-test-environment
968 (setenv "HOME" "/tmp")))
969 (add-after 'install 'wrap-python
970 (assoc-ref python:%standard-phases 'wrap)))))
971 (synopsis "GNU Radio decoders for several Amateur satellites")
973 "@code{gr-satellites} is a GNU Radio out-of-tree module encompassing
974 a collection of telemetry decoders that supports many different Amateur
976 (home-page "https://github.com/daniestevez/gr-satellites")
977 (license (list license:asl2.0
989 (url "https://github.com/gqrx-sdr/gqrx")
990 (commit (string-append "v" version))))
991 (file-name (git-file-name name version))
993 (base32 "1ph7fnjxfv7rfdlh17c8j4djvkfqjnalmcvnafhnq7agjy428727"))))
994 (build-system qt-build-system)
1015 `(#:tests? #f)) ; no tests
1016 (synopsis "Software defined radio receiver")
1017 (description "Gqrx is a software defined radio (SDR) receiver implemented
1018 using GNU Radio and the Qt GUI toolkit.")
1019 (home-page "https://gqrx.dk/")
1020 (license license:gpl3+)))
1022 (define-public fldigi
1030 (url "https://git.code.sf.net/p/fldigi/fldigi")
1031 (commit (string-append "v" version))))
1032 (file-name (git-file-name name version))
1034 (base32 "1n1ljqsqar9s8yh8hn9yc1clabkhv4jidym3ibg25yb5svckscli"))))
1035 (build-system gnu-build-system)
1037 (list autoconf automake gettext-minimal pkg-config))
1052 (synopsis "Software modem for amateur radio use")
1054 "Fldigi is a software modem for amateur radio use. It is a sound card
1055 based program that is used for both transmitting and receiving data by
1056 connecting the microphone and headphone connections of a computer to some radio
1058 (home-page "http://www.w1hkj.com/")
1059 (license license:gpl3+)))
1061 (define-public flrig
1069 (url "https://git.code.sf.net/p/fldigi/flrig")
1070 (commit (string-append "v" version))))
1071 (file-name (git-file-name name version))
1073 (base32 "0pgkfzxqr2ybpbnf1y9nsr25k0zimdwr98mpvd7nazrv5l0y8kci"))))
1074 (build-system gnu-build-system)
1076 (list autoconf automake pkg-config))
1078 (list eudev fltk libx11 libxext libxfixes libxft))
1079 (synopsis "Radio transceiver control program")
1081 "Flrig is a transceiver control program for amateur radio use.
1082 It provides computer aided control of various radios using a serial
1083 or USB connection.")
1084 (home-page "http://www.w1hkj.com/")
1085 (license license:gpl3+)))
1087 (define-public flamp
1095 (url "https://git.code.sf.net/p/fldigi/flamp")
1096 (commit (string-append "v" version))))
1097 (file-name (git-file-name name version))
1099 (base32 "0rygd5w04nspxdj8qj81gpb3mgijvlmii74s1f4mihqs5kb8nwh6"))))
1100 (build-system gnu-build-system)
1102 (list autoconf automake pkg-config))
1104 (list fltk libx11 libxext libxfixes libxft))
1105 (synopsis "Tool for AMP file transfer")
1107 "FLAMP is a program for transferring files by radio waves using AMP
1108 (Amateur Multicast Protocol).")
1109 (home-page "http://www.w1hkj.com/")
1110 (license license:gpl3+)))
1112 (define-public flmsg
1120 (url "https://git.code.sf.net/p/fldigi/flmsg")
1121 (commit (string-append "v" version))))
1122 (file-name (git-file-name name version))
1124 (base32 "157s6mvky9h094hkncm47964qh0bnwg0m2rw3wx0qj1mh5isxv4j"))))
1125 (build-system gnu-build-system)
1127 (list autoconf automake pkg-config))
1129 (list fltk libx11 libxext libxfixes libxft))
1130 (synopsis "NBEMS messaging system")
1132 "FLMSG is a Narrow Band Emergency Messaging Software (NBEMS).
1133 It can be used to manage, send and receive the forms that are used as basis
1134 for emergency communications data transfers (like ICS213 forms).")
1135 (home-page "http://www.w1hkj.com/")
1136 (license license:gpl3+)))
1138 (define-public flwrap
1146 (url "https://git.code.sf.net/p/fldigi/flwrap")
1147 (commit (string-append "v" version))))
1148 (file-name (git-file-name name version))
1150 (base32 "0xkhr82smfr7wpb9xl05wf7bz3vi2mr4xkcr2s8v6mblhgsdhqwg"))))
1151 (build-system gnu-build-system)
1153 (list autoconf automake pkg-config))
1155 (list fltk libx11 libxext libxfixes libxft))
1156 (synopsis "File encapsulation program")
1158 "Flwrap is a software utility for amateur radio use. Its purpose is to
1159 encapsulate both text and binary files in a way that allows them to be
1160 transmitted over any of several digital modes and verified at the receipt end
1162 (home-page "http://www.w1hkj.com/")
1163 (license license:gpl3+)))
1165 (define-public hackrf
1168 (version "2021.03.1")
1173 (url "https://github.com/mossmann/hackrf")
1174 (commit (string-append "v" version))))
1175 (file-name (git-file-name name version))
1177 (base32 "12fkgimjy5ia291c1rn4y59pn9r5wdvz5x9z5xc8zr1xr96iyhfs"))))
1178 (build-system cmake-build-system)
1181 (list "-DUDEV_RULES_GROUP=dialout"
1182 (string-append "-DUDEV_RULES_PATH="
1183 (assoc-ref %outputs "out")
1184 "/lib/udev/rules.d"))
1186 (modify-phases %standard-phases
1187 (add-before 'configure 'enter-source-directory
1191 (add-after 'install 'delete-static-library
1192 (lambda* (#:key outputs #:allow-other-keys)
1193 (delete-file (string-append (assoc-ref outputs "out")
1194 "/lib/libhackrf.a"))
1196 (add-before 'install-license-files 'leave-source-directory
1200 #:tests? #f)) ; no test suite
1204 (list fftw fftwf libusb))
1205 (home-page "https://greatscottgadgets.com/hackrf/")
1206 (synopsis "User-space library and utilities for HackRF SDR")
1208 "Command line utilities and a C library for controlling the HackRF
1209 Software Defined Radio (SDR) over USB. Installing this package installs the
1210 userspace hackrf utilities and C library. To install the hackrf udev rules,
1211 you must extend 'udev-service-type' with this package. E.g.:
1212 @code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
1213 (license license:gpl2)))
1215 (define-public hamlib
1223 "https://github.com/Hamlib/Hamlib/releases/download/"
1224 version "/hamlib-" version ".tar.gz"))
1226 (base32 "11r4i8gmxnb6ixpk4ns38c9xwj3qibp2v3pkhy2z0lhz0xxi1w4b"))))
1227 (build-system gnu-build-system)
1236 (list gd libusb libxml2 readline))
1238 `(#:configure-flags '("--disable-static"
1239 "--with-lua-binding"
1240 "--with-python-binding"
1241 "--with-tcl-binding"
1242 "--with-xml-support")))
1243 (synopsis "Tools and API to control radios")
1245 "The Ham Radio Control Library (Hamlib) is a project to provide programs
1246 with a consistent Application Programming Interface (API) for controlling the
1247 myriad of radios and rotators available to amateur radio and communications
1249 (home-page "https://hamlib.github.io/")
1250 (license (list license:gpl2+ license:lgpl2.1+))))
1252 (define wsjtx-hamlib
1253 ;; Fork of hamlib with custom patches used by wsjtx.
1256 (name "wsjtx-hamlib")
1262 (url "https://git.code.sf.net/u/bsomervi/hamlib.git")
1263 (commit (string-append "wsjtx-" version))))
1264 (file-name (git-file-name name version))
1266 (base32 "1bgf7bz2280739a7ip7lvpns0i7x6svryxfmsp32cff2dr146lz3"))))
1268 `(("autoconf" ,autoconf)
1269 ("automake" ,automake)
1270 ("libtool" ,libtool)
1271 ("texinfo" ,texinfo)
1272 ,@(package-native-inputs hamlib)))
1274 `(#:configure-flags '("--disable-static"
1275 "--with-lua-binding"
1276 "--with-python-binding"
1277 "--with-tcl-binding"
1278 "--with-xml-support")))))
1280 (define-public jtdx-hamlib
1281 ;; Fork of hamlib with custom patches used by jtdx.
1284 (name "jtdx-hamlib")
1290 (url "https://github.com/jtdx-project/jtdxhamlib.git")
1292 (file-name (git-file-name name version))
1294 (base32 "0m9i5k1n6j0nvmsqcy12x2ngqzjvxxlc3jg29igh93hb7lprlkjv"))))
1296 (modify-inputs (package-native-inputs hamlib)
1297 (prepend autoconf automake libtool texinfo)))
1299 `(#:configure-flags '("--disable-shared"
1301 "--without-cxx-binding"
1302 "--disable-winradio")))))
1312 (url "https://github.com/tlf/tlf")
1313 (commit (string-append "tlf-" version))))
1314 (file-name (git-file-name name version))
1316 (base32 "1xpgs4k27pjd9mianfknknp6mf34365bcp96wrv5xh4dhph573rj"))
1318 (search-patches "tlf-support-hamlib-4.2+.patch"))))
1319 (build-system gnu-build-system)
1322 (list "--enable-fldigi-xmlrpc")))
1324 (list autoconf automake perl pkg-config))
1329 libusb ;`Requires.private: libusb-1.0` in hamlib pkg-config
1332 (home-page "https://tlf.github.io/")
1333 (synopsis "Amateur radio contest logging for the terminal")
1334 (description "TLF is a @acronym{Text User Interface, TUI} amateur radio
1335 contest logging program. It integrates with radios supported by hamlib and
1336 other ham radio programs like fldigi. Many contests are supported including:
1339 @item CQWW (SO, M/S and M/M)
1340 @item WPX (SO, M/S and M/M)
1341 @item ARRL Sweepstakes (SO, M/S )
1344 @item ARRL-DX (both sides)
1348 @item Region1 field day
1350 @item PACC (both sides)
1351 @item NRAU - scandinavian
1352 @item Wysiwyg mults mode (per band or per contest)
1356 It also supports connecting to DX clusters, log synchronization with other TLF
1357 instances over the network, and general QSO and DXpedition logging.")
1358 (license license:gpl2+)))
1360 (define-public wsjtx
1368 (url "https://git.code.sf.net/p/wsjt/wsjtx.git")
1369 (commit (string-append "wsjtx-" version))))
1370 (file-name (git-file-name name version))
1372 (base32 "0nciw9smrfcsirlwyny5r9h7sk2zvm40m56y1hxpgpmbnh6mqikh"))))
1373 (build-system qt-build-system)
1375 (list asciidoc gfortran pkg-config qttools-5 ruby-asciidoctor))
1380 ("hamlib" ,wsjtx-hamlib)
1382 ("qtbase" ,qtbase-5)
1383 ("qtmultimedia-5" ,qtmultimedia-5)
1384 ("qtserialport" ,qtserialport)))
1386 `(#:tests? #f)) ; No test suite
1387 (synopsis "Weak-signal ham radio communication program")
1389 "WSJT-X implements communication protocols or modes called FT4, FT8,
1390 JT4, JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
1391 detecting and measuring your own radio signals reflected from the Moon. These
1392 modes were all designed for making reliable, confirmed QSOs under extreme
1393 weak-signal conditions.")
1394 (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html")
1395 (license license:gpl3)))
1405 (url "https://github.com/jtdx-project/jtdx")
1407 (file-name (git-file-name name version))
1409 (base32 "1lw9q7ggh2jlasipl3v5pkbabysjr6baw15lnmg664ah3fwdrvnx"))))
1410 (build-system qt-build-system)
1412 (list asciidoc gfortran pkg-config qttools-5 ruby-asciidoctor))
1425 `(#:tests? #f)) ; No test suite
1426 (synopsis "Weak-signal ham radio communication program, forked from WSJTX")
1428 "JTDX means \"JT,T10 and FT8 and FT4 modes for DXing\", it is being
1429 developed with main focus on the sensitivity and decoding efficiency, both, in
1430 overcrowded and half empty HF band conditions.
1432 It is modified WSJT-X software forked from WSJT-X r6462. JTDX supports JT9,
1433 JT65, T10, FT8 and FT4 © digital modes for HF amateur radio communication,
1434 focused on DXing and being shaped by community of DXers.JTDX")
1435 (home-page "https://www.jtdx.tech/en/")
1436 (license license:gpl3)))
1438 (define-public js8call
1446 (uri (string-append "http://files.js8call.com/" version
1447 "/js8call-" version ".tgz"))
1449 (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
1450 (modules '((guix build utils)))
1453 ;; Delete bundled boost to use the shared one.
1454 (delete-file-recursively "boost")
1456 (build-system qt-build-system)
1458 (list asciidoc gfortran pkg-config qttools-5 ruby-asciidoctor))
1463 ("hamlib" ,wsjtx-hamlib)
1465 ("qtbase" ,qtbase-5)
1466 ("qtmultimedia-5" ,qtmultimedia-5)
1467 ("qtserialport" ,qtserialport)))
1469 `(#:tests? #f ; No test suite
1471 (modify-phases %standard-phases
1472 (add-after 'unpack 'fix-paths
1473 (lambda* (#:key outputs #:allow-other-keys)
1474 (substitute* "CMakeLists.txt"
1475 (("DESTINATION /usr/share")
1476 (string-append "DESTINATION "
1477 (assoc-ref outputs "out")
1479 (add-after 'unpack 'fix-hamlib
1481 (substitute* "CMake/Modules/Findhamlib.cmake"
1482 (("set \\(ENV\\{PKG_CONFIG_PATH\\}.*\\)")
1483 "set (__pc_path $ENV{PKG_CONFIG_PATH})
1484 list (APPEND __pc_path \"${__hamlib_pc_path}\")
1485 set (ENV{PKG_CONFIG_PATH} \"${__pc_path}\")"))
1486 (substitute* "HamlibTransceiver.hpp"
1487 (("#ifdef JS8_USE_LEGACY_HAMLIB")
1489 (synopsis "Weak-signal ham radio communication program")
1491 "JS8Call is a software using the JS8 digital mode (a derivative of the FT8
1492 mode) providing weak signal keyboard to keyboard messaging to amateur radio
1494 (home-page "http://js8call.com/")
1495 (license license:gpl3)))
1497 (define-public xnec2c
1504 (uri (string-append "https://www.xnec2c.org/releases/xnec2c-v"
1507 (base32 "13ybnb1v1y9wjmj49s8ir2rpfsz7h8r9jwv0qd4if9wsn44jg29k"))))
1508 (build-system gnu-build-system)
1517 (list gtk+ openblas))
1520 ,#~(list (string-append "--with-openblas-incdir="
1521 #$(this-package-input "openblas")
1524 (modify-phases %standard-phases
1525 (add-after 'unpack 'fix-paths
1526 (lambda* (#:key inputs #:allow-other-keys)
1527 (substitute* "src/Makefile.am"
1528 (("\\$\\(GLIB_COMPILE_RESOURCES\\)")
1529 (search-input-file inputs "bin/glib-compile-resources")))
1530 (substitute* "src/mathlib.c"
1531 (("libopenblas\\.so")
1532 (search-input-file inputs "lib/libopenblas.so"))))))))
1533 (synopsis "Antenna modeling software")
1535 "Xnec2c is a GTK3-based graphical version of nec2c, a translation to the
1536 C language of NEC2, the FORTRAN Numerical Electromagnetics Code commonly used
1537 for antenna simulation and analysis. It can be used to define the geometry of
1538 an antenna, and then plot the radiation pattern or frequency-related data like
1539 gain and standing wave ratio.")
1540 (home-page "https://www.xnec2c.org/")
1541 (license license:gpl3+)))
1543 (define-public dump1090
1551 (url "https://github.com/flightaware/dump1090")
1552 (commit (string-append "v" version))))
1553 (file-name (git-file-name name version))
1555 (base32 "1702qv5g27sgpqf98sj2qbg36sqzc7r3kssslzzgljqkr5jgrw6m"))))
1556 (build-system gnu-build-system)
1560 (list hackrf libusb ncurses rtl-sdr))
1562 `(#:test-target "test"
1564 (list (string-append "CC=" ,(cc-for-target))
1567 (modify-phases %standard-phases
1570 (lambda* (#:key outputs #:allow-other-keys)
1571 (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
1572 (install-file "dump1090" bin)
1573 (install-file "view1090" bin)))))))
1574 (synopsis "Mode S decoder for rtl-sdr devices")
1576 "Dump1090 is a Mode S decoder specifically designed for rtl-sdr devices.
1577 It can be used to decode the ADS-B signals that planes emit to indicate
1578 their position, altitude, speed, etc.")
1579 (home-page "https://github.com/flightaware/dump1090")
1580 (license license:gpl2+)))
1582 (define-public rtl-433
1590 (url "https://github.com/merbanan/rtl_433")
1592 (file-name (git-file-name name version))
1594 (base32 "0ygxs35zvgnamhqdwk1akcwagcirzpi4wndzgf9d23faiv4cm01a"))))
1595 (build-system cmake-build-system)
1599 (list libusb openssl rtl-sdr soapysdr))
1600 (synopsis "Decoder for radio transmissions in ISM bands")
1602 "This is a generic data receiver, mainly for decoding radio transmissions
1603 from devices on the 433 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz ISM bands.")
1604 (home-page "https://github.com/merbanan/rtl_433")
1605 (license license:gpl2+)))
1607 (define-public multimon-ng
1609 (name "multimon-ng")
1615 (url "https://github.com/EliasOenal/multimon-ng")
1617 (file-name (git-file-name name version))
1619 (base32 "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"))))
1620 (build-system cmake-build-system)
1622 (list libx11 pulseaudio))
1624 '(#:tests? #f)) ; no test suite
1625 (home-page "https://github.com/EliasOenal/multimon-ng")
1626 (synopsis "Decoder for digital radio transmission modes")
1627 (description "Multimon-ng can decode several digital radio transmission
1630 @item POCSAG512, POCSAG1200, POCSAG2400
1633 @item UFSK1200, CLIPFSK, AFSK1200, AFSK2400, AFSK2400_2, AFSK2400_3
1637 @item ZVEI1, ZVEI2, ZVEI3, DZVEI, PZVEI
1638 @item EEA, EIA, CCIR
1642 (license license:gpl2+)))
1644 (define-public nanovna-saver
1646 (name "nanovna-saver")
1652 (url "https://github.com/NanoVNA-Saver/nanovna-saver")
1653 (commit (string-append "v" version))))
1654 (file-name (git-file-name name version))
1656 (base32 "1h0wzva8j7fqnpf0qy42bw9rdclgq3jdq902ajvd9v5iqcqs78n0"))))
1657 (build-system python-build-system)
1659 (list python-cython))
1661 (list python-numpy python-pyqt python-pyserial python-scipy))
1664 (home-page "https://github.com/NanoVNA-Saver/nanovna-saver")
1665 (synopsis "GUI for NanoVNA devices")
1667 "NanoVNA-Saver is a tool for reading, displaying and saving data from the
1668 NanoVNA vector network analyzers.")
1669 (license license:gpl3+)))
1671 (define-public qsstv
1678 (uri (string-append "http://users.telenet.be/on4qz/qsstv/downloads/"
1679 "qsstv_" version ".tar.gz"))
1681 (base32 "0s3sivc0xan6amibdiwfnknrl3248wzgy98w6gyxikl0qsjpygy0"))))
1682 (build-system qt-build-system)
1695 `(#:tests? #f ; No test suite.
1697 (modify-phases %standard-phases
1699 (lambda* (#:key outputs #:allow-other-keys)
1701 (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
1702 (home-page "http://users.telenet.be/on4qz/qsstv/")
1703 (synopsis "Program for receiving and transmitting SSTV and HAMDRM")
1705 "QSSTV is a program for receiving and transmitting SSTV and HAMDRM
1706 (sometimes called DSSTV). It is compatible with most of MMSSTV and EasyPal.")
1707 (license (list license:gpl2+
1710 (define-public direwolf
1718 (url "https://github.com/wb2osz/direwolf")
1720 (file-name (git-file-name name version))
1722 (base32 "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"))))
1723 (build-system cmake-build-system)
1725 (list alsa-lib hamlib))
1728 (modify-phases %standard-phases
1729 (add-after 'unpack 'fix-paths
1730 (lambda* (#:key outputs #:allow-other-keys)
1731 (substitute* "conf/CMakeLists.txt"
1732 (("DESTINATION /etc")
1733 (string-append "DESTINATION "
1734 (assoc-ref outputs "out")
1736 (home-page "https://github.com/wb2osz/direwolf")
1737 (synopsis "TNC for Amateur Packet Radio")
1739 "Dire Wolf is a Terminal Node Controller (TNC) for Amateur Packet Radio.
1742 @item APRS GPS tracker,
1744 @item Internet gateway (IGate)
1745 @item APRStt gateway
1747 (license license:gpl2+)))
1756 (uri (string-append "mirror://savannah/aldo/aldo-" version ".tar.bz2"))
1758 (base32 "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i"))))
1759 (build-system gnu-build-system)
1762 (home-page "https://www.nongnu.org/aldo/")
1763 (synopsis "Morse code tutor")
1765 "Aldo is a morse code learning tool providing four type of training
1769 @item Classic exercice,
1771 @item Read from file,
1772 @item Callsign exercice.
1774 (license license:gpl3+)))
1776 (define-public unixcw
1783 (uri (string-append "mirror://sourceforge/unixcw/unixcw-"
1786 (base32 "15wriwv91583kmmyijbzam3dpclzmg4qjyfzjv5f75x9b0gqabxm"))))
1787 (build-system gnu-build-system)
1791 (list alsa-lib ncurses pulseaudio qtbase-5))
1793 `(#:configure-flags '("--disable-static")
1795 (modify-phases %standard-phases
1796 (add-after 'unpack 'fix-paths
1797 (lambda* (#:key inputs #:allow-other-keys)
1798 (substitute* '("configure"
1800 "src/cwcp/Makefile.am"
1801 "src/cwcp/Makefile.in")
1804 (substitute* "src/libcw/libcw_pa.c"
1805 (("libpulse-simple.so" all)
1806 (search-input-file inputs "/lib/libpulse-simple.so"))))))))
1807 (home-page "http://unixcw.sourceforge.net/")
1808 (synopsis "Morse code library and programs")
1810 "@code{unixcw} is a project providing the libcw library and a set of
1811 programs using the library: cw, cwgen, cwcp and xcwcp. The programs are
1812 intended for people who want to learn receiving and sending morse code.")
1813 (license license:gpl2+)))
1815 (define-public kochmorse
1823 (url "https://github.com/hmatuschek/kochmorse")
1824 (commit (string-append "v" version))))
1825 (file-name (git-file-name name version))
1827 (base32 "1s1aj223n57rpc95rih98z08xnyhq2zp02byzrc3f7s01fv3nj0l"))))
1828 (build-system qt-build-system)
1832 (list qtbase-5 qtmultimedia-5))
1834 `(#:tests? #f)) ; No test suite
1835 (home-page "https://dm3mat.darc.de/kochmorse/")
1836 (synopsis "Morse code tutor")
1838 "KochMorse is a simple morse-code tutor using the Koch method.")
1839 (license license:gpl2+)))
1841 (define-public gnuais
1849 (url "https://github.com/rubund/gnuais")
1851 (file-name (git-file-name name version))
1853 (base32 "1rik5fdfslszdn3yvj769jzmnv9pirzf76ki33bjjzk7nkabbnlm"))))
1854 (build-system cmake-build-system)
1856 `(("mariadb-dev" ,mariadb "dev")
1857 ("pkg-config" ,pkg-config)))
1859 `(("alsa-lib" ,alsa-lib)
1862 ("libsoup" ,libsoup-minimal)
1863 ("mariadb-lib" ,mariadb "lib")
1864 ("osm-gps-map" ,osm-gps-map)
1865 ("pulseaudio" ,pulseaudio)))
1867 `(#:configure-flags '("-DCMAKE_C_FLAGS=-fcommon")
1868 #:tests? #f ; No test suite
1870 (modify-phases %standard-phases
1871 (add-after 'unpack 'fix-paths
1872 (lambda* (#:key outputs #:allow-other-keys)
1873 (substitute* "src/cfgfile.c"
1875 (string-append (assoc-ref outputs "out") "/share/"))))))))
1876 (home-page "http://gnuais.sourceforge.net/")
1877 (synopsis "AIS message demodulator and decoder")
1879 "This program contains algorithms to demodulate and decode AIS (Automatic
1880 Identification System) messages sent by ships and coast stations.")
1881 (license license:gpl2+)))
1883 (define-public kappanhang
1891 (url "https://github.com/nonoo/kappanhang")
1892 (commit (string-append "v" version))))
1893 (file-name (git-file-name name version))
1895 (base32 "1ycy8avq5s7zspfi0d9klqcwwkpmcaz742cigd7pmcnbbhspcicp"))))
1896 (build-system go-build-system)
1898 '(#:import-path "github.com/nonoo/kappanhang"
1899 #:install-source? #f))
1901 (list go-github-com-akosmarton-papipes
1902 go-github-com-fatih-color
1903 go-github-com-google-goterm
1904 go-github-com-mattn-go-isatty
1905 go-github-com-mesilliac-pulse-simple
1906 go-github-com-pborman-getopt
1907 go-go-uber-org-multierr
1908 go-go-uber-org-zap))
1909 (home-page "https://github.com/nonoo/kappanhang")
1910 (synopsis "Client for Icom RS-BA1 server")
1912 "Kappanhang remotely opens audio channels and a serial port to an Icom
1913 RS-BA1 server. The application is mainly developed for connecting to the Icom
1914 IC-705 transceiver, which has built-in WiFi and RS-BA1 server.
1916 Compatible hardware/software:
1918 @item Icom RS-BA1 server software,
1922 (license license:expat)))
1924 (define-public dream
1931 (uri (string-append "mirror://sourceforge/drm/dream/" version
1932 "/dream_" version ".orig.tar.gz"))
1934 (base32 "0mpg341b0vnm6ym0cag9zri9w6kw012rv68zdmmi2hlvq7iiw8gp"))))
1935 (build-system qt-build-system)
1954 (modify-phases %standard-phases
1955 (add-after 'unpack 'fix-paths
1956 (lambda* (#:key inputs outputs #:allow-other-keys)
1957 (substitute* "dream.pro"
1958 (("target\\.path = /usr/bin")
1959 (string-append "target.path = "
1960 (assoc-ref outputs "out") "/bin"))
1961 (("documentation\\.path = /usr/share/man/man1")
1962 (string-append "documentation.path = "
1963 (assoc-ref outputs "out")
1965 (("/usr/include/pulse")
1966 (search-input-directory inputs "/include/pulse"))
1967 (("/usr/include/sndfile\\.h")
1968 (search-input-file inputs "/include/sndfile.h"))
1969 (("/usr/include/opus")
1970 (search-input-directory inputs "/include/opus"))
1971 (("/usr/include/speex")
1972 (search-input-directory inputs "/include/speex"))
1973 (("/usr/include/qwt")
1974 (search-input-directory inputs "/include/qwt"))
1975 (("\\$\\$OUT_PWD/include/neaacdec\\.h")
1976 (search-input-file inputs "/include/neaacdec.h")))))
1979 (invoke "qmake"))))))
1980 (home-page "https://sourceforge.net/projects/drm/")
1981 (synopsis "Digital Radio Mondiale receiver")
1983 "Dream is a software implementation of a Digital Radio Mondiale (DRM)
1985 (license license:gpl2+)))
1987 (define-public welle-io
1995 (url "https://github.com/albrechtl/welle.io")
1996 (commit (string-append "v" version))))
1997 (file-name (git-file-name name version))
1999 (base32 "0vl98pciw6xzcxyprcb4613rxn0i202f104lmy900jrny0pq4y65"))))
2000 (build-system qt-build-system)
2019 `(#:configure-flags '("-DRTLSDR=ON"
2022 (home-page "https://www.welle.io/")
2023 (synopsis "DAB and DAB+ software radio")
2025 "@code{welle.io} is a Digital Audio Broadcasting (DAB and DAB+) software
2026 defined radio with support for rtl-sdr.")
2027 (license license:gpl2+)))
2037 (url "https://github.com/jketterl/csdr")
2039 (file-name (git-file-name name version))
2041 (base32 "0sdni0p9qcf4yw1wf5jz1pyb9wv6wmdblirh2q6s7jblh50vfwz1"))))
2042 (build-system cmake-build-system)
2046 (list fftwf libsamplerate))
2048 (list #:tests? #f)) ; No check phase
2049 (home-page "https://github.com/jketterl/csdr")
2050 (synopsis "DSP for software defined radio")
2052 "This package includes the @code{libcsdr} library of
2053 @acronym{DSP, Digital Signal Processing} functions for
2054 @acronym{SDRs, Software Defined Radios}, and the @code{csdr} command line
2055 program that can be used to build simple signal processing flow graphs.")
2056 (license license:gpl3+)))
2058 (define-public convert-samples
2060 (name "convert-samples")
2066 (url "https://github.com/glv2/convert-samples")
2067 (commit (string-append "v" version))))
2068 (file-name (git-file-name name version))
2070 (base32 "1d9w9m5agi8fiv1wk8nhjrbm2jkm2fks4ymbxkn0xphbwj3gwr7i"))))
2071 (build-system gnu-build-system)
2073 (list autoconf automake))
2076 (synopsis "SDR samples converter")
2078 "@code{convert-samples} is a command-line program to convert samples
2079 received from software defined radios from one format to another.
2083 @item s8: signed 8 bit integer
2084 @item u8: unsigned 8 bit integer
2085 @item s16: signed 16 bit integer
2086 @item u16: unsigned 16 bit integer
2087 @item s32: signed 32 bit integer
2088 @item u32: unsigned 32 bit integer
2089 @item f32: 32 bit float
2090 @item cs8: complex made of signed 8 bit integers
2091 @item cu8: complex made of unsigned 8 bit integers
2092 @item cs16: complex made of signed 16 bit integers
2093 @item cu16: complex made of unsigned 16 bit integers
2094 @item cs32: complex made of signed 32 bit integers
2095 @item cu32: complex made of unsigned 32 bit integers
2096 @item cf32: complex made of 32 bit floats
2098 (home-page "https://github.com/glv2/convert-samples")
2099 (license license:gpl3+)))
2101 (define-public serialdv
2109 (url "https://github.com/f4exb/serialDV")
2110 (commit (string-append "v" version))))
2111 (file-name (git-file-name name version))
2113 (base32 "0d88h2wjhf79nisiv96bq522hkbknzm88wsv0q9k33mzmrwnrx93"))))
2114 (build-system cmake-build-system)
2116 `(#:tests? #f)) ; No test suite.
2117 (home-page "https://github.com/f4exb/serialDV")
2118 (synopsis "Audio interface for AMBE3000 based devices")
2120 "SerialDV is a minimal interface to encode and decode audio with AMBE3000
2121 based devices in packet mode over a serial link.")
2122 (license license:gpl3+)))
2124 (define-public cm256cc
2132 (url "https://github.com/f4exb/cm256cc")
2133 (commit (string-append "v" version))))
2134 (file-name (git-file-name name version))
2136 (base32 "1n9v7g6d370263bgqrjv38s9aq5953rzy7jvd8i30xq6aram9djg"))))
2137 (build-system cmake-build-system)
2139 ;; Disable some SIMD features for reproducibility.
2140 `(#:configure-flags '("-DENABLE_DISTRIBUTION=1")
2142 (modify-phases %standard-phases
2144 (lambda* (#:key tests? #:allow-other-keys)
2146 (invoke "./cm256_test")))))))
2147 (home-page "https://github.com/f4exb/cm256cc")
2148 (synopsis "Cauchy MDS Block Erasure Codec")
2150 "This is a C++ library implementing fast GF(256) Cauchy MDS Block Erasure
2152 (license license:gpl3+)))
2154 (define-public libdab
2155 ;; No release since 2017, use commit directly.
2156 (let ((commit "b578d02eda60f613d35bab5d762ae7c9a27758d8")
2160 (version (git-version "0.8" revision commit))
2165 (url "https://github.com/JvanKatwijk/dab-cmdline")
2167 (file-name (git-file-name name version))
2169 (base32 "0j339kx3n2plgfw7ikpp7b81h5n68wmsgflwljbh2sy8j62faik9"))))
2170 (build-system cmake-build-system)
2172 (list faad2 fftwf zlib))
2174 `(#:tests? #f ; No test suite.
2176 (modify-phases %standard-phases
2177 (add-after 'unpack 'enter-sources-directory
2179 (chdir "library"))))))
2180 (home-page "https://github.com/JvanKatwijk/dab-cmdline")
2181 (synopsis "DAB decoding library")
2182 (description "This is a library to decode @acronym{DAB/DAB+, Digital
2183 Audio Broadcasting}.")
2184 (license license:gpl2+))))
2186 (define-public dsdcc
2194 (url "https://github.com/f4exb/dsdcc")
2195 (commit (string-append "v" version))))
2196 (file-name (git-file-name name version))
2198 (base32 "0jgzpv4d6ckd0sdq6438rjh3m6knj6gx63627fajch74hxrvclzj"))))
2199 (build-system cmake-build-system)
2201 (list mbelib serialdv))
2203 `(#:tests? #f ; No test suite.
2205 (list "-DUSE_MBELIB=ON"
2206 (string-append "-DLIBMBE_INCLUDE_DIR="
2207 (assoc-ref %build-inputs "mbelib")
2209 (string-append "-DLIBMBE_LIBRARY="
2210 (assoc-ref %build-inputs "mbelib")
2212 (string-append "-DLIBSERIALDV_INCLUDE_DIR="
2213 (assoc-ref %build-inputs "serialdv")
2214 "/include/serialdv")
2215 (string-append "-DLIBSERIALDV_LIBRARY="
2216 (assoc-ref %build-inputs "serialdv")
2217 "/lib/libserialdv.so"))))
2218 (home-page "https://github.com/f4exb/dsdcc")
2219 (synopsis "Digital speech decoder")
2221 "This package provides a library and a program to decode several digital
2223 (license license:gpl3+)))
2225 (define-public sdrangel
2233 (url "https://github.com/f4exb/sdrangel")
2234 (commit (string-append "v" version))))
2235 (file-name (git-file-name name version))
2237 (base32 "193iwwb4mbr29mlgaqb67j8214k10k2q0ky9fcl1ja52vmdzz71b"))))
2238 (build-system qt-build-system)
2240 (list doxygen graphviz pkg-config))
2276 `(#:tests? #f ; No test suite.
2278 ,#~(list (string-append "-DAPT_DIR="
2279 #$(this-package-input "aptdec"))
2280 (string-append "-DDAB_DIR="
2281 #$(this-package-input "libdab"))
2282 (string-append "-DDSDCC_DIR="
2283 #$(this-package-input "dsdcc"))
2284 (string-append "-DMBE_DIR="
2285 #$(this-package-input "mbelib"))
2286 (string-append "-DSERIALDV_DIR="
2287 #$(this-package-input "serialdv"))
2288 (string-append "-DSGP4_DIR="
2289 #$(this-package-input "sgp4"))
2290 (string-append "-DSOAPYSDR_DIR="
2291 #$(this-package-input "soapysdr")))
2293 (modify-phases %standard-phases
2294 (add-after 'unpack 'fix-boost-compatibility
2297 '("plugins/channelrx/noisefigure/noisefigure.cpp"
2298 "plugins/channelrx/noisefigure/noisefigureenrdialog.cpp")
2299 (("boost::math::barycentric_rational<double>")
2300 "boost::math::interpolators::barycentric_rational<double>")))))))
2301 (home-page "https://github.com/f4exb/sdrangel/wiki")
2302 (synopsis "Software defined radio")
2304 "SDRangel is a Qt software defined radio and signal analyzer frontend for
2306 (license license:gpl3+)))
2308 (define-public sdr++
2316 (url "https://github.com/AlexandreRouma/SDRPlusPlus")
2318 (file-name (git-file-name name version))
2320 (base32 "1xwbz6yyca6wmzad5ykxw6i0r8jzc7i3jbzq7mhp8caiymd6knw3"))))
2321 (build-system cmake-build-system)
2325 `(("airspyhf" ,airspyhf)
2326 ("alsa-lib" ,alsa-lib)
2334 ("pulseaudio" ,pulseaudio)
2335 ("rtaudio" ,rtaudio)
2336 ("rtl-sdr" ,rtl-sdr)
2337 ("soapysdr" ,soapysdr)
2340 `(#:tests? #f ; No test suite.
2341 #:configure-flags '("-DOPT_BUILD_AIRSPY_SOURCE=OFF"
2342 "-DOPT_BUILD_PLUTOSDR_SOURCE=OFF"
2343 "-DOPT_BUILD_M17_DECODER=ON")
2345 (modify-phases %standard-phases
2346 (add-after 'unpack 'fix-paths
2347 (lambda* (#:key outputs #:allow-other-keys)
2348 (substitute* "CMakeLists.txt"
2350 (assoc-ref outputs "out"))))))))
2351 (home-page "https://github.com/AlexandreRouma/SDRPlusPlus")
2352 (synopsis "Software defined radio software")
2354 "SDR++ is a software defined radio software for various hardware.")
2355 (license license:gpl3+)))
2357 (define-public inspectrum
2365 (url "https://github.com/miek/inspectrum")
2366 (commit (string-append "v" version))))
2367 (file-name (git-file-name name version))
2369 (base32 "1x6nyn429pk0f7lqzskrgsbq09mq5787xd4piic95add6n1cc355"))))
2370 (build-system qt-build-system)
2374 (list fftwf liquid-dsp qtbase-5))
2375 (home-page "https://github.com/miek/inspectrum")
2376 (synopsis "Radio signal analyser")
2378 "Inspectrum is a tool for analysing captured signals, primarily from
2379 software-defined radio receivers.")
2380 (license license:gpl3+)))
2382 (define-public wfview
2390 (url "https://gitlab.com/eliggett/wfview")
2392 (file-name (git-file-name name version))
2394 (base32 "1kpkwxhcacgmprbr8xz840rj9a22513vxrh2q7d3js5i1dva8j2z"))))
2395 (build-system qt-build-system)
2397 (list opus qcustomplot qtbase-5 qtmultimedia-5 qtserialport))
2399 `(#:tests? #f ; No test suite.
2401 (modify-phases %standard-phases
2402 (add-after 'unpack 'fix-paths
2403 (lambda* (#:key outputs #:allow-other-keys)
2404 (substitute* "wfview.pro"
2407 (substitute* '("wfmain.cpp")
2409 (string-append (assoc-ref outputs "out") "/share")))))
2411 (lambda* (#:key outputs #:allow-other-keys)
2415 (string-append "PREFIX=" (assoc-ref outputs "out"))
2416 "../wfview.pro"))))))
2417 (home-page "https://wfview.org/")
2418 (synopsis "Software to control Icom radios")
2420 "@code{wfview} is a program to control modern Icom radios and view the
2421 spectrum waterfall. It supports at least the following models:
2431 (license (list license:expat
2434 (define-public minimodem
2441 (uri (string-append "http://www.whence.com/minimodem/minimodem-"
2444 (base32 "13ipyh39l7p420j1j9kvwyskv2nqnimls1a3z1klsa1zivds9k7q"))))
2445 (build-system gnu-build-system)
2449 (list alsa-lib fftwf libsndfile pulseaudio))
2450 (home-page "http://www.whence.com/minimodem/")
2451 (synopsis "Software audio FSK modem")
2453 "Minimodem is a command-line program which decodes (or generates) audio
2454 modem tones at any specified baud rate, using various framing protocols. It
2455 acts a general-purpose software FSK modem, and includes support for various
2456 standard FSK protocols such as Bell103, Bell202, RTTY, TTY/TDD, NOAA SAME, and
2458 (license license:gpl3+)))
2460 (define-public rfcat
2461 ;; Use a commit for now because some fixes to make rfcat work with
2462 ;; Python 3 instead of Python 2 are not in a release yet.
2463 (let ((commit "725bf79af27d47cdec64107317c1c8fe3f7ad7b8")
2467 (version (git-version "1.9.5" revision commit))
2472 (url "https://github.com/atlas0fd00m/rfcat")
2474 (file-name (git-file-name name version))
2476 (base32 "0dbc6n4pxsa73wzxny773khc73r1dn3ma5hi7xv76vcykjvzkdi3"))))
2477 (build-system python-build-system)
2486 `(#:tests? #f ; Tests want to use a serial port
2488 (modify-phases %standard-phases
2489 (add-after 'unpack 'fix-permissions
2491 (make-file-writable "rflib/rflib_version.py")))
2492 (add-after 'install 'install-udev-rules
2493 (lambda* (#:key outputs #:allow-other-keys)
2494 (install-file "etc/udev/rules.d/20-rfcat.rules"
2495 (string-append (assoc-ref outputs "out")
2496 "/lib/udev/rules.d")))))))
2497 (home-page "https://github.com/atlas0fd00m/rfcat")
2498 (synopsis "Program to control some radio dongles")
2500 "@code{rfcat} is a program to control some radio dongles operating in
2505 @item YARD Stick One
2507 @item chronos watch dongle
2508 @item imme (limited support)
2511 To install the rfcat udev rules, you must extend @code{udev-service-type} with
2512 this package. E.g.: @code{(udev-rules-service 'rfcat rfcat)}")
2513 (license (list license:bsd-3
2516 (define-public rx-tools
2517 ;; No tagged release since 2016, use commit instead.
2518 (let ((commit "811b21c4c8a592515279bd19f7460c6e4ff0551c")
2522 (version (git-version "1.0.3" revision commit))
2527 (url "https://github.com/rxseger/rx_tools")
2529 (file-name (git-file-name name version))
2531 (base32 "0qr8q00cv6q0ikjrph0qh07mlbvgk4yimccpkn3ir8ib5ma0r9sr"))))
2532 (build-system cmake-build-system)
2536 `(#:tests? #f)) ; No test suite.
2537 (home-page "https://github.com/rxseger/rx_tools")
2538 (synopsis "Command line programs for receiving data from SDRs")
2540 "This package provides the @code{rx_fm}, @code{rx_power} and
2541 @code{rx_sdr} tools for receiving data from SDRs, based on @code{rtl_fm},
2542 @code{rtl_power} and @code{rtl_sdr} from RTL-SDR, but using the SoapySDR
2543 vendor-neutral SDR support library instead, intended to support a wider range
2544 of devices than RTL-SDR.")
2545 (license license:gpl2+))))
2555 (url "https://github.com/jopohl/urh")
2556 (commit (string-append "v" version))))
2557 (file-name (git-file-name name version))
2559 (base32 "17r9fkw0icph7fayibp6qbdh4nxi8wy3mmd3djmh0c2jr8yz5fsf"))))
2560 (build-system python-build-system)
2564 xorg-server-for-tests))
2576 (modify-phases %standard-phases
2577 (add-after 'unpack 'configure-compiler
2579 ;; Use gcc as compiler
2580 (substitute* "src/urh/dev/native/ExtensionHelper.py"
2581 (("compiler = ccompiler\\.new_compiler\\(\\)\n" all)
2583 all " compiler.set_executables(compiler='gcc',"
2584 " compiler_so='gcc', linker_exe='gcc', linker_so='gcc -shared')\n")))))
2585 (add-after 'unpack 'disable-some-tests
2587 (for-each delete-file
2588 '(;; FIXME: This test causes a segmentation fault
2589 "tests/test_send_recv_dialog_gui.py"))))
2590 (add-after 'build 'build-cythonext
2592 (invoke "python" "src/urh/cythonext/build.py")))
2594 (lambda* (#:key inputs tests? #:allow-other-keys)
2596 (setenv "HOME" "/tmp")
2597 (system (string-append (search-input-file inputs "/bin/Xvfb")
2599 (setenv "DISPLAY" ":1")
2600 (invoke "pytest")))))))
2601 (home-page "https://github.com/jopohl/urh")
2602 (synopsis "Wireless protocol investigation program")
2604 "The Universal Radio Hacker (URH) is a complete suite for wireless
2605 protocol investigation with native support for many common Software Defined
2607 (license license:gpl3+)))
2609 (define-public gnss-sdr
2617 (url "https://github.com/gnss-sdr/gnss-sdr")
2618 (commit (string-append "v" version))))
2619 (file-name (git-file-name name version))
2621 (base32 "0kxn98vmrsd2a157cf3hsmivi6p4k4a3907j5w8hmcs0nn92786i"))))
2622 (build-system cmake-build-system)
2624 `(("gfortran" ,gfortran)
2625 ("googletest-source" ,(package-source googletest))
2627 ("pkg-config" ,pkg-config)
2629 ("python-mako" ,python-mako)))
2651 (list "-DENABLE_GENERIC_ARCH=ON"
2652 "-DENABLE_OSMOSDR=ON"
2653 (string-append "-DGFLAGS_ROOT="
2654 (assoc-ref %build-inputs "gflags"))
2655 (string-append "-DGLOG_ROOT="
2656 (assoc-ref %build-inputs "glog"))
2657 (string-append "-DGTEST_DIR="
2658 (assoc-ref %build-inputs "googletest-source")))
2660 (modify-phases %standard-phases
2661 (add-before 'check 'set-home
2663 (setenv "HOME" "/tmp"))))))
2664 (home-page "https://gnss-sdr.org/")
2665 (synopsis "Global Navigation Satellite Systems software-defined receiver")
2667 "This program is a software-defined receiver which is able to process
2668 (that is, to perform detection, synchronization, demodulation and decoding of
2669 the navigation message, computation of observables and, finally, computation of
2670 position fixes) the signals of the BeiDou, Galileo, GLONASS and GPS Global
2671 Navigation Satellite System.")
2672 (license license:gpl3+)))
2681 (url "https://github.com/hmatuschek/qdmr")
2682 (commit (string-append "v" version))))
2683 (file-name (git-file-name name version))
2686 "037vkwk974zrwacxafslkb3mbw9258v9sdpwdvb23msjzbc3snrn"))))
2687 (build-system cmake-build-system)
2689 (list #:tests? #f ;no tests
2691 #~(modify-phases %standard-phases
2692 (add-after 'unpack 'patch-paths
2694 (substitute* "lib/CMakeLists.txt"
2695 (("(DESTINATION \")/etc/udev/" _ directive)
2696 (string-append directive #$output "/lib/udev/"))))))))
2697 (inputs (list libusb qtbase-5 qtlocation qtserialport yaml-cpp))
2698 (native-inputs (list qttools-5))
2699 (home-page "https://dm3mat.darc.de/qdmr/")
2700 (synopsis "GUI application and command line tool to program DMR radios")
2702 "qdmr is a graphical user interface (GUI) application that allows one to
2703 program several types of DMR radios. It is comparable to the Customer
2704 Programming Software (CPS) bundled with these radios but aims to be a more
2707 To install the qdmr udev rules, you must extend @code{udev-service-type} with this
2708 package. E.g.: @code{(udev-rules-service 'qdmr qdmr)}")
2709 (license license:gpl3+)))