1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2017, 2018, 2019, 2020 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 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>
11 ;;; This file is part of GNU Guix.
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26 (define-module (gnu packages radio)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix packages)
29 #:use-module (guix download)
30 #:use-module (guix git-download)
31 #:use-module (guix utils)
32 #:use-module (gnu packages admin)
33 #:use-module (gnu packages algebra)
34 #:use-module (gnu packages astronomy)
35 #:use-module (gnu packages audio)
36 #:use-module (gnu packages autotools)
37 #:use-module (gnu packages base)
38 #:use-module (gnu packages bash)
39 #:use-module (gnu packages boost)
40 #:use-module (gnu packages check)
41 #:use-module (gnu packages compression)
42 #:use-module (gnu packages curl)
43 #:use-module (gnu packages databases)
44 #:use-module (gnu packages documentation)
45 #:use-module (gnu packages engineering)
46 #:use-module (gnu packages fltk)
47 #:use-module (gnu packages gcc)
48 #:use-module (gnu packages gd)
49 #:use-module (gnu packages geo)
50 #:use-module (gnu packages gettext)
51 #:use-module (gnu packages ghostscript)
52 #:use-module (gnu packages glib)
53 #:use-module (gnu packages gnome)
54 #:use-module (gnu packages golang)
55 #:use-module (gnu packages gps)
56 #:use-module (gnu packages graphviz)
57 #:use-module (gnu packages gstreamer)
58 #:use-module (gnu packages gtk)
59 #:use-module (gnu packages image)
60 #:use-module (gnu packages image-processing)
61 #:use-module (gnu packages javascript)
62 #:use-module (gnu packages libusb)
63 #:use-module (gnu packages linux)
64 #:use-module (gnu packages logging)
65 #:use-module (gnu packages lua)
66 #:use-module (gnu packages maths)
67 #:use-module (gnu packages mp3)
68 #:use-module (gnu packages multiprecision)
69 #:use-module (gnu packages ncurses)
70 #:use-module (gnu packages networking)
71 #:use-module (gnu packages pkg-config)
72 #:use-module (gnu packages pulseaudio)
73 #:use-module (gnu packages python)
74 #:use-module (gnu packages python-science)
75 #:use-module (gnu packages python-xyz)
76 #:use-module (gnu packages qt)
77 #:use-module (gnu packages readline)
78 #:use-module (gnu packages ruby)
79 #:use-module (gnu packages sdl)
80 #:use-module (gnu packages sphinx)
81 #:use-module (gnu packages swig)
82 #:use-module (gnu packages tcl)
83 #:use-module (gnu packages tex)
84 #:use-module (gnu packages texinfo)
85 #:use-module (gnu packages tls)
86 #:use-module (gnu packages video)
87 #:use-module (gnu packages xiph)
88 #:use-module (gnu packages xml)
89 #:use-module (gnu packages xorg)
90 #:use-module (guix build-system cmake)
91 #:use-module (guix build-system glib-or-gtk)
92 #:use-module (guix build-system gnu)
93 #:use-module (guix build-system go)
94 #:use-module (guix build-system python)
95 #:use-module (guix build-system qt))
97 (define-public liquid-dsp
102 (origin (method git-fetch)
104 (url "https://github.com/jgaeddert/liquid-dsp")
105 (commit (string-append "v" version))))
106 (file-name (git-file-name name version))
108 (base32 "1n6dbg13q8ga5qhg1yiszwly4jj0rxqr6f1xwm9waaly5z493xsd"))))
109 (build-system gnu-build-system)
111 `(("autoconf" ,autoconf)))
115 (home-page "https://liquidsdr.org")
116 (synopsis "Signal processing library for software-defined radios")
118 "Liquid DSP is a @dfn{digital signal processing} (DSP) library designed
119 specifically for software-defined radios on embedded platforms. The aim is to
120 provide a lightweight DSP library that does not rely on a myriad of external
121 dependencies or proprietary and otherwise cumbersome frameworks. All signal
122 processing elements are designed to be flexible, scalable, and dynamic,
123 including filters, filter design, oscillators, modems, synchronizers, complex
124 mathematical operations, and much more.")
125 (license license:expat)))
127 (define-public rtl-sdr
135 (url "https://git.osmocom.org/rtl-sdr/")
137 (file-name (git-file-name name version))
140 "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k"))))
141 (build-system cmake-build-system)
143 `(("libusb" ,libusb)))
145 `(("pkg-config" ,pkg-config)))
147 `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
148 "-DINSTALL_UDEV_RULES=ON")
149 #:tests? #f ; No tests
151 (modify-phases %standard-phases
152 (add-after 'unpack 'fix-paths
153 (lambda* (#:key outputs #:allow-other-keys)
154 (substitute* "CMakeLists.txt"
155 (("DESTINATION \"/etc/udev/")
156 (string-append "DESTINATION \""
157 (assoc-ref outputs "out")
160 (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr")
161 (synopsis "Software defined radio driver for Realtek RTL2832U")
162 (description "DVB-T dongles based on the Realtek RTL2832U can be used as a
163 cheap software defined radio, since the chip allows transferring the raw I/Q
164 samples to the host. @code{rtl-sdr} provides drivers for this purpose.
166 The default Linux driver managing DVB-T dongles as TV devices doesn't work for
167 SDR purposes and clashes with this package. Therefore you must prevent the
168 kernel from loading it automatically by adding the following line to your
169 system configuration:
172 (kernel-arguments '(\"modprobe.blacklist=dvb_usb_rtl28xxu\"))
175 To install the rtl-sdr udev rules, you must extend 'udev-service-type' with
176 this package. E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
177 (license license:gpl2+)))
179 (define-public airspyhf
187 (url "https://github.com/airspy/airspyhf")
189 (file-name (git-file-name name version))
191 (base32 "0n699i5a9fzzhf80fcjlqq6p2a013rzlwmwv4nmwfafy6c8cr924"))))
192 (build-system cmake-build-system)
194 `(("pkg-config" ,pkg-config)))
196 `(("libusb" ,libusb)))
198 '(#:configure-flags '("-DINSTALL_UDEV_RULES=ON")
199 #:tests? #f ; No tests
201 (modify-phases %standard-phases
202 (add-after 'unpack 'fix-paths
203 (lambda* (#:key outputs #:allow-other-keys)
204 (substitute* "tools/CMakeLists.txt"
205 (("DESTINATION \"/etc/udev/")
206 (string-append "DESTINATION \""
207 (assoc-ref outputs "out")
209 (add-after 'fix-paths 'fix-udev-rules
211 (substitute* "tools/52-airspyhf.rules"
212 ;; The plugdev group does not exist; use dialout as in
213 ;; the hackrf package.
214 (("GROUP=\"plugdev\"")
215 "GROUP=\"dialout\"")))))))
216 (home-page "https://github.com/airspy/airspyhf")
217 (synopsis "Software defined radio driver for Airspy HF+")
219 "This package provides the driver and utilities for controlling the Airspy
220 HF+ Software Defined Radio (SDR) over USB.
222 To install the airspyhf udev rules, you must extend @code{udev-service-type}
223 with this package. E.g.: @code{(udev-rules-service 'airspyhf airspyhf)}")
224 (license license:bsd-3)))
233 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
234 version "/chirp-daily-" version ".tar.gz"))
236 (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
237 (build-system python-build-system)
239 `(("python2-libxml2" ,python2-libxml2)
240 ("python2-pygtk" ,python2-pygtk)
241 ("python2-pyserial" ,python2-pyserial)))
243 `(#:python ,python-2))
244 (home-page "https://chirp.danplanet.com")
245 (synopsis "Cross-radio programming tool")
246 (description "Chirp is a cross-radio programming tool. It supports a
247 growing list of radios across several manufacturers and allows transferring of
248 memory contents between them.")
249 (license (list license:gpl3+
250 license:lgpl3+)))) ; chirp/elib_intl.py
252 (define-public aptdec
253 ;; No release since 2013, use commit directly.
254 (let ((commit "5f91799637d93dfe7791caa7e9a6683050c4f8f3")
258 (version (git-version "1.7" revision commit))
263 (url "https://github.com/Xerbo/aptdec")
265 (file-name (git-file-name name version))
267 (base32 "0i7vkjjrq392gs9qaibr7j3v4hijqqg8458dn21dwh16ncrvr9bp"))))
268 (build-system cmake-build-system)
271 ("libsndfile" ,libsndfile)))
273 `(#:tests? #f)) ; no tests
274 (home-page "https://github.com/Xerbo/aptdec")
275 (synopsis "NOAA Automatic Picture Transmission (APT) decoder")
276 (description "Aptdec decodes Automatic Picture Transmission (APT) images.
277 These are medium resolution images of the Earth transmitted by, among other
278 satellites, the POES NOAA weather satellite series. These transmissions are
279 on a frequency of 137 MHz. They can be received using an inexpensive antenna
280 and a dedicated receiver.")
281 (license license:gpl2+))))
283 (define-public redsea
290 (url "https://github.com/windytan/redsea")
291 (commit (string-append "v" version))))
292 (file-name (git-file-name name version))
295 "1y96g0ra2krjb2kypm8s5gdfia45yci4f36klsvyzg8d53v5cwhn"))))
296 (build-system gnu-build-system)
299 (modify-phases %standard-phases
300 ;; The configure.ac file does not explicitly link against libiconv
301 ;; except on Mac OS, causing the build to fail. This phase comments
302 ;; out the original AC_SUBST macro (located inside a conditional) and
303 ;; adds an explicit use of it underneath, so that libiconv is always
305 (add-after 'unpack 'patch-libiconv
307 (substitute* "configure.ac"
311 "esac\nAC_SUBST([ICONV], [\"-liconv\"])"))
314 `(("libiconv" ,libiconv)
315 ("libsndfile" ,libsndfile)
316 ("liquid-dsp" ,liquid-dsp)))
318 `(("autoconf" ,autoconf)
319 ("automake" ,automake)))
320 (home-page "https://github.com/windytan/redsea")
321 (synopsis "Lightweight RDS to JSON decoder")
322 (description "redsea is a lightweight command-line @dfn{FM Radio Data
323 System} (FM-RDS) decoder. Redsea can be used with any RTL-SDR USB radio stick
324 with the rtl_fm tool, or any other @dfn{software-defined radio} (SDR) via
325 csdr, for example. It can also decode raw ASCII bitstream, the hex format
326 used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
327 (license license:expat)))
329 (define-public gnuradio
336 (uri (string-append "https://www.gnuradio.org/releases/gnuradio/"
337 "gnuradio-" version ".tar.xz"))
339 (base32 "1jvm9xd0l2pz1fww4zii6hl7ccnvy256nrf70ljb594n7j9j49ha"))))
340 (build-system cmake-build-system)
342 `(("doxygen" ,doxygen)
343 ("ghostscript" ,ghostscript)
344 ("js-mathjax" ,js-mathjax)
346 ("pkg-config" ,pkg-config)
347 ("pybind11" ,pybind11)
348 ("python-cheetah" ,python-cheetah)
349 ("python-mako" ,python-mako)
350 ("python-pyzmq" ,python-pyzmq)
351 ("python-scipy" ,python-scipy)
352 ("python-sphinx" ,python-sphinx)
353 ("texlive" ,(texlive-union (list texlive-amsfonts
354 texlive-latex-amsmath
355 ;; TODO: Add newunicodechar.
356 texlive-latex-graphics)))
357 ("xorg-server" ,xorg-server-for-tests)))
359 `(("alsa-lib" ,alsa-lib)
370 ("libsndfile" ,libsndfile)
373 ("portaudio" ,portaudio)
375 ("python-click" ,python-click)
376 ("python-click-plugins" ,python-click-plugins)
377 ("python-lxml" ,python-lxml)
378 ("python-matplotlib" ,python-matplotlib)
379 ("python-numpy" ,python-numpy)
380 ("python-pycairo" ,python-pycairo)
381 ("python-pygobject" ,python-pygobject)
382 ("python-pyqt" ,python-pyqt)
383 ("python-pyyaml" ,python-pyyaml)
390 `(#:modules ((guix build cmake-build-system)
391 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
392 ((guix build python-build-system) #:prefix python:)
395 #:imported-modules (,@%cmake-build-system-modules
396 (guix build glib-or-gtk-build-system)
397 (guix build python-build-system))
399 (list (string-append "-DMATHJAX2_ROOT="
400 (assoc-ref %build-inputs "js-mathjax")
401 "/share/javascript/mathjax"))
403 (modify-phases %standard-phases
404 (add-after 'unpack 'fix-paths
405 (lambda* (#:key inputs #:allow-other-keys)
406 (let ((qwt (assoc-ref inputs "qwt")))
407 (substitute* "cmake/Modules/FindQwt.cmake"
409 (string-append qwt "/include"))
411 (string-append qwt "/lib"))
412 (("qwt6-\\$\\{QWT_QT_VERSION\\}")
414 (substitute* "cmake/Modules/GrPython.cmake"
417 (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
418 "gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
422 (add-before 'check 'set-test-environment
423 (lambda* (#:key inputs #:allow-other-keys)
424 (setenv "HOME" "/tmp")
425 (system (string-append (assoc-ref inputs "xorg-server")
427 (setenv "DISPLAY" ":1")
430 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
431 (invoke "ctest" "-j" (if parallel-tests?
432 (number->string (parallel-job-count))
434 "--output-on-failure"
435 ;;disable broken tests
437 '(;; https://github.com/gnuradio/gnuradio/issues/3871
438 "qa_header_payload_demux"
439 ;; https://github.com/gnuradio/gnuradio/issues/4348
440 "qa_packet_headerparser_b")
442 (add-after 'install 'wrap-python
443 (assoc-ref python:%standard-phases 'wrap))
444 (add-after 'wrap-python 'wrap-glib-or-gtk
445 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
446 (add-after 'wrap-glib-or-gtk 'wrap-with-GI_TYPELIB_PATH
447 (lambda* (#:key inputs outputs #:allow-other-keys)
448 (let ((out (assoc-ref outputs "out"))
449 (paths (map (match-lambda
450 ((output . directory)
451 (let ((girepodir (string-append
453 "/lib/girepository-1.0")))
454 (if (file-exists? girepodir)
458 (wrap-program (string-append out "/bin/gnuradio-companion")
459 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
462 ;; Variables required to find third-party plugins at runtime.
463 (list (search-path-specification
464 (variable "GRC_BLOCKS_PATH")
465 (files '("share/gnuradio/grc/blocks")))
466 (search-path-specification
467 (variable "PYTHONPATH")
468 (files (list (string-append "lib/python"
470 (package-version python))
471 "/site-packages"))))))
472 (synopsis "Toolkit for software-defined radios")
474 "GNU Radio is a development toolkit that provides signal processing blocks
475 to implement software radios. It can be used with external RF hardware to
476 create software-defined radios, or without hardware in a simulation-like
478 (home-page "https://www.gnuradio.org")
479 (license license:gpl3+)))
481 (define-public gr-osmosdr
482 ;; No tag for version supporting Gnuradio 3.9; use commit.
483 (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
487 (version (git-version "0.2.3" revision commit))
492 (url "https://git.osmocom.org/gr-osmosdr")
494 (file-name (git-file-name name version))
496 (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
497 (build-system cmake-build-system)
499 `(("doxygen" ,doxygen)
500 ("pkg-config" ,pkg-config)
501 ("pybind11" ,pybind11)
502 ("python-mako" ,python-mako)
503 ("python-six" ,python-six)))
505 `(("airspyhf" ,airspyhf)
509 ("gnuradio" ,gnuradio)
511 ("libsndfile" ,libsndfile)
514 ("python-numpy" ,python-numpy)
515 ("python-pyqt" ,python-pyqt)
519 `(#:modules ((guix build cmake-build-system)
520 ((guix build python-build-system) #:prefix python:)
522 #:imported-modules (,@%cmake-build-system-modules
523 (guix build python-build-system))
525 (modify-phases %standard-phases
526 (add-after 'install 'wrap-python
527 (assoc-ref python:%standard-phases 'wrap)))))
528 (synopsis "GNU Radio block for interfacing with various radio hardware")
529 (description "This is a block for GNU Radio allowing to use a common API
530 to access different radio hardware.")
531 (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
532 (license license:gpl3+))))
533 (deprecated-package "gnuradio-osmosdr" gr-osmosdr)
535 (define-public libosmo-dsp
543 (url "https://git.osmocom.org/libosmo-dsp")
545 (file-name (git-file-name name version))
547 (base32 "00plihnpym1gkfpflah8il9463qxzm9kx2f07jyvbkszpj8viq5g"))))
548 (build-system gnu-build-system)
550 `(("autoconf" ,autoconf)
551 ("automake" ,automake)
552 ("bash-minimal" ,bash-minimal)
555 ("pkg-config" ,pkg-config)
556 ("texlive" ,(texlive-union (list texlive-amsfonts
557 texlive-latex-amsmath
558 ;; TODO: Add newunicodechar.
559 texlive-latex-graphics)))))
564 (modify-phases %standard-phases
565 (add-after 'unpack 'fix-paths
566 (lambda* (#:key inputs #:allow-other-keys)
567 (substitute* "git-version-gen"
569 (string-append (assoc-ref inputs "bash")
572 (synopsis "DSP primitives for SDR")
574 "This a C-language library for common DSP (Digital Signal Processing)
575 primitives for SDR (Software Defined Radio).")
576 (home-page "https://osmocom.org/projects/libosmo-dsp")
577 (license license:gpl2+)))
579 (define-public gr-iqbal
580 ;; No tag for version supporting Gnuradio 3.9; use commit.
581 (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
585 (version (git-version "0.38.2" revision commit))
590 (url "https://git.osmocom.org/gr-iqbal")
592 (file-name (git-file-name name version))
594 (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
595 (build-system cmake-build-system)
597 `(("doxygen" ,doxygen)
598 ("pkg-config" ,pkg-config)
599 ("pybind11" ,pybind11)
601 ("python-numpy" ,python-numpy)
602 ("python-six" ,python-six)))
607 ("gnuradio" ,gnuradio)
608 ("libosmo-dsp" ,libosmo-dsp)
611 (synopsis "GNU Radio block to correct IQ imbalance")
613 "This is a GNU Radio block to correct IQ imbalance in quadrature
614 receivers. It's composed of two main block:
616 @item Fix: Given a phase and amplitude error, it will correct a complex signal.
617 @item Optimize: Attempts to auto-detect the phase and amplitude error to feed
618 to the fix block above.
620 (home-page "https://git.osmocom.org/gr-iqbal/")
621 (license license:gpl3+))))
622 (deprecated-package "gnuradio-iqbalance" gr-iqbal)
632 (url "https://github.com/csete/gqrx")
633 (commit (string-append "v" version))))
634 (file-name (git-file-name name version))
636 (base32 "0m4ncydihz4n4i80c252vk3c5v672yab1jv85n6ndn7a92xv3ilq"))))
637 (build-system qt-build-system)
639 `(("pkg-config" ,pkg-config)))
641 `(("alsa-lib" ,alsa-lib)
645 ("gnuradio" ,gnuradio)
646 ("gr-iqbal" ,gr-iqbal)
647 ("gr-osmosdr" ,gr-osmosdr)
649 ("libsndfile" ,libsndfile)
651 ("portaudio" ,portaudio)
652 ("pulseaudio" ,pulseaudio)
657 `(#:tests? #f)) ; no tests
658 (synopsis "Software defined radio receiver")
659 (description "Gqrx is a software defined radio (SDR) receiver implemented
660 using GNU Radio and the Qt GUI toolkit.")
661 (home-page "https://gqrx.dk/")
662 (license license:gpl3+)))
664 (define-public fldigi
672 (url "https://git.code.sf.net/p/fldigi/fldigi")
673 (commit (string-append "v" version))))
674 (file-name (git-file-name name version))
676 (base32 "177qnl1bxy46rqwdxizfy2i3mxk5bzz733cp445rfzl7b6yf6zrn"))))
677 (build-system gnu-build-system)
679 `(("autoconf" ,autoconf)
680 ("automake" ,automake)
681 ("gettext" ,gettext-minimal)
682 ("pkg-config" ,pkg-config)))
684 `(("alsa-lib" ,alsa-lib)
688 ("libsamplerate" ,libsamplerate)
692 ("libxfixes" ,libxfixes)
694 ("portaudio" ,portaudio)
695 ("pulseaudio" ,pulseaudio)))
696 (synopsis "Software modem for amateur radio use")
698 "Fldigi is a software modem for amateur radio use. It is a sound card
699 based program that is used for both transmitting and receiving data by
700 connecting the microphone and headphone connections of a computer to some radio
702 (home-page "http://www.w1hkj.com/")
703 (license license:gpl3+)))
713 (url "https://git.code.sf.net/p/fldigi/flrig")
714 (commit (string-append "v" version))))
715 (file-name (git-file-name name version))
717 (base32 "0vxn1wy5b2zfq20k93rfgq34m1nd3mxd74h8l98f90d85fhcqggy"))))
718 (build-system gnu-build-system)
720 `(("autoconf" ,autoconf)
721 ("automake" ,automake)
722 ("pkg-config" ,pkg-config)))
727 ("libxfixes" ,libxfixes)
729 (synopsis "Radio transceiver control program")
731 "Flrig is a transceiver control program for amateur radio use.
732 It provides computer aided control of various radios using a serial
734 (home-page "http://www.w1hkj.com/")
735 (license license:gpl3+)))
745 (url "https://git.code.sf.net/p/fldigi/flamp")
746 (commit (string-append "v" version))))
747 (file-name (git-file-name name version))
749 (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq"))))
750 (build-system gnu-build-system)
752 `(("autoconf" ,autoconf)
753 ("automake" ,automake)
754 ("pkg-config" ,pkg-config)))
759 ("libxfixes" ,libxfixes)
761 (synopsis "Tool for AMP file transfer")
763 "FLAMP is a program for transferring files by radio waves using AMP
764 (Amateur Multicast Protocol).")
765 (home-page "http://www.w1hkj.com/")
766 (license license:gpl3+)))
768 (define-public flwrap
776 (url "https://git.code.sf.net/p/fldigi/flwrap")
777 (commit (string-append "v" version))))
778 (file-name (git-file-name name version))
780 (base32 "0xkhr82smfr7wpb9xl05wf7bz3vi2mr4xkcr2s8v6mblhgsdhqwg"))))
781 (build-system gnu-build-system)
783 `(("autoconf" ,autoconf)
784 ("automake" ,automake)
785 ("pkg-config" ,pkg-config)))
790 ("libxfixes" ,libxfixes)
792 (synopsis "File encapsulation program")
794 "Flwrap is a software utility for amateur radio use. Its purpose is to
795 encapsulate both text and binary files in a way that allows them to be
796 transmitted over any of several digital modes and verified at the receipt end
798 (home-page "http://www.w1hkj.com/")
799 (license license:gpl3+)))
801 (define-public hackrf
804 (version "2021.03.1")
809 (url "https://github.com/mossmann/hackrf")
810 (commit (string-append "v" version))))
811 (file-name (git-file-name name version))
813 (base32 "12fkgimjy5ia291c1rn4y59pn9r5wdvz5x9z5xc8zr1xr96iyhfs"))))
814 (build-system cmake-build-system)
817 (list "-DUDEV_RULES_GROUP=dialout"
818 (string-append "-DUDEV_RULES_PATH="
819 (assoc-ref %outputs "out")
820 "/lib/udev/rules.d"))
822 (modify-phases %standard-phases
823 (add-before 'configure 'enter-source-directory
827 (add-after 'install 'delete-static-library
828 (lambda* (#:key outputs #:allow-other-keys)
829 (delete-file (string-append (assoc-ref outputs "out")
832 (add-before 'install-license-files 'leave-source-directory
836 #:tests? #f)) ; no test suite
838 `(("pkg-config" ,pkg-config)))
843 (home-page "https://greatscottgadgets.com/hackrf/")
844 (synopsis "User-space library and utilities for HackRF SDR")
846 "Command line utilities and a C library for controlling the HackRF
847 Software Defined Radio (SDR) over USB. Installing this package installs the
848 userspace hackrf utilities and C library. To install the hackrf udev rules,
849 you must extend 'udev-service-type' with this package. E.g.:
850 @code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
851 (license license:gpl2)))
853 (define-public hamlib
861 "https://github.com/Hamlib/Hamlib/releases/download/"
862 version "/hamlib-" version ".tar.gz"))
864 (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
865 (build-system gnu-build-system)
867 `(("doxygen" ,doxygen)
869 ("pkg-config" ,pkg-config)
870 ("python-wrapper" ,python-wrapper)
877 ("readline" ,readline)))
879 `(#:configure-flags '("--disable-static"
881 "--with-python-binding"
883 "--with-xml-support")))
884 (synopsis "Tools and API to control radios")
886 "The Ham Radio Control Library (Hamlib) is a project to provide programs
887 with a consistent Application Programming Interface (API) for controlling the
888 myriad of radios and rotators available to amateur radio and communications
890 (home-page "https://hamlib.github.io/")
891 (license (list license:gpl2+ license:lgpl2.1+))))
894 ;; Fork of hamlib with custom patches used by wsjtx.
897 (name "wsjtx-hamlib")
903 (url "https://git.code.sf.net/u/bsomervi/hamlib.git")
904 (commit (string-append "wsjtx-" version))))
905 (file-name (git-file-name name version))
907 (base32 "0m4yzjcqs7a1w4lghyyckpkiy96jxdjijddxarqr3a37cl2rz23j"))))
909 `(("autoconf" ,autoconf)
910 ("automake" ,automake)
913 ,@(package-native-inputs hamlib)))
915 `(#:configure-flags '("--disable-static"
917 "--with-python-binding"
919 "--with-xml-support")))))
929 (url "https://git.code.sf.net/p/wsjt/wsjtx.git")
930 (commit (string-append "wsjtx-" version))))
931 (file-name (git-file-name name version))
933 (base32 "0mdr4l7zii08615yn7z91spnvnqm5i9390bra9lz3aqyxrsiim91"))))
934 (build-system qt-build-system)
936 `(("asciidoc" ,asciidoc)
937 ("gfortran" ,gfortran)
938 ("pkg-config" ,pkg-config)
940 ("ruby-asciidoctor" ,ruby-asciidoctor)))
945 ("hamlib" ,wsjtx-hamlib)
948 ("qtmultimedia" ,qtmultimedia)
949 ("qtserialport" ,qtserialport)))
951 `(#:tests? #f ; No test suite
953 (modify-phases %standard-phases
954 (add-after 'unpack 'work-around-runtime-bug
956 ;; Some of the programs in this package fail to find symbols
957 ;; in libm at runtime. Adding libm manually at the end of the
958 ;; library lists when linking the programs seems to help.
959 ;; TODO: find exactly what is wrong in the way the programs
961 (substitute* "CMakeLists.txt"
962 (("target_link_libraries \\((.*)\\)" all libs)
963 (string-append "target_link_libraries (" libs " m)")))
965 (synopsis "Weak-signal ham radio communication program")
967 "WSJT-X implements communication protocols or modes called FT4, FT8,
968 JT4, JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
969 detecting and measuring your own radio signals reflected from the Moon. These
970 modes were all designed for making reliable, confirmed QSOs under extreme
971 weak-signal conditions.")
972 (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html")
973 (license license:gpl3)))
975 (define-public js8call
983 (uri (string-append "http://files.js8call.com/" version
984 "/js8call-" version ".tgz"))
986 (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
987 (modules '((guix build utils)))
990 ;; Delete bundled boost to use the shared one.
991 (delete-file-recursively "boost")
993 (build-system qt-build-system)
995 `(("asciidoc" ,asciidoc)
996 ("gfortran" ,gfortran)
997 ("pkg-config" ,pkg-config)
999 ("ruby-asciidoctor" ,ruby-asciidoctor)))
1004 ("hamlib" ,wsjtx-hamlib)
1007 ("qtmultimedia" ,qtmultimedia)
1008 ("qtserialport" ,qtserialport)))
1010 `(#:tests? #f ; No test suite
1012 (modify-phases %standard-phases
1013 (add-after 'unpack 'fix-paths
1014 (lambda* (#:key outputs #:allow-other-keys)
1015 (substitute* "CMakeLists.txt"
1016 (("DESTINATION /usr/share")
1017 (string-append "DESTINATION "
1018 (assoc-ref outputs "out")
1021 (add-after 'fix-paths 'work-around-runtime-bug
1023 ;; Some of the programs in this package fail to find symbols
1024 ;; in libm at runtime. Adding libm manually at the end of the
1025 ;; library lists when linking the programs seems to help.
1026 ;; TODO: find exactly what is wrong in the way the programs
1028 (substitute* "CMakeLists.txt"
1029 (("target_link_libraries \\((.*)\\)" all libs)
1030 (string-append "target_link_libraries (" libs " m)")))
1032 (add-after 'unpack 'fix-hamlib
1034 (substitute* "CMake/Modules/Findhamlib.cmake"
1035 (("set \\(ENV\\{PKG_CONFIG_PATH\\}.*\\)")
1036 "set (__pc_path $ENV{PKG_CONFIG_PATH})
1037 list (APPEND __pc_path \"${__hamlib_pc_path}\")
1038 set (ENV{PKG_CONFIG_PATH} \"${__pc_path}\")"))
1039 (substitute* "HamlibTransceiver.hpp"
1040 (("#ifdef JS8_USE_LEGACY_HAMLIB")
1043 (synopsis "Weak-signal ham radio communication program")
1045 "JS8Call is a software using the JS8 digital mode (a derivative of the FT8
1046 mode) providing weak signal keyboard to keyboard messaging to amateur radio
1048 (home-page "http://js8call.com/")
1049 (license license:gpl3)))
1051 (define-public xnec2c
1058 (uri (string-append "http://www.5b4az.org/pkg/nec2/xnec2c/xnec2c-"
1059 version ".tar.bz2"))
1061 (base32 "1myvlkfybb2ha8l0h96ca3iz206zzy9z5iizm0sbab2zzp78n1r9"))))
1062 (build-system gnu-build-system)
1064 `(("pkg-config" ,pkg-config)))
1069 (modify-phases %standard-phases
1070 (add-after 'unpack 'fix-makefile
1071 (lambda* (#:key outputs #:allow-other-keys)
1072 (substitute* '("Makefile.am" "Makefile.in")
1073 ;; The DESTDIR variable does not get replaced the prefix
1074 ;; in the final Makefile, so let's do here.
1075 (("\\$\\(DESTDIR\\)/usr")
1076 (assoc-ref outputs "out")))
1078 (add-after 'fix-makefile 'fix-paths
1079 (lambda* (#:key outputs #:allow-other-keys)
1080 ;; Increase the max length of the path to the glade file,
1081 ;; so that the '/gnu/store/...' path can fit in.
1082 (substitute* '("src/shared.c" "src/shared.h")
1083 (("char xnec2c_glade\\[64\\];")
1084 "char xnec2c_glade[256];"))
1085 ;; Fix hard coded references to '/usr/...'.
1086 (substitute* '("src/geom_edit.c" "src/main.c")
1088 (string-append "\"" (assoc-ref outputs "out"))))
1090 (synopsis "Antenna modeling software")
1092 "Xnec2c is a GTK3-based graphical version of nec2c, a translation to the
1093 C language of NEC2, the FORTRAN Numerical Electromagnetics Code commonly used
1094 for antenna simulation and analysis. It can be used to define the geometry of
1095 an antenna, and then plot the radiation pattern or frequency-related data like
1096 gain and standing wave ratio.")
1097 (home-page "http://www.5b4az.org/")
1098 (license license:gpl3+)))
1100 (define-public dump1090
1108 (url "https://github.com/flightaware/dump1090")
1109 (commit (string-append "v" version))))
1110 (file-name (git-file-name name version))
1112 (base32 "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"))))
1113 (build-system gnu-build-system)
1115 `(("pkg-config" ,pkg-config)))
1117 `(("libusb" ,libusb)
1118 ("ncurses" ,ncurses)
1119 ("rtl-sdr" ,rtl-sdr)))
1121 `(#:test-target "test"
1123 (list (string-append "CC=" ,(cc-for-target))
1126 (modify-phases %standard-phases
1129 (lambda* (#:key outputs #:allow-other-keys)
1130 (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
1131 (install-file "dump1090" bin)
1132 (install-file "view1090" bin)
1134 (synopsis "Mode S decoder for rtl-sdr devices")
1136 "Dump1090 is a Mode S decoder specifically designed for rtl-sdr devices.
1137 It can be used to decode the ADS-B signals that planes emit to indicate
1138 their position, altitude, speed, etc.")
1139 (home-page "https://github.com/flightaware/dump1090")
1140 (license license:gpl2+)))
1142 (define-public rtl-433
1150 (url "https://github.com/merbanan/rtl_433")
1152 (file-name (git-file-name name version))
1154 (base32 "1f60nvahsplv1yszacc49mlbcnacgs1nwhdf8y9srmzg08xrfnfk"))))
1155 (build-system cmake-build-system)
1157 `(("pkg-config" ,pkg-config)))
1159 `(("libusb" ,libusb)
1160 ("openssl" ,openssl)
1161 ("rtl-sdr" ,rtl-sdr)))
1162 (synopsis "Decoder for radio transmissions in ISM bands")
1164 "This is a generic data receiver, mainly for decoding radio transmissions
1165 from devices on the 433 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz ISM bands.")
1166 (home-page "https://github.com/merbanan/rtl_433")
1167 (license license:gpl2+)))
1169 (define-public multimon-ng
1171 (name "multimon-ng")
1177 (url "https://github.com/EliasOenal/multimon-ng")
1179 (file-name (git-file-name name version))
1181 (base32 "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"))))
1182 (build-system cmake-build-system)
1184 `(("libx11" ,libx11)
1185 ("pulseaudio" ,pulseaudio)))
1187 '(#:tests? #f)) ; no test suite
1188 (home-page "https://github.com/EliasOenal/multimon-ng")
1189 (synopsis "Decoder for digital radio transmission modes")
1190 (description "Multimon-ng can decode several digital radio transmission
1193 @item POCSAG512, POCSAG1200, POCSAG2400
1196 @item UFSK1200, CLIPFSK, AFSK1200, AFSK2400, AFSK2400_2, AFSK2400_3
1200 @item ZVEI1, ZVEI2, ZVEI3, DZVEI, PZVEI
1201 @item EEA, EIA, CCIR
1205 (license license:gpl2+)))
1207 (define-public nanovna-saver
1209 (name "nanovna-saver")
1215 (url "https://github.com/NanoVNA-Saver/nanovna-saver")
1216 (commit (string-append "v" version))))
1217 (file-name (git-file-name name version))
1219 (base32 "0z83rwpnbbs1n74mx8dgh1d1crp90mannj9vfy161dmy4wzc5kpv"))))
1220 (build-system python-build-system)
1222 `(("python-cython" ,python-cython)))
1224 `(("python-numpy" ,python-numpy)
1225 ("python-pyqt" ,python-pyqt)
1226 ("python-pyserial" ,python-pyserial)
1227 ("python-scipy" ,python-scipy)))
1230 (home-page "https://github.com/NanoVNA-Saver/nanovna-saver")
1231 (synopsis "GUI for NanoVNA devices")
1233 "NanoVNA-Saver is a tool for reading, displaying and saving data from the
1234 NanoVNA vector network analyzers.")
1235 (license license:gpl3+)))
1237 (define-public qsstv
1244 (uri (string-append "http://users.telenet.be/on4qz/qsstv/downloads/"
1245 "qsstv_" version ".tar.gz"))
1247 (base32 "0f9hx6sy418cb23fadll298pqbc5l2lxsdivi4vgqbkvx7sw58zi"))))
1248 (build-system qt-build-system)
1250 `(("pkg-config" ,pkg-config)))
1252 `(("alsa-lib" ,alsa-lib)
1256 ("openjpeg" ,openjpeg)
1257 ("pulseaudio" ,pulseaudio)
1259 ("v4l-utils" ,v4l-utils)))
1261 `(#:tests? #f ; No test suite.
1263 (modify-phases %standard-phases
1265 (lambda* (#:key outputs #:allow-other-keys)
1267 (string-append "PREFIX=" (assoc-ref outputs "out")))
1269 (home-page "http://users.telenet.be/on4qz/qsstv/")
1270 (synopsis "Program for receiving and transmitting SSTV and HAMDRM")
1272 "QSSTV is a program for receiving and transmitting SSTV and HAMDRM
1273 (sometimes called DSSTV). It is compatible with most of MMSSTV and EasyPal.")
1274 (license (list license:gpl2+
1277 (define-public direwolf
1285 (url "https://github.com/wb2osz/direwolf")
1287 (file-name (git-file-name name version))
1289 (base32 "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"))))
1290 (build-system cmake-build-system)
1292 `(("alsa-lib" ,alsa-lib)
1293 ("hamlib" ,hamlib)))
1296 (modify-phases %standard-phases
1297 (add-after 'unpack 'fix-paths
1298 (lambda* (#:key outputs #:allow-other-keys)
1299 (substitute* "conf/CMakeLists.txt"
1300 (("DESTINATION /etc")
1301 (string-append "DESTINATION "
1302 (assoc-ref outputs "out")
1304 (home-page "https://github.com/wb2osz/direwolf")
1305 (synopsis "TNC for Amateur Packet Radio")
1307 "Dire Wolf is a Terminal Node Controller (TNC) for Amateur Packet Radio.
1310 @item APRS GPS tracker,
1312 @item Internet gateway (IGate)
1313 @item APRStt gateway
1315 (license license:gpl2+)))
1324 (uri (string-append "mirror://savannah/aldo/aldo-" version ".tar.bz2"))
1326 (base32 "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i"))))
1327 (build-system gnu-build-system)
1330 (home-page "https://www.nongnu.org/aldo/")
1331 (synopsis "Morse code tutor")
1333 "Aldo is a morse code learning tool providing four type of training
1337 @item Classic exercice,
1339 @item Read from file,
1340 @item Callsign exercice.
1342 (license license:gpl3+)))
1344 (define-public unixcw
1351 (uri (string-append "mirror://sourceforge/unixcw/unixcw-"
1354 (base32 "15wriwv91583kmmyijbzam3dpclzmg4qjyfzjv5f75x9b0gqabxm"))))
1355 (build-system gnu-build-system)
1357 `(("pkg-config" ,pkg-config)))
1359 `(("alsa-lib" ,alsa-lib)
1360 ("ncurses" ,ncurses)
1361 ("pulseaudio" ,pulseaudio)
1362 ("qtbase" ,qtbase)))
1364 `(#:configure-flags '("--disable-static")
1366 (modify-phases %standard-phases
1367 (add-after 'unpack 'fix-paths
1368 (lambda* (#:key inputs #:allow-other-keys)
1369 (substitute* '("configure"
1371 "src/cwcp/Makefile.am"
1372 "src/cwcp/Makefile.in")
1375 (substitute* "src/libcw/libcw_pa.c"
1376 (("libpulse-simple.so" all)
1377 (string-append (assoc-ref inputs "pulseaudio")
1379 (home-page "http://unixcw.sourceforge.net/")
1380 (synopsis "Morse code library and programs")
1382 "@code{unixcw} is a project providing the libcw library and a set of
1383 programs using the library: cw, cwgen, cwcp and xcwcp. The programs are
1384 intended for people who want to learn receiving and sending morse code.")
1385 (license license:gpl2+)))
1387 (define-public gnuais
1395 (url "https://github.com/rubund/gnuais")
1397 (file-name (git-file-name name version))
1399 (base32 "1rik5fdfslszdn3yvj769jzmnv9pirzf76ki33bjjzk7nkabbnlm"))))
1400 (build-system cmake-build-system)
1402 `(("mariadb-dev" ,mariadb "dev")
1403 ("pkg-config" ,pkg-config)))
1405 `(("alsa-lib" ,alsa-lib)
1408 ("libsoup" ,libsoup-minimal)
1409 ("mariadb-lib" ,mariadb "lib")
1410 ("osm-gps-map" ,osm-gps-map)
1411 ("pulseaudio" ,pulseaudio)))
1413 `(#:tests? #f ; No test suite
1415 (modify-phases %standard-phases
1416 (add-after 'unpack 'fix-paths
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (substitute* "src/cfgfile.c"
1420 (string-append (assoc-ref outputs "out") "/share/"))))))))
1421 (home-page "http://gnuais.sourceforge.net/")
1422 (synopsis "AIS message demodulator and decoder")
1424 "This program contains algorithms to demodulate and decode AIS (Automatic
1425 Identification System) messages sent by ships and coast stations.")
1426 (license license:gpl2+)))
1428 (define-public kappanhang
1436 (url "https://github.com/nonoo/kappanhang")
1437 (commit (string-append "v" version))))
1438 (file-name (git-file-name name version))
1440 (base32 "1ycy8avq5s7zspfi0d9klqcwwkpmcaz742cigd7pmcnbbhspcicp"))))
1441 (build-system go-build-system)
1443 '(#:import-path "github.com/nonoo/kappanhang"
1444 #:install-source? #f))
1446 `(("go-github-com-akosmarton-papipes",go-github-com-akosmarton-papipes)
1447 ("go-github-com-fatih-color" ,go-github-com-fatih-color)
1448 ("go-github-com-google-goterm" ,go-github-com-google-goterm)
1449 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
1450 ("go-github-com-mesilliac-pulse-simple"
1451 ,go-github-com-mesilliac-pulse-simple)
1452 ("go-github-com-pborman-getopt" ,go-github-com-pborman-getopt)
1453 ("go-go-uber-org-multierr" ,go-go-uber-org-multierr)
1454 ("go-go-uber-org-zap" ,go-go-uber-org-zap)))
1455 (home-page "https://github.com/nonoo/kappanhang")
1456 (synopsis "Client for Icom RS-BA1 server")
1458 "Kappanhang remotely opens audio channels and a serial port to an Icom
1459 RS-BA1 server. The application is mainly developed for connecting to the Icom
1460 IC-705 transceiver, which has built-in WiFi and RS-BA1 server.
1462 Compatible hardware/software:
1464 @item Icom RS-BA1 server software,
1468 (license license:expat)))
1470 (define-public dream
1477 (uri (string-append "mirror://sourceforge/drm/dream/" version
1478 "/dream-" version "-svn808.tar.gz"))
1480 (base32 "01dv6gvljz64zrjbr08mybr9aicvpq2c6qskww46lngdjyhk8xs1"))))
1481 (build-system qt-build-system)
1483 `(("pkg-config" ,pkg-config)))
1487 ("libsndfile" ,libsndfile)
1488 ("libpcap" ,libpcap)
1490 ("pulseaudio" ,pulseaudio)
1493 ("qtwebkit" ,qtwebkit)
1495 ("speexdsp" ,speexdsp)
1500 (modify-phases %standard-phases
1501 (add-after 'unpack 'fix-paths
1502 (lambda* (#:key inputs outputs #:allow-other-keys)
1503 (substitute* "dream.pro"
1504 (("target\\.path = /usr/bin")
1505 (string-append "target.path = "
1506 (assoc-ref outputs "out") "/bin"))
1507 (("documentation\\.path = /usr/share/man/man1")
1508 (string-append "documentation.path = "
1509 (assoc-ref outputs "out")
1511 (("/usr/include/pulse/")
1512 (string-append (assoc-ref inputs "pulseaudio")
1514 (("/usr/include/sndfile\\.h")
1515 (string-append (assoc-ref inputs "libsndfile")
1516 "/include/sndfile.h"))
1517 (("/usr/include/opus/")
1518 (string-append (assoc-ref inputs "opus")
1520 (("/usr/include/speex/")
1521 (string-append (assoc-ref inputs "speexdsp")
1523 (("/usr/include/qwt/")
1524 (string-append (assoc-ref inputs "qwt")
1526 (("\\$\\$OUT_PWD/include/neaacdec\\.h")
1527 (string-append (assoc-ref inputs "faad2")
1528 "/include/neaacdec.h")))))
1531 (invoke "qmake"))))))
1532 (home-page "https://sourceforge.net/projects/drm/")
1533 (synopsis "Digital Radio Mondiale receiver")
1535 "Dream is a software implementation of a Digital Radio Mondiale (DRM)
1537 (license license:gpl2+)))
1539 (define-public welle-io
1547 (url "https://github.com/albrechtl/welle.io")
1548 (commit (string-append "v" version))))
1549 (file-name (git-file-name name version))
1551 (base32 "1xl1lanw0xgmgks67dbfb2h52jxnrd1i2zik56v0q8dwsr7f0daw"))))
1552 (build-system qt-build-system)
1554 `(("pkg-config" ,pkg-config)))
1556 `(("alsa-lib" ,alsa-lib)
1562 ("rtl-sdr" ,rtl-sdr)
1564 ("qtcharts" ,qtcharts)
1565 ("qtdeclarative" ,qtdeclarative)
1566 ("qtgraphicaleffects" ,qtgraphicaleffects)
1567 ("qtmultimedia" ,qtmultimedia)
1568 ("qtquickcontrols2" ,qtquickcontrols2)))
1570 `(#:configure-flags '("-DRTLSDR=ON")
1572 (home-page "https://www.welle.io/")
1573 (synopsis "DAB and DAB+ software radio")
1575 "@code{welle.io} is a Digital Audio Broadcasting (DAB and DAB+) software
1576 defined radio with support for rtl-sdr.")
1577 (license license:gpl2+)))
1580 ;; No release since 2017, use commit directly.
1581 (let ((commit "6ef2a74206887155290a54c7117636f66742f858")
1585 (version (git-version "0.15" revision commit))
1590 (url "https://github.com/ha7ilm/csdr")
1592 (file-name (git-file-name name version))
1594 (base32 "0ic35130lf66lk3wawgc5bcg711l7chv9al1hzdc1xrmq9qf9hri"))))
1595 (build-system gnu-build-system)
1597 `(("fftwf" ,fftwf)))
1600 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1601 ;; Don't print summary of SIMD optimized functions.
1603 #:tests? #f ; No check phase
1605 (modify-phases %standard-phases
1607 (lambda* (#:key outputs #:allow-other-keys)
1608 (substitute* "Makefile"
1609 (("PARAMS_MISC = -Wno-unused-result" all)
1610 ;; The 'validate-runpath' phase fails without this.
1612 all " -Wl,-rpath=" (assoc-ref outputs "out") "/lib"))
1613 (("PARAMS_SIMD =.*")
1614 ;; Disable to make reproducibility and cross-compilation work.
1617 ,(string-append (cc-for-target) " "))
1619 ,(string-append (cxx-for-target) " ")))))
1620 (add-before 'install 'make-installation-directories
1621 (lambda* (#:key outputs #:allow-other-keys)
1622 (let ((out (assoc-ref outputs "out")))
1623 (mkdir-p (string-append out "/bin"))
1624 (mkdir-p (string-append out "/lib"))))))))
1625 (home-page "https://github.com/ha7ilm/csdr")
1626 (synopsis "DSP for software defined radio")
1628 "This package includes the @code{libcsdr} library of
1629 @acronym{DSP, Digital Signal Processing} functions for
1630 @acronym{SDRs, Software Defined Radios}, and the @code{csdr} command line
1631 program that can be used to build simple signal processing flow graphs.")
1632 (license license:gpl3+))))
1634 (define-public serialdv
1642 (url "https://github.com/f4exb/serialDV")
1643 (commit (string-append "v" version))))
1644 (file-name (git-file-name name version))
1646 (base32 "0d88h2wjhf79nisiv96bq522hkbknzm88wsv0q9k33mzmrwnrx93"))))
1647 (build-system cmake-build-system)
1649 `(#:tests? #f)) ; No test suite.
1650 (home-page "https://github.com/f4exb/serialDV")
1651 (synopsis "Audio interface for AMBE3000 based devices")
1653 "SerialDV is a minimal interface to encode and decode audio with AMBE3000
1654 based devices in packet mode over a serial link.")
1655 (license license:gpl3+)))
1657 (define-public cm256cc
1665 (url "https://github.com/f4exb/cm256cc")
1666 (commit (string-append "v" version))))
1667 (file-name (git-file-name name version))
1669 (base32 "1n9v7g6d370263bgqrjv38s9aq5953rzy7jvd8i30xq6aram9djg"))))
1670 (build-system cmake-build-system)
1672 ;; Disable some SIMD features for reproducibility.
1673 `(#:configure-flags '("-DENABLE_DISTRIBUTION=1")
1675 (modify-phases %standard-phases
1677 (lambda* (#:key tests? #:allow-other-keys)
1679 (invoke "./cm256_test")))))))
1680 (home-page "https://github.com/f4exb/cm256cc")
1681 (synopsis "Cauchy MDS Block Erasure Codec")
1683 "This is a C++ library implementing fast GF(256) Cauchy MDS Block Erasure
1685 (license license:gpl3+)))
1687 (define-public libdab
1688 ;; No release since 2017, use commit directly.
1689 (let ((commit "b578d02eda60f613d35bab5d762ae7c9a27758d8")
1693 (version (git-version "0.8" revision commit))
1698 (url "https://github.com/JvanKatwijk/dab-cmdline")
1700 (file-name (git-file-name name version))
1702 (base32 "0j339kx3n2plgfw7ikpp7b81h5n68wmsgflwljbh2sy8j62faik9"))))
1703 (build-system cmake-build-system)
1709 `(#:tests? #f ; No test suite.
1711 (modify-phases %standard-phases
1712 (add-after 'unpack 'enter-sources-directory
1714 (chdir "library"))))))
1715 (home-page "https://github.com/JvanKatwijk/dab-cmdline")
1716 (synopsis "DAB decoding library")
1717 (description "This is a library to decode @acronym{DAB/DAB+, Digital
1718 Audio Broadcasting}.")
1719 (license license:gpl2+))))
1721 (define-public dsdcc
1729 (url "https://github.com/f4exb/dsdcc")
1730 (commit (string-append "v" version))))
1731 (file-name (git-file-name name version))
1733 (base32 "0jgzpv4d6ckd0sdq6438rjh3m6knj6gx63627fajch74hxrvclzj"))))
1734 (build-system cmake-build-system)
1736 `(("mbelib" ,mbelib)
1737 ("serialdv" ,serialdv)))
1739 `(#:tests? #f ; No test suite.
1741 (list "-DUSE_MBELIB=ON"
1742 (string-append "-DLIBMBE_INCLUDE_DIR="
1743 (assoc-ref %build-inputs "mbelib")
1745 (string-append "-DLIBMBE_LIBRARY="
1746 (assoc-ref %build-inputs "mbelib")
1748 (string-append "-DLIBSERIALDV_INCLUDE_DIR="
1749 (assoc-ref %build-inputs "serialdv")
1750 "/include/serialdv")
1751 (string-append "-DLIBSERIALDV_LIBRARY="
1752 (assoc-ref %build-inputs "serialdv")
1753 "/lib/libserialdv.so"))))
1754 (home-page "https://github.com/f4exb/dsdcc")
1755 (synopsis "Digital speech decoder")
1757 "This package provides a library and a program to decode several digital
1759 (license license:gpl3+)))
1761 (define-public sdrangel
1769 (url "https://github.com/f4exb/sdrangel")
1770 (commit (string-append "v" version))))
1771 (file-name (git-file-name name version))
1773 (base32 "0dpymjpg1x7yyrlhh8sdmf5l7il9ymx32zcpm78wwrw3df4q1w3m"))))
1774 (build-system qt-build-system)
1776 `(("doxygen" ,doxygen)
1777 ("graphviz" ,graphviz)
1778 ("pkg-config" ,pkg-config)))
1780 `(("airspyhf" ,airspyhf)
1781 ("alsa-lib" ,alsa-lib)
1784 ("cm256cc" ,cm256cc)
1796 ("pulseaudio" ,pulseaudio)
1798 ("qtcharts" ,qtcharts)
1799 ("qtdeclarative" ,qtdeclarative)
1800 ("qtlocation" ,qtlocation)
1801 ("qtmultimedia" ,qtmultimedia)
1802 ("qtserialport" ,qtserialport)
1803 ("qtspeech" ,qtspeech)
1804 ("qtwebsockets" ,qtwebsockets)
1805 ("rtl-sdr" ,rtl-sdr)
1806 ("serialdv" ,serialdv)
1810 `(#:tests? #f ; No test suite.
1812 (list (string-append "-DAPT_DIR="
1813 (assoc-ref %build-inputs "aptdec"))
1814 (string-append "-DDAB_DIR="
1815 (assoc-ref %build-inputs "libdab"))
1816 (string-append "-DDSDCC_DIR="
1817 (assoc-ref %build-inputs "dsdcc"))
1818 (string-append "-DMBE_DIR="
1819 (assoc-ref %build-inputs "mbelib"))
1820 (string-append "-DSERIALDV_DIR="
1821 (assoc-ref %build-inputs "serialdv"))
1822 (string-append "-DSGP4_DIR="
1823 (assoc-ref %build-inputs "sgp4")))))
1824 (home-page "https://github.com/f4exb/sdrangel/wiki")
1825 (synopsis "Software defined radio")
1827 "SDRangel is a Qt software defined radio and signal analyzer frontend for
1829 (license license:gpl3+)))
1831 (define-public inspectrum
1839 (url "https://github.com/miek/inspectrum")
1840 (commit (string-append "v" version))))
1841 (file-name (git-file-name name version))
1843 (base32 "1x6nyn429pk0f7lqzskrgsbq09mq5787xd4piic95add6n1cc355"))))
1844 (build-system qt-build-system)
1846 `(("pkg-config" ,pkg-config)))
1849 ("liquid-dsp" ,liquid-dsp)
1850 ("qtbase" ,qtbase)))
1851 (home-page "https://github.com/miek/inspectrum")
1852 (synopsis "Radio signal analyser")
1854 "Inspectrum is a tool for analysing captured signals, primarily from
1855 software-defined radio receivers.")
1856 (license license:gpl3+)))
1858 (define-public wfview
1859 ;; No tagged release, use commit directly.
1860 (let ((commit "274e905d214a7360e8cf2dd0421dbe3712a0ddcc")
1864 (version (git-version "20210511" revision commit))
1869 (url "https://gitlab.com/eliggett/wfview")
1871 (file-name (git-file-name name version))
1873 (base32 "1dmxn15xs63wx1y4mh1mlv8qc1xz32vgbyl3rk82gf6knw518svp"))))
1874 (build-system qt-build-system)
1876 `(("qcustomplot" ,qcustomplot)
1878 ("qtmultimedia" ,qtmultimedia)
1879 ("qtserialport" ,qtserialport)))
1881 `(#:tests? #f ; No test suite.
1883 (modify-phases %standard-phases
1884 (add-after 'unpack 'fix-paths
1885 (lambda* (#:key outputs #:allow-other-keys)
1886 (substitute* "wfview.pro"
1889 (substitute* '("wfmain.cpp")
1891 (string-append (assoc-ref outputs "out") "/share")))))
1896 (invoke "qmake" "../wfview.pro")))
1898 (lambda* (#:key outputs #:allow-other-keys)
1899 (let* ((out (assoc-ref outputs "out")))
1900 (install-file "wfview"
1901 (string-append out "/bin"))
1902 (install-file "wfview.png"
1903 (string-append out "/share/pixmaps"))
1904 (install-file "wfview.desktop"
1905 (string-append out "/share/applications"))
1906 (let ((dir (string-append
1907 out "/share/wfview/stylesheets/qdarkstyle")))
1909 (copy-recursively "qdarkstyle" dir))))))))
1910 (home-page "https://wfview.org/")
1911 (synopsis "Software to control Icom radios")
1913 "@code{wfview} is a program to control modern Icom radios and view the
1914 spectrum waterfall. It supports at least the following models:
1924 (license (list license:expat
1927 (define-public minimodem
1934 (uri (string-append "http://www.whence.com/minimodem/minimodem-"
1937 (base32 "13ipyh39l7p420j1j9kvwyskv2nqnimls1a3z1klsa1zivds9k7q"))))
1938 (build-system gnu-build-system)
1940 `(("pkg-config" ,pkg-config)))
1942 `(("alsa-lib" ,alsa-lib)
1944 ("libsndfile" ,libsndfile)
1945 ("pulseaudio" ,pulseaudio)))
1946 (home-page "http://www.whence.com/minimodem/")
1947 (synopsis "Software audio FSK modem")
1949 "Minimodem is a command-line program which decodes (or generates) audio
1950 modem tones at any specified baud rate, using various framing protocols. It
1951 acts a general-purpose software FSK modem, and includes support for various
1952 standard FSK protocols such as Bell103, Bell202, RTTY, TTY/TDD, NOAA SAME, and
1954 (license license:gpl3+)))