gnu: welle-io: Update to 2.3.
[jackhill/guix/guix.git] / gnu / packages / radio.scm
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>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
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.
17 ;;;
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.
22 ;;;
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/>.
25
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))
96
97 (define-public liquid-dsp
98 (package
99 (name "liquid-dsp")
100 (version "1.3.2")
101 (source
102 (origin (method git-fetch)
103 (uri (git-reference
104 (url "https://github.com/jgaeddert/liquid-dsp")
105 (commit (string-append "v" version))))
106 (file-name (git-file-name name version))
107 (sha256
108 (base32 "1n6dbg13q8ga5qhg1yiszwly4jj0rxqr6f1xwm9waaly5z493xsd"))))
109 (build-system gnu-build-system)
110 (native-inputs
111 `(("autoconf" ,autoconf)))
112 (inputs
113 `(("fftw" ,fftw)
114 ("fftwf" ,fftwf)))
115 (home-page "https://liquidsdr.org")
116 (synopsis "Signal processing library for software-defined radios")
117 (description
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)))
126
127 (define-public rtl-sdr
128 (package
129 (name "rtl-sdr")
130 (version "0.6.0")
131 (source
132 (origin
133 (method git-fetch)
134 (uri (git-reference
135 (url "https://git.osmocom.org/rtl-sdr/")
136 (commit version)))
137 (file-name (git-file-name name version))
138 (sha256
139 (base32
140 "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k"))))
141 (build-system cmake-build-system)
142 (inputs
143 `(("libusb" ,libusb)))
144 (native-inputs
145 `(("pkg-config" ,pkg-config)))
146 (arguments
147 `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
148 "-DINSTALL_UDEV_RULES=ON")
149 #:tests? #f ; No tests
150 #:phases
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")
158 "/lib/udev/")))
159 #t)))))
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.
165
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:
170
171 @lisp
172 (kernel-arguments '(\"modprobe.blacklist=dvb_usb_rtl28xxu\"))
173 @end lisp
174
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+)))
178
179 (define-public airspyhf
180 (package
181 (name "airspyhf")
182 (version "1.6.8")
183 (source
184 (origin
185 (method git-fetch)
186 (uri (git-reference
187 (url "https://github.com/airspy/airspyhf")
188 (commit version)))
189 (file-name (git-file-name name version))
190 (sha256
191 (base32 "0n699i5a9fzzhf80fcjlqq6p2a013rzlwmwv4nmwfafy6c8cr924"))))
192 (build-system cmake-build-system)
193 (native-inputs
194 `(("pkg-config" ,pkg-config)))
195 (inputs
196 `(("libusb" ,libusb)))
197 (arguments
198 '(#:configure-flags '("-DINSTALL_UDEV_RULES=ON")
199 #:tests? #f ; No tests
200 #:phases
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")
208 "/lib/udev/")))))
209 (add-after 'fix-paths 'fix-udev-rules
210 (lambda _
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+")
218 (description
219 "This package provides the driver and utilities for controlling the Airspy
220 HF+ Software Defined Radio (SDR) over USB.
221
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)))
225
226 (define-public chirp
227 (package
228 (name "chirp")
229 (version "20201121")
230 (source
231 (origin
232 (method url-fetch)
233 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
234 version "/chirp-daily-" version ".tar.gz"))
235 (sha256
236 (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
237 (build-system python-build-system)
238 (inputs
239 `(("python2-libxml2" ,python2-libxml2)
240 ("python2-pygtk" ,python2-pygtk)
241 ("python2-pyserial" ,python2-pyserial)))
242 (arguments
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
251
252 (define-public aptdec
253 ;; No release since 2013, use commit directly.
254 (let ((commit "5f91799637d93dfe7791caa7e9a6683050c4f8f3")
255 (revision "1"))
256 (package
257 (name "aptdec")
258 (version (git-version "1.7" revision commit))
259 (source
260 (origin
261 (method git-fetch)
262 (uri (git-reference
263 (url "https://github.com/Xerbo/aptdec")
264 (commit commit)))
265 (file-name (git-file-name name version))
266 (sha256
267 (base32 "0i7vkjjrq392gs9qaibr7j3v4hijqqg8458dn21dwh16ncrvr9bp"))))
268 (build-system cmake-build-system)
269 (inputs
270 `(("libpng" ,libpng)
271 ("libsndfile" ,libsndfile)))
272 (arguments
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+))))
282
283 (define-public redsea
284 (package
285 (name "redsea")
286 (version "0.18")
287 (source (origin
288 (method git-fetch)
289 (uri (git-reference
290 (url "https://github.com/windytan/redsea")
291 (commit (string-append "v" version))))
292 (file-name (git-file-name name version))
293 (sha256
294 (base32
295 "1y96g0ra2krjb2kypm8s5gdfia45yci4f36klsvyzg8d53v5cwhn"))))
296 (build-system gnu-build-system)
297 (arguments
298 `(#:phases
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
304 ;; linked against.
305 (add-after 'unpack 'patch-libiconv
306 (lambda _
307 (substitute* "configure.ac"
308 (("^ +AC_SUBST")
309 "# AC_SUBST")
310 (("esac")
311 "esac\nAC_SUBST([ICONV], [\"-liconv\"])"))
312 #t)))))
313 (inputs
314 `(("libiconv" ,libiconv)
315 ("libsndfile" ,libsndfile)
316 ("liquid-dsp" ,liquid-dsp)))
317 (native-inputs
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)))
328
329 (define-public gnuradio
330 (package
331 (name "gnuradio")
332 (version "3.9.0.0")
333 (source
334 (origin
335 (method url-fetch)
336 (uri (string-append "https://www.gnuradio.org/releases/gnuradio/"
337 "gnuradio-" version ".tar.xz"))
338 (sha256
339 (base32 "1jvm9xd0l2pz1fww4zii6hl7ccnvy256nrf70ljb594n7j9j49ha"))))
340 (build-system cmake-build-system)
341 (native-inputs
342 `(("doxygen" ,doxygen)
343 ("ghostscript" ,ghostscript)
344 ("js-mathjax" ,js-mathjax)
345 ("orc" ,orc)
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)))
358 (inputs
359 `(("alsa-lib" ,alsa-lib)
360 ("boost" ,boost)
361 ("cairo" ,cairo)
362 ("codec2" ,codec2)
363 ("cppzmq" ,cppzmq)
364 ("fftwf" ,fftwf)
365 ("gmp" ,gmp)
366 ("gsl" ,gsl)
367 ("gsm" ,gsm)
368 ("gtk+" ,gtk+)
369 ("jack" ,jack-1)
370 ("libsndfile" ,libsndfile)
371 ("log4cpp" ,log4cpp)
372 ("pango" ,pango)
373 ("portaudio" ,portaudio)
374 ("python" ,python)
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)
384 ("qtbase" ,qtbase)
385 ("qwt" ,qwt)
386 ("sdl" ,sdl)
387 ("volk" ,volk)
388 ("zeromq" ,zeromq)))
389 (arguments
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:)
393 (guix build utils)
394 (ice-9 match))
395 #:imported-modules (,@%cmake-build-system-modules
396 (guix build glib-or-gtk-build-system)
397 (guix build python-build-system))
398 #:configure-flags
399 (list (string-append "-DMATHJAX2_ROOT="
400 (assoc-ref %build-inputs "js-mathjax")
401 "/share/javascript/mathjax"))
402 #:phases
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"
408 (("/usr/include")
409 (string-append qwt "/include"))
410 (("/usr/lib")
411 (string-append qwt "/lib"))
412 (("qwt6-\\$\\{QWT_QT_VERSION\\}")
413 "qwt")))
414 (substitute* "cmake/Modules/GrPython.cmake"
415 (("dist-packages")
416 "site-packages"))
417 (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
418 "gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
419 (("<codec2/")
420 "<"))
421 #t))
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")
426 "/bin/Xvfb :1 &"))
427 (setenv "DISPLAY" ":1")
428 #t))
429 (replace 'check
430 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
431 (invoke "ctest" "-j" (if parallel-tests?
432 (number->string (parallel-job-count))
433 "1")
434 "--output-on-failure"
435 ;;disable broken tests
436 "-E" (string-join
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")
441 "|"))))
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
452 directory
453 "/lib/girepository-1.0")))
454 (if (file-exists? girepodir)
455 girepodir
456 #f))))
457 inputs)))
458 (wrap-program (string-append out "/bin/gnuradio-companion")
459 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
460 #t)))))
461 (native-search-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"
469 (version-major+minor
470 (package-version python))
471 "/site-packages"))))))
472 (synopsis "Toolkit for software-defined radios")
473 (description
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
477 environment.")
478 (home-page "https://www.gnuradio.org")
479 (license license:gpl3+)))
480
481 (define-public gr-osmosdr
482 ;; No tag for version supporting Gnuradio 3.9; use commit.
483 (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
484 (revision "0"))
485 (package
486 (name "gr-osmosdr")
487 (version (git-version "0.2.3" revision commit))
488 (source
489 (origin
490 (method git-fetch)
491 (uri (git-reference
492 (url "https://git.osmocom.org/gr-osmosdr")
493 (commit commit)))
494 (file-name (git-file-name name version))
495 (sha256
496 (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
497 (build-system cmake-build-system)
498 (native-inputs
499 `(("doxygen" ,doxygen)
500 ("pkg-config" ,pkg-config)
501 ("pybind11" ,pybind11)
502 ("python-mako" ,python-mako)
503 ("python-six" ,python-six)))
504 (inputs
505 `(("airspyhf" ,airspyhf)
506 ("boost" ,boost)
507 ("fftwf" ,fftwf)
508 ("gmp" ,gmp)
509 ("gnuradio" ,gnuradio)
510 ("hackrf" ,hackrf)
511 ("libsndfile" ,libsndfile)
512 ("log4cpp" ,log4cpp)
513 ("python" ,python)
514 ("python-numpy" ,python-numpy)
515 ("python-pyqt" ,python-pyqt)
516 ("rtl-sdr" ,rtl-sdr)
517 ("volk" ,volk)))
518 (arguments
519 `(#:modules ((guix build cmake-build-system)
520 ((guix build python-build-system) #:prefix python:)
521 (guix build utils))
522 #:imported-modules (,@%cmake-build-system-modules
523 (guix build python-build-system))
524 #:phases
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)
534
535 (define-public libosmo-dsp
536 (package
537 (name "libosmo-dsp")
538 (version "0.4.0")
539 (source
540 (origin
541 (method git-fetch)
542 (uri (git-reference
543 (url "https://git.osmocom.org/libosmo-dsp")
544 (commit version)))
545 (file-name (git-file-name name version))
546 (sha256
547 (base32 "00plihnpym1gkfpflah8il9463qxzm9kx2f07jyvbkszpj8viq5g"))))
548 (build-system gnu-build-system)
549 (native-inputs
550 `(("autoconf" ,autoconf)
551 ("automake" ,automake)
552 ("bash-minimal" ,bash-minimal)
553 ("doxygen" ,doxygen)
554 ("libtool" ,libtool)
555 ("pkg-config" ,pkg-config)
556 ("texlive" ,(texlive-union (list texlive-amsfonts
557 texlive-latex-amsmath
558 ;; TODO: Add newunicodechar.
559 texlive-latex-graphics)))))
560 (inputs
561 `(("fftwf" ,fftwf)))
562 (arguments
563 `(#:phases
564 (modify-phases %standard-phases
565 (add-after 'unpack 'fix-paths
566 (lambda* (#:key inputs #:allow-other-keys)
567 (substitute* "git-version-gen"
568 (("/bin/sh")
569 (string-append (assoc-ref inputs "bash")
570 "/bin/bash")))
571 #t)))))
572 (synopsis "DSP primitives for SDR")
573 (description
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+)))
578
579 (define-public gr-iqbal
580 ;; No tag for version supporting Gnuradio 3.9; use commit.
581 (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
582 (revision "0"))
583 (package
584 (name "gr-iqbal")
585 (version (git-version "0.38.2" revision commit))
586 (source
587 (origin
588 (method git-fetch)
589 (uri (git-reference
590 (url "https://git.osmocom.org/gr-iqbal")
591 (commit commit)))
592 (file-name (git-file-name name version))
593 (sha256
594 (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
595 (build-system cmake-build-system)
596 (native-inputs
597 `(("doxygen" ,doxygen)
598 ("pkg-config" ,pkg-config)
599 ("pybind11" ,pybind11)
600 ("python" ,python)
601 ("python-numpy" ,python-numpy)
602 ("python-six" ,python-six)))
603 (inputs
604 `(("boost" ,boost)
605 ("fftwf" ,fftwf)
606 ("gmp" ,gmp)
607 ("gnuradio" ,gnuradio)
608 ("libosmo-dsp" ,libosmo-dsp)
609 ("log4cpp" ,log4cpp)
610 ("volk" ,volk)))
611 (synopsis "GNU Radio block to correct IQ imbalance")
612 (description
613 "This is a GNU Radio block to correct IQ imbalance in quadrature
614 receivers. It's composed of two main block:
615 @itemize
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.
619 @end itemize")
620 (home-page "https://git.osmocom.org/gr-iqbal/")
621 (license license:gpl3+))))
622 (deprecated-package "gnuradio-iqbalance" gr-iqbal)
623
624 (define-public gqrx
625 (package
626 (name "gqrx")
627 (version "2.14.4")
628 (source
629 (origin
630 (method git-fetch)
631 (uri (git-reference
632 (url "https://github.com/csete/gqrx")
633 (commit (string-append "v" version))))
634 (file-name (git-file-name name version))
635 (sha256
636 (base32 "0m4ncydihz4n4i80c252vk3c5v672yab1jv85n6ndn7a92xv3ilq"))))
637 (build-system qt-build-system)
638 (native-inputs
639 `(("pkg-config" ,pkg-config)))
640 (inputs
641 `(("alsa-lib" ,alsa-lib)
642 ("boost" ,boost)
643 ("fftwf" ,fftwf)
644 ("gmp" ,gmp)
645 ("gnuradio" ,gnuradio)
646 ("gr-iqbal" ,gr-iqbal)
647 ("gr-osmosdr" ,gr-osmosdr)
648 ("jack" ,jack-1)
649 ("libsndfile" ,libsndfile)
650 ("log4cpp" ,log4cpp)
651 ("portaudio" ,portaudio)
652 ("pulseaudio" ,pulseaudio)
653 ("qtbase" ,qtbase)
654 ("qtsvg" ,qtsvg)
655 ("volk" ,volk)))
656 (arguments
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+)))
663
664 (define-public fldigi
665 (package
666 (name "fldigi")
667 (version "4.1.18")
668 (source
669 (origin
670 (method git-fetch)
671 (uri (git-reference
672 (url "https://git.code.sf.net/p/fldigi/fldigi")
673 (commit (string-append "v" version))))
674 (file-name (git-file-name name version))
675 (sha256
676 (base32 "177qnl1bxy46rqwdxizfy2i3mxk5bzz733cp445rfzl7b6yf6zrn"))))
677 (build-system gnu-build-system)
678 (native-inputs
679 `(("autoconf" ,autoconf)
680 ("automake" ,automake)
681 ("gettext" ,gettext-minimal)
682 ("pkg-config" ,pkg-config)))
683 (inputs
684 `(("alsa-lib" ,alsa-lib)
685 ("fltk" ,fltk)
686 ("hamlib" ,hamlib)
687 ("libpng" ,libpng)
688 ("libsamplerate" ,libsamplerate)
689 ("libusb" ,libusb)
690 ("libx11" ,libx11)
691 ("libxext" ,libxext)
692 ("libxfixes" ,libxfixes)
693 ("libxft" ,libxft)
694 ("portaudio" ,portaudio)
695 ("pulseaudio" ,pulseaudio)))
696 (synopsis "Software modem for amateur radio use")
697 (description
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
701 hardware.")
702 (home-page "http://www.w1hkj.com/")
703 (license license:gpl3+)))
704
705 (define-public flrig
706 (package
707 (name "flrig")
708 (version "1.3.52")
709 (source
710 (origin
711 (method git-fetch)
712 (uri (git-reference
713 (url "https://git.code.sf.net/p/fldigi/flrig")
714 (commit (string-append "v" version))))
715 (file-name (git-file-name name version))
716 (sha256
717 (base32 "0vxn1wy5b2zfq20k93rfgq34m1nd3mxd74h8l98f90d85fhcqggy"))))
718 (build-system gnu-build-system)
719 (native-inputs
720 `(("autoconf" ,autoconf)
721 ("automake" ,automake)
722 ("pkg-config" ,pkg-config)))
723 (inputs
724 `(("fltk" ,fltk)
725 ("libx11" ,libx11)
726 ("libxext" ,libxext)
727 ("libxfixes" ,libxfixes)
728 ("libxft" ,libxft)))
729 (synopsis "Radio transceiver control program")
730 (description
731 "Flrig is a transceiver control program for amateur radio use.
732 It provides computer aided control of various radios using a serial
733 or USB connection.")
734 (home-page "http://www.w1hkj.com/")
735 (license license:gpl3+)))
736
737 (define-public flamp
738 (package
739 (name "flamp")
740 (version "2.2.05")
741 (source
742 (origin
743 (method git-fetch)
744 (uri (git-reference
745 (url "https://git.code.sf.net/p/fldigi/flamp")
746 (commit (string-append "v" version))))
747 (file-name (git-file-name name version))
748 (sha256
749 (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq"))))
750 (build-system gnu-build-system)
751 (native-inputs
752 `(("autoconf" ,autoconf)
753 ("automake" ,automake)
754 ("pkg-config" ,pkg-config)))
755 (inputs
756 `(("fltk" ,fltk)
757 ("libx11" ,libx11)
758 ("libxext" ,libxext)
759 ("libxfixes" ,libxfixes)
760 ("libxft" ,libxft)))
761 (synopsis "Tool for AMP file transfer")
762 (description
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+)))
767
768 (define-public flwrap
769 (package
770 (name "flwrap")
771 (version "1.3.5")
772 (source
773 (origin
774 (method git-fetch)
775 (uri (git-reference
776 (url "https://git.code.sf.net/p/fldigi/flwrap")
777 (commit (string-append "v" version))))
778 (file-name (git-file-name name version))
779 (sha256
780 (base32 "0xkhr82smfr7wpb9xl05wf7bz3vi2mr4xkcr2s8v6mblhgsdhqwg"))))
781 (build-system gnu-build-system)
782 (native-inputs
783 `(("autoconf" ,autoconf)
784 ("automake" ,automake)
785 ("pkg-config" ,pkg-config)))
786 (inputs
787 `(("fltk" ,fltk)
788 ("libx11" ,libx11)
789 ("libxext" ,libxext)
790 ("libxfixes" ,libxfixes)
791 ("libxft" ,libxft)))
792 (synopsis "File encapsulation program")
793 (description
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
797 for correctness.")
798 (home-page "http://www.w1hkj.com/")
799 (license license:gpl3+)))
800
801 (define-public hackrf
802 (package
803 (name "hackrf")
804 (version "2021.03.1")
805 (source
806 (origin
807 (method git-fetch)
808 (uri (git-reference
809 (url "https://github.com/mossmann/hackrf")
810 (commit (string-append "v" version))))
811 (file-name (git-file-name name version))
812 (sha256
813 (base32 "12fkgimjy5ia291c1rn4y59pn9r5wdvz5x9z5xc8zr1xr96iyhfs"))))
814 (build-system cmake-build-system)
815 (arguments
816 '(#:configure-flags
817 (list "-DUDEV_RULES_GROUP=dialout"
818 (string-append "-DUDEV_RULES_PATH="
819 (assoc-ref %outputs "out")
820 "/lib/udev/rules.d"))
821 #:phases
822 (modify-phases %standard-phases
823 (add-before 'configure 'enter-source-directory
824 (lambda _
825 (chdir "host")
826 #t))
827 (add-after 'install 'delete-static-library
828 (lambda* (#:key outputs #:allow-other-keys)
829 (delete-file (string-append (assoc-ref outputs "out")
830 "/lib/libhackrf.a"))
831 #t))
832 (add-before 'install-license-files 'leave-source-directory
833 (lambda _
834 (chdir "..")
835 #t)))
836 #:tests? #f)) ; no test suite
837 (native-inputs
838 `(("pkg-config" ,pkg-config)))
839 (inputs
840 `(("fftw" ,fftw)
841 ("fftwf" ,fftwf)
842 ("libusb" ,libusb)))
843 (home-page "https://greatscottgadgets.com/hackrf/")
844 (synopsis "User-space library and utilities for HackRF SDR")
845 (description
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)))
852
853 (define-public hamlib
854 (package
855 (name "hamlib")
856 (version "4.1")
857 (source
858 (origin
859 (method url-fetch)
860 (uri (string-append
861 "https://github.com/Hamlib/Hamlib/releases/download/"
862 version "/hamlib-" version ".tar.gz"))
863 (sha256
864 (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
865 (build-system gnu-build-system)
866 (native-inputs
867 `(("doxygen" ,doxygen)
868 ("lua" ,lua)
869 ("pkg-config" ,pkg-config)
870 ("python-wrapper" ,python-wrapper)
871 ("swig" ,swig)
872 ("tcl" ,tcl)))
873 (inputs
874 `(("gd" ,gd)
875 ("libusb" ,libusb)
876 ("libxml2" ,libxml2)
877 ("readline" ,readline)))
878 (arguments
879 `(#:configure-flags '("--disable-static"
880 "--with-lua-binding"
881 "--with-python-binding"
882 "--with-tcl-binding"
883 "--with-xml-support")))
884 (synopsis "Tools and API to control radios")
885 (description
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
889 users.")
890 (home-page "https://hamlib.github.io/")
891 (license (list license:gpl2+ license:lgpl2.1+))))
892
893 (define wsjtx-hamlib
894 ;; Fork of hamlib with custom patches used by wsjtx.
895 (package
896 (inherit hamlib)
897 (name "wsjtx-hamlib")
898 (version "2.3.1")
899 (source
900 (origin
901 (method git-fetch)
902 (uri (git-reference
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))
906 (sha256
907 (base32 "0m4yzjcqs7a1w4lghyyckpkiy96jxdjijddxarqr3a37cl2rz23j"))))
908 (native-inputs
909 `(("autoconf" ,autoconf)
910 ("automake" ,automake)
911 ("libtool" ,libtool)
912 ("texinfo" ,texinfo)
913 ,@(package-native-inputs hamlib)))
914 (arguments
915 `(#:configure-flags '("--disable-static"
916 "--with-lua-binding"
917 "--with-python-binding"
918 "--with-tcl-binding"
919 "--with-xml-support")))))
920
921 (define-public wsjtx
922 (package
923 (name "wsjtx")
924 (version "2.3.1")
925 (source
926 (origin
927 (method git-fetch)
928 (uri (git-reference
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))
932 (sha256
933 (base32 "0mdr4l7zii08615yn7z91spnvnqm5i9390bra9lz3aqyxrsiim91"))))
934 (build-system qt-build-system)
935 (native-inputs
936 `(("asciidoc" ,asciidoc)
937 ("gfortran" ,gfortran)
938 ("pkg-config" ,pkg-config)
939 ("qttools" ,qttools)
940 ("ruby-asciidoctor" ,ruby-asciidoctor)))
941 (inputs
942 `(("boost" ,boost)
943 ("fftw" ,fftw)
944 ("fftwf" ,fftwf)
945 ("hamlib" ,wsjtx-hamlib)
946 ("libusb" ,libusb)
947 ("qtbase" ,qtbase)
948 ("qtmultimedia" ,qtmultimedia)
949 ("qtserialport" ,qtserialport)))
950 (arguments
951 `(#:tests? #f ; No test suite
952 #:phases
953 (modify-phases %standard-phases
954 (add-after 'unpack 'work-around-runtime-bug
955 (lambda _
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
960 ;; are built.
961 (substitute* "CMakeLists.txt"
962 (("target_link_libraries \\((.*)\\)" all libs)
963 (string-append "target_link_libraries (" libs " m)")))
964 #t)))))
965 (synopsis "Weak-signal ham radio communication program")
966 (description
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)))
974
975 (define-public js8call
976 (package
977 (inherit wsjtx)
978 (name "js8call")
979 (version "2.2.0")
980 (source
981 (origin
982 (method url-fetch)
983 (uri (string-append "http://files.js8call.com/" version
984 "/js8call-" version ".tgz"))
985 (sha256
986 (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
987 (modules '((guix build utils)))
988 (snippet
989 '(begin
990 ;; Delete bundled boost to use the shared one.
991 (delete-file-recursively "boost")
992 #t))))
993 (build-system qt-build-system)
994 (native-inputs
995 `(("asciidoc" ,asciidoc)
996 ("gfortran" ,gfortran)
997 ("pkg-config" ,pkg-config)
998 ("qttools" ,qttools)
999 ("ruby-asciidoctor" ,ruby-asciidoctor)))
1000 (inputs
1001 `(("boost" ,boost)
1002 ("fftw" ,fftw)
1003 ("fftwf" ,fftwf)
1004 ("hamlib" ,wsjtx-hamlib)
1005 ("libusb" ,libusb)
1006 ("qtbase" ,qtbase)
1007 ("qtmultimedia" ,qtmultimedia)
1008 ("qtserialport" ,qtserialport)))
1009 (arguments
1010 `(#:tests? #f ; No test suite
1011 #:phases
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")
1019 "/share")))
1020 #t))
1021 (add-after 'fix-paths 'work-around-runtime-bug
1022 (lambda _
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
1027 ;; are built.
1028 (substitute* "CMakeLists.txt"
1029 (("target_link_libraries \\((.*)\\)" all libs)
1030 (string-append "target_link_libraries (" libs " m)")))
1031 #t))
1032 (add-after 'unpack 'fix-hamlib
1033 (lambda _
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")
1041 "#if 1"))
1042 #t)))))
1043 (synopsis "Weak-signal ham radio communication program")
1044 (description
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
1047 operators.")
1048 (home-page "http://js8call.com/")
1049 (license license:gpl3)))
1050
1051 (define-public xnec2c
1052 (package
1053 (name "xnec2c")
1054 (version "4.1.1")
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (string-append "http://www.5b4az.org/pkg/nec2/xnec2c/xnec2c-"
1059 version ".tar.bz2"))
1060 (sha256
1061 (base32 "1myvlkfybb2ha8l0h96ca3iz206zzy9z5iizm0sbab2zzp78n1r9"))))
1062 (build-system gnu-build-system)
1063 (native-inputs
1064 `(("pkg-config" ,pkg-config)))
1065 (inputs
1066 `(("gtk+" ,gtk+)))
1067 (arguments
1068 `(#:phases
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")))
1077 #t))
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")
1087 (("\"/usr")
1088 (string-append "\"" (assoc-ref outputs "out"))))
1089 #t)))))
1090 (synopsis "Antenna modeling software")
1091 (description
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+)))
1099
1100 (define-public dump1090
1101 (package
1102 (name "dump1090")
1103 (version "4.0")
1104 (source
1105 (origin
1106 (method git-fetch)
1107 (uri (git-reference
1108 (url "https://github.com/flightaware/dump1090")
1109 (commit (string-append "v" version))))
1110 (file-name (git-file-name name version))
1111 (sha256
1112 (base32 "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"))))
1113 (build-system gnu-build-system)
1114 (native-inputs
1115 `(("pkg-config" ,pkg-config)))
1116 (inputs
1117 `(("libusb" ,libusb)
1118 ("ncurses" ,ncurses)
1119 ("rtl-sdr" ,rtl-sdr)))
1120 (arguments
1121 `(#:test-target "test"
1122 #:make-flags
1123 (list (string-append "CC=" ,(cc-for-target))
1124 "BLADERF=no")
1125 #:phases
1126 (modify-phases %standard-phases
1127 (delete 'configure)
1128 (replace 'install
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)
1133 #t))))))
1134 (synopsis "Mode S decoder for rtl-sdr devices")
1135 (description
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+)))
1141
1142 (define-public rtl-433
1143 (package
1144 (name "rtl-433")
1145 (version "21.05")
1146 (source
1147 (origin
1148 (method git-fetch)
1149 (uri (git-reference
1150 (url "https://github.com/merbanan/rtl_433")
1151 (commit version)))
1152 (file-name (git-file-name name version))
1153 (sha256
1154 (base32 "1f60nvahsplv1yszacc49mlbcnacgs1nwhdf8y9srmzg08xrfnfk"))))
1155 (build-system cmake-build-system)
1156 (native-inputs
1157 `(("pkg-config" ,pkg-config)))
1158 (inputs
1159 `(("libusb" ,libusb)
1160 ("openssl" ,openssl)
1161 ("rtl-sdr" ,rtl-sdr)))
1162 (synopsis "Decoder for radio transmissions in ISM bands")
1163 (description
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+)))
1168
1169 (define-public multimon-ng
1170 (package
1171 (name "multimon-ng")
1172 (version "1.1.9")
1173 (source
1174 (origin
1175 (method git-fetch)
1176 (uri (git-reference
1177 (url "https://github.com/EliasOenal/multimon-ng")
1178 (commit version)))
1179 (file-name (git-file-name name version))
1180 (sha256
1181 (base32 "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"))))
1182 (build-system cmake-build-system)
1183 (inputs
1184 `(("libx11" ,libx11)
1185 ("pulseaudio" ,pulseaudio)))
1186 (arguments
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
1191 modes:
1192 @itemize
1193 @item POCSAG512, POCSAG1200, POCSAG2400
1194 @item FLEX
1195 @item EAS
1196 @item UFSK1200, CLIPFSK, AFSK1200, AFSK2400, AFSK2400_2, AFSK2400_3
1197 @item HAPN4800
1198 @item FSK9600
1199 @item DTMF
1200 @item ZVEI1, ZVEI2, ZVEI3, DZVEI, PZVEI
1201 @item EEA, EIA, CCIR
1202 @item MORSE CW
1203 @item X10
1204 @end itemize")
1205 (license license:gpl2+)))
1206
1207 (define-public nanovna-saver
1208 (package
1209 (name "nanovna-saver")
1210 (version "0.3.8")
1211 (source
1212 (origin
1213 (method git-fetch)
1214 (uri (git-reference
1215 (url "https://github.com/NanoVNA-Saver/nanovna-saver")
1216 (commit (string-append "v" version))))
1217 (file-name (git-file-name name version))
1218 (sha256
1219 (base32 "0z83rwpnbbs1n74mx8dgh1d1crp90mannj9vfy161dmy4wzc5kpv"))))
1220 (build-system python-build-system)
1221 (native-inputs
1222 `(("python-cython" ,python-cython)))
1223 (inputs
1224 `(("python-numpy" ,python-numpy)
1225 ("python-pyqt" ,python-pyqt)
1226 ("python-pyserial" ,python-pyserial)
1227 ("python-scipy" ,python-scipy)))
1228 (arguments
1229 '(#:tests? #f))
1230 (home-page "https://github.com/NanoVNA-Saver/nanovna-saver")
1231 (synopsis "GUI for NanoVNA devices")
1232 (description
1233 "NanoVNA-Saver is a tool for reading, displaying and saving data from the
1234 NanoVNA vector network analyzers.")
1235 (license license:gpl3+)))
1236
1237 (define-public qsstv
1238 (package
1239 (name "qsstv")
1240 (version "9.4.4")
1241 (source
1242 (origin
1243 (method url-fetch)
1244 (uri (string-append "http://users.telenet.be/on4qz/qsstv/downloads/"
1245 "qsstv_" version ".tar.gz"))
1246 (sha256
1247 (base32 "0f9hx6sy418cb23fadll298pqbc5l2lxsdivi4vgqbkvx7sw58zi"))))
1248 (build-system qt-build-system)
1249 (native-inputs
1250 `(("pkg-config" ,pkg-config)))
1251 (inputs
1252 `(("alsa-lib" ,alsa-lib)
1253 ("fftw" ,fftw)
1254 ("fftwf" ,fftwf)
1255 ("hamlib" ,hamlib)
1256 ("openjpeg" ,openjpeg)
1257 ("pulseaudio" ,pulseaudio)
1258 ("qtbase" ,qtbase)
1259 ("v4l-utils" ,v4l-utils)))
1260 (arguments
1261 `(#:tests? #f ; No test suite.
1262 #:phases
1263 (modify-phases %standard-phases
1264 (replace 'configure
1265 (lambda* (#:key outputs #:allow-other-keys)
1266 (invoke "qmake"
1267 (string-append "PREFIX=" (assoc-ref outputs "out")))
1268 #t)))))
1269 (home-page "http://users.telenet.be/on4qz/qsstv/")
1270 (synopsis "Program for receiving and transmitting SSTV and HAMDRM")
1271 (description
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+
1275 license:qwt1.0))))
1276
1277 (define-public direwolf
1278 (package
1279 (name "direwolf")
1280 (version "1.6")
1281 (source
1282 (origin
1283 (method git-fetch)
1284 (uri (git-reference
1285 (url "https://github.com/wb2osz/direwolf")
1286 (commit version)))
1287 (file-name (git-file-name name version))
1288 (sha256
1289 (base32 "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"))))
1290 (build-system cmake-build-system)
1291 (inputs
1292 `(("alsa-lib" ,alsa-lib)
1293 ("hamlib" ,hamlib)))
1294 (arguments
1295 `(#:phases
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")
1303 "/etc"))))))))
1304 (home-page "https://github.com/wb2osz/direwolf")
1305 (synopsis "TNC for Amateur Packet Radio")
1306 (description
1307 "Dire Wolf is a Terminal Node Controller (TNC) for Amateur Packet Radio.
1308 It can perform as:
1309 @itemize
1310 @item APRS GPS tracker,
1311 @item Digipeater,
1312 @item Internet gateway (IGate)
1313 @item APRStt gateway
1314 @end itemize\n")
1315 (license license:gpl2+)))
1316
1317 (define-public aldo
1318 (package
1319 (name "aldo")
1320 (version "0.7.7")
1321 (source
1322 (origin
1323 (method url-fetch)
1324 (uri (string-append "mirror://savannah/aldo/aldo-" version ".tar.bz2"))
1325 (sha256
1326 (base32 "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i"))))
1327 (build-system gnu-build-system)
1328 (inputs
1329 `(("ao" ,ao)))
1330 (home-page "https://www.nongnu.org/aldo/")
1331 (synopsis "Morse code tutor")
1332 (description
1333 "Aldo is a morse code learning tool providing four type of training
1334 methods:
1335
1336 @itemize
1337 @item Classic exercice,
1338 @item Koch method,
1339 @item Read from file,
1340 @item Callsign exercice.
1341 @end itemize\n")
1342 (license license:gpl3+)))
1343
1344 (define-public unixcw
1345 (package
1346 (name "unixcw")
1347 (version "3.6.0")
1348 (source
1349 (origin
1350 (method url-fetch)
1351 (uri (string-append "mirror://sourceforge/unixcw/unixcw-"
1352 version ".tar.gz"))
1353 (sha256
1354 (base32 "15wriwv91583kmmyijbzam3dpclzmg4qjyfzjv5f75x9b0gqabxm"))))
1355 (build-system gnu-build-system)
1356 (native-inputs
1357 `(("pkg-config" ,pkg-config)))
1358 (inputs
1359 `(("alsa-lib" ,alsa-lib)
1360 ("ncurses" ,ncurses)
1361 ("pulseaudio" ,pulseaudio)
1362 ("qtbase" ,qtbase)))
1363 (arguments
1364 `(#:configure-flags '("--disable-static")
1365 #:phases
1366 (modify-phases %standard-phases
1367 (add-after 'unpack 'fix-paths
1368 (lambda* (#:key inputs #:allow-other-keys)
1369 (substitute* '("configure"
1370 "src/config.h.in"
1371 "src/cwcp/Makefile.am"
1372 "src/cwcp/Makefile.in")
1373 (("-lcurses")
1374 "-lncurses"))
1375 (substitute* "src/libcw/libcw_pa.c"
1376 (("libpulse-simple.so" all)
1377 (string-append (assoc-ref inputs "pulseaudio")
1378 "/lib/" all))))))))
1379 (home-page "http://unixcw.sourceforge.net/")
1380 (synopsis "Morse code library and programs")
1381 (description
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+)))
1386
1387 (define-public gnuais
1388 (package
1389 (name "gnuais")
1390 (version "0.3.3")
1391 (source
1392 (origin
1393 (method git-fetch)
1394 (uri (git-reference
1395 (url "https://github.com/rubund/gnuais")
1396 (commit version)))
1397 (file-name (git-file-name name version))
1398 (sha256
1399 (base32 "1rik5fdfslszdn3yvj769jzmnv9pirzf76ki33bjjzk7nkabbnlm"))))
1400 (build-system cmake-build-system)
1401 (native-inputs
1402 `(("mariadb-dev" ,mariadb "dev")
1403 ("pkg-config" ,pkg-config)))
1404 (inputs
1405 `(("alsa-lib" ,alsa-lib)
1406 ("curl" ,curl)
1407 ("gtk+" ,gtk+)
1408 ("libsoup" ,libsoup-minimal)
1409 ("mariadb-lib" ,mariadb "lib")
1410 ("osm-gps-map" ,osm-gps-map)
1411 ("pulseaudio" ,pulseaudio)))
1412 (arguments
1413 `(#:tests? #f ; No test suite
1414 #:phases
1415 (modify-phases %standard-phases
1416 (add-after 'unpack 'fix-paths
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (substitute* "src/cfgfile.c"
1419 (("/usr/share/")
1420 (string-append (assoc-ref outputs "out") "/share/"))))))))
1421 (home-page "http://gnuais.sourceforge.net/")
1422 (synopsis "AIS message demodulator and decoder")
1423 (description
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+)))
1427
1428 (define-public kappanhang
1429 (package
1430 (name "kappanhang")
1431 (version "1.3")
1432 (source
1433 (origin
1434 (method git-fetch)
1435 (uri (git-reference
1436 (url "https://github.com/nonoo/kappanhang")
1437 (commit (string-append "v" version))))
1438 (file-name (git-file-name name version))
1439 (sha256
1440 (base32 "1ycy8avq5s7zspfi0d9klqcwwkpmcaz742cigd7pmcnbbhspcicp"))))
1441 (build-system go-build-system)
1442 (arguments
1443 '(#:import-path "github.com/nonoo/kappanhang"
1444 #:install-source? #f))
1445 (inputs
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")
1457 (description
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.
1461
1462 Compatible hardware/software:
1463 @itemize
1464 @item Icom RS-BA1 server software,
1465 @item Icom IC-705
1466 @item Icom IC-9700
1467 @end itemize\n")
1468 (license license:expat)))
1469
1470 (define-public dream
1471 (package
1472 (name "dream")
1473 (version "2.1.1")
1474 (source
1475 (origin
1476 (method url-fetch)
1477 (uri (string-append "mirror://sourceforge/drm/dream/" version
1478 "/dream-" version "-svn808.tar.gz"))
1479 (sha256
1480 (base32 "01dv6gvljz64zrjbr08mybr9aicvpq2c6qskww46lngdjyhk8xs1"))))
1481 (build-system qt-build-system)
1482 (native-inputs
1483 `(("pkg-config" ,pkg-config)))
1484 (inputs
1485 `(("faad2" ,faad2)
1486 ("fftw" ,fftw)
1487 ("libsndfile" ,libsndfile)
1488 ("libpcap" ,libpcap)
1489 ("opus" ,opus)
1490 ("pulseaudio" ,pulseaudio)
1491 ("qtbase" ,qtbase)
1492 ("qtsvg" ,qtsvg)
1493 ("qtwebkit" ,qtwebkit)
1494 ("qwt" ,qwt)
1495 ("speexdsp" ,speexdsp)
1496 ("zlib" ,zlib)))
1497 (arguments
1498 `(#:tests? #f
1499 #:phases
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")
1510 "/share/man/man1"))
1511 (("/usr/include/pulse/")
1512 (string-append (assoc-ref inputs "pulseaudio")
1513 "/include/pulse/"))
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")
1519 "/include/opus/"))
1520 (("/usr/include/speex/")
1521 (string-append (assoc-ref inputs "speexdsp")
1522 "/include/speex/"))
1523 (("/usr/include/qwt/")
1524 (string-append (assoc-ref inputs "qwt")
1525 "/include/qwt/"))
1526 (("\\$\\$OUT_PWD/include/neaacdec\\.h")
1527 (string-append (assoc-ref inputs "faad2")
1528 "/include/neaacdec.h")))))
1529 (replace 'configure
1530 (lambda _
1531 (invoke "qmake"))))))
1532 (home-page "https://sourceforge.net/projects/drm/")
1533 (synopsis "Digital Radio Mondiale receiver")
1534 (description
1535 "Dream is a software implementation of a Digital Radio Mondiale (DRM)
1536 receiver.")
1537 (license license:gpl2+)))
1538
1539 (define-public welle-io
1540 (package
1541 (name "welle-io")
1542 (version "2.3")
1543 (source
1544 (origin
1545 (method git-fetch)
1546 (uri (git-reference
1547 (url "https://github.com/albrechtl/welle.io")
1548 (commit (string-append "v" version))))
1549 (file-name (git-file-name name version))
1550 (sha256
1551 (base32 "1xl1lanw0xgmgks67dbfb2h52jxnrd1i2zik56v0q8dwsr7f0daw"))))
1552 (build-system qt-build-system)
1553 (native-inputs
1554 `(("pkg-config" ,pkg-config)))
1555 (inputs
1556 `(("alsa-lib" ,alsa-lib)
1557 ("faad2" ,faad2)
1558 ("fftwf" ,fftwf)
1559 ("lame" ,lame)
1560 ("libusb" ,libusb)
1561 ("mpg123" ,mpg123)
1562 ("rtl-sdr" ,rtl-sdr)
1563 ("qtbase" ,qtbase)
1564 ("qtcharts" ,qtcharts)
1565 ("qtdeclarative" ,qtdeclarative)
1566 ("qtgraphicaleffects" ,qtgraphicaleffects)
1567 ("qtmultimedia" ,qtmultimedia)
1568 ("qtquickcontrols2" ,qtquickcontrols2)))
1569 (arguments
1570 `(#:configure-flags '("-DRTLSDR=ON")
1571 #:tests? #f))
1572 (home-page "https://www.welle.io/")
1573 (synopsis "DAB and DAB+ software radio")
1574 (description
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+)))
1578
1579 (define-public csdr
1580 ;; No release since 2017, use commit directly.
1581 (let ((commit "6ef2a74206887155290a54c7117636f66742f858")
1582 (revision "1"))
1583 (package
1584 (name "csdr")
1585 (version (git-version "0.15" revision commit))
1586 (source
1587 (origin
1588 (method git-fetch)
1589 (uri (git-reference
1590 (url "https://github.com/ha7ilm/csdr")
1591 (commit commit)))
1592 (file-name (git-file-name name version))
1593 (sha256
1594 (base32 "0ic35130lf66lk3wawgc5bcg711l7chv9al1hzdc1xrmq9qf9hri"))))
1595 (build-system gnu-build-system)
1596 (inputs
1597 `(("fftwf" ,fftwf)))
1598 (arguments
1599 `(#:make-flags
1600 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1601 ;; Don't print summary of SIMD optimized functions.
1602 "PARSEVECT=no")
1603 #:tests? #f ; No check phase
1604 #:phases
1605 (modify-phases %standard-phases
1606 (replace 'configure
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.
1611 (string-append
1612 all " -Wl,-rpath=" (assoc-ref outputs "out") "/lib"))
1613 (("PARAMS_SIMD =.*")
1614 ;; Disable to make reproducibility and cross-compilation work.
1615 "")
1616 (("gcc ")
1617 ,(string-append (cc-for-target) " "))
1618 (("g\\+\\+ ")
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")
1627 (description
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+))))
1633
1634 (define-public serialdv
1635 (package
1636 (name "serialdv")
1637 (version "1.1.4")
1638 (source
1639 (origin
1640 (method git-fetch)
1641 (uri (git-reference
1642 (url "https://github.com/f4exb/serialDV")
1643 (commit (string-append "v" version))))
1644 (file-name (git-file-name name version))
1645 (sha256
1646 (base32 "0d88h2wjhf79nisiv96bq522hkbknzm88wsv0q9k33mzmrwnrx93"))))
1647 (build-system cmake-build-system)
1648 (arguments
1649 `(#:tests? #f)) ; No test suite.
1650 (home-page "https://github.com/f4exb/serialDV")
1651 (synopsis "Audio interface for AMBE3000 based devices")
1652 (description
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+)))
1656
1657 (define-public cm256cc
1658 (package
1659 (name "cm256cc")
1660 (version "1.1.0")
1661 (source
1662 (origin
1663 (method git-fetch)
1664 (uri (git-reference
1665 (url "https://github.com/f4exb/cm256cc")
1666 (commit (string-append "v" version))))
1667 (file-name (git-file-name name version))
1668 (sha256
1669 (base32 "1n9v7g6d370263bgqrjv38s9aq5953rzy7jvd8i30xq6aram9djg"))))
1670 (build-system cmake-build-system)
1671 (arguments
1672 ;; Disable some SIMD features for reproducibility.
1673 `(#:configure-flags '("-DENABLE_DISTRIBUTION=1")
1674 #:phases
1675 (modify-phases %standard-phases
1676 (replace 'check
1677 (lambda* (#:key tests? #:allow-other-keys)
1678 (when tests?
1679 (invoke "./cm256_test")))))))
1680 (home-page "https://github.com/f4exb/cm256cc")
1681 (synopsis "Cauchy MDS Block Erasure Codec")
1682 (description
1683 "This is a C++ library implementing fast GF(256) Cauchy MDS Block Erasure
1684 Codec.")
1685 (license license:gpl3+)))
1686
1687 (define-public libdab
1688 ;; No release since 2017, use commit directly.
1689 (let ((commit "b578d02eda60f613d35bab5d762ae7c9a27758d8")
1690 (revision "1"))
1691 (package
1692 (name "libdab")
1693 (version (git-version "0.8" revision commit))
1694 (source
1695 (origin
1696 (method git-fetch)
1697 (uri (git-reference
1698 (url "https://github.com/JvanKatwijk/dab-cmdline")
1699 (commit commit)))
1700 (file-name (git-file-name name version))
1701 (sha256
1702 (base32 "0j339kx3n2plgfw7ikpp7b81h5n68wmsgflwljbh2sy8j62faik9"))))
1703 (build-system cmake-build-system)
1704 (inputs
1705 `(("faad2" ,faad2)
1706 ("fftwf" ,fftwf)
1707 ("zlib" ,zlib)))
1708 (arguments
1709 `(#:tests? #f ; No test suite.
1710 #:phases
1711 (modify-phases %standard-phases
1712 (add-after 'unpack 'enter-sources-directory
1713 (lambda _
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+))))
1720
1721 (define-public dsdcc
1722 (package
1723 (name "dsdcc")
1724 (version "1.9.3")
1725 (source
1726 (origin
1727 (method git-fetch)
1728 (uri (git-reference
1729 (url "https://github.com/f4exb/dsdcc")
1730 (commit (string-append "v" version))))
1731 (file-name (git-file-name name version))
1732 (sha256
1733 (base32 "0jgzpv4d6ckd0sdq6438rjh3m6knj6gx63627fajch74hxrvclzj"))))
1734 (build-system cmake-build-system)
1735 (inputs
1736 `(("mbelib" ,mbelib)
1737 ("serialdv" ,serialdv)))
1738 (arguments
1739 `(#:tests? #f ; No test suite.
1740 #:configure-flags
1741 (list "-DUSE_MBELIB=ON"
1742 (string-append "-DLIBMBE_INCLUDE_DIR="
1743 (assoc-ref %build-inputs "mbelib")
1744 "/include")
1745 (string-append "-DLIBMBE_LIBRARY="
1746 (assoc-ref %build-inputs "mbelib")
1747 "/lib/libmbe.so")
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")
1756 (description
1757 "This package provides a library and a program to decode several digital
1758 voice formats.")
1759 (license license:gpl3+)))
1760
1761 (define-public sdrangel
1762 (package
1763 (name "sdrangel")
1764 (version "6.10.3")
1765 (source
1766 (origin
1767 (method git-fetch)
1768 (uri (git-reference
1769 (url "https://github.com/f4exb/sdrangel")
1770 (commit (string-append "v" version))))
1771 (file-name (git-file-name name version))
1772 (sha256
1773 (base32 "0dpymjpg1x7yyrlhh8sdmf5l7il9ymx32zcpm78wwrw3df4q1w3m"))))
1774 (build-system qt-build-system)
1775 (native-inputs
1776 `(("doxygen" ,doxygen)
1777 ("graphviz" ,graphviz)
1778 ("pkg-config" ,pkg-config)))
1779 (inputs
1780 `(("airspyhf" ,airspyhf)
1781 ("alsa-lib" ,alsa-lib)
1782 ("aptdec" ,aptdec)
1783 ("boost" ,boost)
1784 ("cm256cc" ,cm256cc)
1785 ("codec2" ,codec2)
1786 ("dsdcc" ,dsdcc)
1787 ("faad2" ,faad2)
1788 ("ffmpeg" ,ffmpeg)
1789 ("fftwf" ,fftwf)
1790 ("hackrf" ,hackrf)
1791 ("libdab" ,libdab)
1792 ("libusb" ,libusb)
1793 ("mbelib" ,mbelib)
1794 ("opencv" ,opencv)
1795 ("opus" ,opus)
1796 ("pulseaudio" ,pulseaudio)
1797 ("qtbase" ,qtbase)
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)
1807 ("sgp4" ,sgp4)
1808 ("zlib" ,zlib)))
1809 (arguments
1810 `(#:tests? #f ; No test suite.
1811 #:configure-flags
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")
1826 (description
1827 "SDRangel is a Qt software defined radio and signal analyzer frontend for
1828 various hardware.")
1829 (license license:gpl3+)))
1830
1831 (define-public inspectrum
1832 (package
1833 (name "inspectrum")
1834 (version "0.2.3")
1835 (source
1836 (origin
1837 (method git-fetch)
1838 (uri (git-reference
1839 (url "https://github.com/miek/inspectrum")
1840 (commit (string-append "v" version))))
1841 (file-name (git-file-name name version))
1842 (sha256
1843 (base32 "1x6nyn429pk0f7lqzskrgsbq09mq5787xd4piic95add6n1cc355"))))
1844 (build-system qt-build-system)
1845 (native-inputs
1846 `(("pkg-config" ,pkg-config)))
1847 (inputs
1848 `(("fftwf" ,fftwf)
1849 ("liquid-dsp" ,liquid-dsp)
1850 ("qtbase" ,qtbase)))
1851 (home-page "https://github.com/miek/inspectrum")
1852 (synopsis "Radio signal analyser")
1853 (description
1854 "Inspectrum is a tool for analysing captured signals, primarily from
1855 software-defined radio receivers.")
1856 (license license:gpl3+)))
1857
1858 (define-public wfview
1859 ;; No tagged release, use commit directly.
1860 (let ((commit "274e905d214a7360e8cf2dd0421dbe3712a0ddcc")
1861 (revision "1"))
1862 (package
1863 (name "wfview")
1864 (version (git-version "20210511" revision commit))
1865 (source
1866 (origin
1867 (method git-fetch)
1868 (uri (git-reference
1869 (url "https://gitlab.com/eliggett/wfview")
1870 (commit commit)))
1871 (file-name (git-file-name name version))
1872 (sha256
1873 (base32 "1dmxn15xs63wx1y4mh1mlv8qc1xz32vgbyl3rk82gf6knw518svp"))))
1874 (build-system qt-build-system)
1875 (inputs
1876 `(("qcustomplot" ,qcustomplot)
1877 ("qtbase" ,qtbase)
1878 ("qtmultimedia" ,qtmultimedia)
1879 ("qtserialport" ,qtserialport)))
1880 (arguments
1881 `(#:tests? #f ; No test suite.
1882 #:phases
1883 (modify-phases %standard-phases
1884 (add-after 'unpack 'fix-paths
1885 (lambda* (#:key outputs #:allow-other-keys)
1886 (substitute* "wfview.pro"
1887 (("\\.\\./wfview/")
1888 "../"))
1889 (substitute* '("wfmain.cpp")
1890 (("/usr/share")
1891 (string-append (assoc-ref outputs "out") "/share")))))
1892 (replace 'configure
1893 (lambda _
1894 (mkdir-p "build")
1895 (chdir "build")
1896 (invoke "qmake" "../wfview.pro")))
1897 (replace 'install
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")))
1908 (mkdir-p dir)
1909 (copy-recursively "qdarkstyle" dir))))))))
1910 (home-page "https://wfview.org/")
1911 (synopsis "Software to control Icom radios")
1912 (description
1913 "@code{wfview} is a program to control modern Icom radios and view the
1914 spectrum waterfall. It supports at least the following models:
1915
1916 @itemize
1917 @item IC-705
1918 @item IC-7300
1919 @item IC-7610
1920 @item IC-7850
1921 @item IC-7851
1922 @item IC-9700
1923 @end itemize\n")
1924 (license (list license:expat
1925 license:gpl3)))))
1926
1927 (define-public minimodem
1928 (package
1929 (name "minimodem")
1930 (version "0.24")
1931 (source
1932 (origin
1933 (method url-fetch)
1934 (uri (string-append "http://www.whence.com/minimodem/minimodem-"
1935 version ".tar.gz"))
1936 (sha256
1937 (base32 "13ipyh39l7p420j1j9kvwyskv2nqnimls1a3z1klsa1zivds9k7q"))))
1938 (build-system gnu-build-system)
1939 (native-inputs
1940 `(("pkg-config" ,pkg-config)))
1941 (inputs
1942 `(("alsa-lib" ,alsa-lib)
1943 ("fftwf" ,fftwf)
1944 ("libsndfile" ,libsndfile)
1945 ("pulseaudio" ,pulseaudio)))
1946 (home-page "http://www.whence.com/minimodem/")
1947 (synopsis "Software audio FSK modem")
1948 (description
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
1953 Caller-ID.")
1954 (license license:gpl3+)))