gnu: emacs-svg-icon: Fix grammar.
[jackhill/guix/guix.git] / gnu / packages / radio.scm
CommitLineData
c5361b7c 1;;; GNU Guix --- Functional package management for GNU
ac2fc134 2;;; Copyright © 2017, 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
79c4fb4f 3;;; Copyright © 2019, 2020 Christopher Howard <christopher@librehacker.com>
c4f96706 4;;; Copyright © 2019, 2020 Evan Straw <evan.straw99@gmail.com>
9b97f39f 5;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
d042caf6
GLV
6;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
7;;; Copyright © 2020 Charlie Ritter <chewzerita@posteo.net>
dd8292df 8;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
08380922 9;;; Copyright © 2021 João Pedro Simas <jpsimas@gmail.com>
c5361b7c
AI
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
0493ead6 26(define-module (gnu packages radio)
c5361b7c
AI
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix packages)
29 #:use-module (guix download)
7f1c69f5 30 #:use-module (guix git-download)
f03e5ca5 31 #:use-module (guix utils)
92ff287e 32 #:use-module (gnu packages admin)
d042caf6
GLV
33 #:use-module (gnu packages algebra)
34 #:use-module (gnu packages audio)
c4f96706
ES
35 #:use-module (gnu packages autotools)
36 #:use-module (gnu packages base)
bc94b75d 37 #:use-module (gnu packages bash)
d042caf6
GLV
38 #:use-module (gnu packages boost)
39 #:use-module (gnu packages check)
92ff287e 40 #:use-module (gnu packages compression)
a56b331e
GLV
41 #:use-module (gnu packages curl)
42 #:use-module (gnu packages databases)
d042caf6 43 #:use-module (gnu packages documentation)
8e1e86b0 44 #:use-module (gnu packages engineering)
72f6ee0e 45 #:use-module (gnu packages fltk)
5a915632 46 #:use-module (gnu packages gcc)
409dfdf0 47 #:use-module (gnu packages gd)
a56b331e 48 #:use-module (gnu packages geo)
65e9f131 49 #:use-module (gnu packages gettext)
d042caf6
GLV
50 #:use-module (gnu packages ghostscript)
51 #:use-module (gnu packages glib)
a56b331e 52 #:use-module (gnu packages gnome)
5adfaa68 53 #:use-module (gnu packages golang)
92ff287e 54 #:use-module (gnu packages gps)
d042caf6 55 #:use-module (gnu packages gstreamer)
e200de54 56 #:use-module (gnu packages gtk)
7f1c69f5 57 #:use-module (gnu packages image)
d3e7f1ee 58 #:use-module (gnu packages javascript)
c5361b7c 59 #:use-module (gnu packages libusb)
d042caf6
GLV
60 #:use-module (gnu packages linux)
61 #:use-module (gnu packages logging)
409dfdf0 62 #:use-module (gnu packages lua)
d042caf6 63 #:use-module (gnu packages maths)
561017f8 64 #:use-module (gnu packages mp3)
d042caf6 65 #:use-module (gnu packages multiprecision)
4fca1bc5 66 #:use-module (gnu packages ncurses)
d042caf6 67 #:use-module (gnu packages networking)
c5361b7c 68 #:use-module (gnu packages pkg-config)
7f1c69f5 69 #:use-module (gnu packages pulseaudio)
e200de54 70 #:use-module (gnu packages python)
d042caf6 71 #:use-module (gnu packages python-science)
44d10b1f 72 #:use-module (gnu packages python-xyz)
d042caf6 73 #:use-module (gnu packages qt)
409dfdf0 74 #:use-module (gnu packages readline)
5a915632 75 #:use-module (gnu packages ruby)
08380922 76 #:use-module (gnu packages sdl)
d042caf6
GLV
77 #:use-module (gnu packages sphinx)
78 #:use-module (gnu packages swig)
409dfdf0 79 #:use-module (gnu packages tcl)
d042caf6 80 #:use-module (gnu packages tex)
5a915632 81 #:use-module (gnu packages texinfo)
aee72ed1 82 #:use-module (gnu packages video)
e212f32d 83 #:use-module (gnu packages xiph)
e200de54 84 #:use-module (gnu packages xml)
d042caf6 85 #:use-module (gnu packages xorg)
e200de54 86 #:use-module (guix build-system cmake)
93299e61 87 #:use-module (guix build-system glib-or-gtk)
7f1c69f5 88 #:use-module (guix build-system gnu)
5adfaa68 89 #:use-module (guix build-system go)
aa862c2c
GLV
90 #:use-module (guix build-system python)
91 #:use-module (guix build-system qt))
c5361b7c 92
0493ead6
GLV
93(define-public liquid-dsp
94 (package
95 (name "liquid-dsp")
96 (version "1.3.2")
97 (source
98 (origin (method git-fetch)
99 (uri (git-reference
b0e7b699 100 (url "https://github.com/jgaeddert/liquid-dsp")
0493ead6
GLV
101 (commit (string-append "v" version))))
102 (file-name (git-file-name name version))
103 (sha256
104 (base32 "1n6dbg13q8ga5qhg1yiszwly4jj0rxqr6f1xwm9waaly5z493xsd"))))
105 (build-system gnu-build-system)
106 (native-inputs
107 `(("autoconf" ,autoconf)))
108 (inputs
109 `(("fftw" ,fftw)
110 ("fftwf" ,fftwf)))
111 (home-page "https://liquidsdr.org")
112 (synopsis "Signal processing library for software-defined radios")
113 (description
114 "Liquid DSP is a @dfn{digital signal processing} (DSP) library designed
115specifically for software-defined radios on embedded platforms. The aim is to
116provide a lightweight DSP library that does not rely on a myriad of external
117dependencies or proprietary and otherwise cumbersome frameworks. All signal
118processing elements are designed to be flexible, scalable, and dynamic,
119including filters, filter design, oscillators, modems, synchronizers, complex
120mathematical operations, and much more.")
121 (license license:expat)))
122
c5361b7c
AI
123(define-public rtl-sdr
124 (package
125 (name "rtl-sdr")
d7cefb0b 126 (version "0.6.0")
c5361b7c
AI
127 (source
128 (origin
d7cefb0b
ES
129 (method git-fetch)
130 (uri (git-reference
3e26bec0 131 (url "https://git.osmocom.org/rtl-sdr/")
d7cefb0b
ES
132 (commit version)))
133 (file-name (git-file-name name version))
c5361b7c
AI
134 (sha256
135 (base32
d7cefb0b 136 "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k"))))
c5361b7c
AI
137 (build-system cmake-build-system)
138 (inputs
139 `(("libusb" ,libusb)))
140 (native-inputs
141 `(("pkg-config" ,pkg-config)))
142 (arguments
2bee789a
GLV
143 `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
144 "-DINSTALL_UDEV_RULES=ON")
145 #:tests? #f ; No tests
146 #:phases
147 (modify-phases %standard-phases
148 (add-after 'unpack 'fix-paths
149 (lambda* (#:key outputs #:allow-other-keys)
150 (substitute* "CMakeLists.txt"
503447ad 151 (("DESTINATION \"/etc/udev/")
2bee789a
GLV
152 (string-append "DESTINATION \""
153 (assoc-ref outputs "out")
503447ad 154 "/lib/udev/")))
2bee789a 155 #t)))))
c5361b7c
AI
156 (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr")
157 (synopsis "Software defined radio driver for Realtek RTL2832U")
158 (description "DVB-T dongles based on the Realtek RTL2832U can be used as a
159cheap software defined radio, since the chip allows transferring the raw I/Q
2bee789a
GLV
160samples to the host. @code{rtl-sdr} provides drivers for this purpose.
161
95ffdfe8
GLV
162The default Linux driver managing DVB-T dongles as TV devices doesn't work for
163SDR purposes and clashes with this package. Therefore you must prevent the
164kernel from loading it automatically by adding the following line to your
165system configuration:
166
167@lisp
168(kernel-arguments '(\"modprobe.blacklist=dvb_usb_rtl28xxu\"))
169@end lisp
170
aee7d000
BW
171To install the rtl-sdr udev rules, you must extend 'udev-service-type' with
172this package. E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
c5361b7c 173 (license license:gpl2+)))
e200de54 174
5b49626b
GLV
175(define-public airspyhf
176 (package
177 (name "airspyhf")
178 (version "1.6.8")
179 (source
180 (origin
181 (method git-fetch)
182 (uri (git-reference
183 (url "https://github.com/airspy/airspyhf")
184 (commit version)))
185 (file-name (git-file-name name version))
186 (sha256
187 (base32 "0n699i5a9fzzhf80fcjlqq6p2a013rzlwmwv4nmwfafy6c8cr924"))))
188 (build-system cmake-build-system)
189 (native-inputs
190 `(("pkg-config" ,pkg-config)))
191 (inputs
192 `(("libusb" ,libusb)))
193 (arguments
194 '(#:configure-flags '("-DINSTALL_UDEV_RULES=ON")
195 #:tests? #f ; No tests
196 #:phases
197 (modify-phases %standard-phases
198 (add-after 'unpack 'fix-paths
199 (lambda* (#:key outputs #:allow-other-keys)
200 (substitute* "tools/CMakeLists.txt"
201 (("DESTINATION \"/etc/udev/")
202 (string-append "DESTINATION \""
203 (assoc-ref outputs "out")
5eded9b5
GLV
204 "/lib/udev/")))))
205 (add-after 'fix-paths 'fix-udev-rules
206 (lambda _
207 (substitute* "tools/52-airspyhf.rules"
208 ;; The plugdev group does not exist; use dialout as in
209 ;; the hackrf package.
210 (("GROUP=\"plugdev\"")
211 "GROUP=\"dialout\"")))))))
5b49626b
GLV
212 (home-page "https://github.com/airspy/airspyhf")
213 (synopsis "Software defined radio driver for Airspy HF+")
214 (description
215 "This package provides the driver and utilities for controlling the Airspy
216HF+ Software Defined Radio (SDR) over USB.
217
218To install the airspyhf udev rules, you must extend @code{udev-service-type}
219with this package. E.g.: @code{(udev-rules-service 'airspyhf airspyhf)}")
220 (license license:bsd-3)))
221
e200de54
AI
222(define-public chirp
223 (package
224 (name "chirp")
8e93fe98 225 (version "20201121")
e200de54
AI
226 (source
227 (origin
228 (method url-fetch)
229 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
230 version "/chirp-daily-" version ".tar.gz"))
231 (sha256
8e93fe98 232 (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
e200de54
AI
233 (build-system python-build-system)
234 (inputs
235 `(("python2-libxml2" ,python2-libxml2)
236 ("python2-pygtk" ,python2-pygtk)
237 ("python2-pyserial" ,python2-pyserial)))
238 (arguments
239 `(#:python ,python-2))
240 (home-page "https://chirp.danplanet.com")
241 (synopsis "Cross-radio programming tool")
242 (description "Chirp is a cross-radio programming tool. It supports a
243growing list of radios across several manufacturers and allows transferring of
244memory contents between them.")
245 (license (list license:gpl3+
246 license:lgpl3+)))) ; chirp/elib_intl.py
7f1c69f5
AI
247
248(define-public aptdec
249 (package
250 (name "aptdec")
251 (version "1.7")
252 (source
253 (origin
254 (method git-fetch)
255 (uri (git-reference
ac2fc134 256 (url "https://github.com/Xerbo/aptdec")
7f1c69f5
AI
257 (commit (string-append "v" version))))
258 (file-name (git-file-name name version))
259 (sha256
260 (base32
261 "1hf0zb51qc6fyhdjxyij1n3vgwnw3cwksc3r11szbhkml14qjnzk"))))
262 (build-system gnu-build-system)
263 (inputs
264 `(("libpng" ,libpng)
265 ("libsndfile" ,libsndfile)))
266 (arguments
319a73e7
AI
267 `(#:make-flags
268 (list
269 (string-append "CC="
270 (if ,(%current-target-system)
271 (string-append (assoc-ref %build-inputs "cross-gcc")
272 "/bin/" ,(%current-target-system) "-gcc")
273 "gcc"))
274 (string-append "PREFIX=" %output)
275 (string-append "RPM_BUILD_ROOT=" %output))
7f1c69f5
AI
276 #:tests? #f ; no tests
277 #:phases
278 (modify-phases %standard-phases
279 (delete 'configure)
280 (replace 'install
281 (lambda* (#:key outputs #:allow-other-keys)
282 (let ((out (assoc-ref outputs "out")))
283 (install-file "atpdec" (string-append out "/bin")))
284 #t)))))
ac2fc134 285 (home-page "https://github.com/Xerbo/aptdec")
7f1c69f5
AI
286 (synopsis "NOAA Automatic Picture Transmission (APT) decoder")
287 (description "Aptdec decodes Automatic Picture Transmission (APT) images.
288These are medium resolution images of the Earth transmitted by, among other
289satellites, the POES NOAA weather satellite series. These transmissions are
290on a frequency of 137 MHz. They can be received using an inexpensive antenna
291and a dedicated receiver.")
292 (license license:gpl2+)))
c4f96706
ES
293
294(define-public redsea
295 (package
296 (name "redsea")
297 (version "0.18")
298 (source (origin
299 (method git-fetch)
300 (uri (git-reference
301 (url "https://github.com/windytan/redsea")
302 (commit (string-append "v" version))))
303 (file-name (git-file-name name version))
304 (sha256
305 (base32
306 "1y96g0ra2krjb2kypm8s5gdfia45yci4f36klsvyzg8d53v5cwhn"))))
307 (build-system gnu-build-system)
308 (arguments
309 `(#:phases
310 (modify-phases %standard-phases
311 ;; The configure.ac file does not explicitly link against libiconv
312 ;; except on Mac OS, causing the build to fail. This phase comments
313 ;; out the original AC_SUBST macro (located inside a conditional) and
314 ;; adds an explicit use of it underneath, so that libiconv is always
315 ;; linked against.
316 (add-after 'unpack 'patch-libiconv
317 (lambda _
318 (substitute* "configure.ac"
319 (("^ +AC_SUBST")
320 "# AC_SUBST")
321 (("esac")
322 "esac\nAC_SUBST([ICONV], [\"-liconv\"])"))
323 #t)))))
324 (inputs
325 `(("libiconv" ,libiconv)
326 ("libsndfile" ,libsndfile)
327 ("liquid-dsp" ,liquid-dsp)))
328 (native-inputs
329 `(("autoconf" ,autoconf)
330 ("automake" ,automake)))
331 (home-page "https://github.com/windytan/redsea")
332 (synopsis "Lightweight RDS to JSON decoder")
333 (description "redsea is a lightweight command-line @dfn{FM Radio Data
334System} (FM-RDS) decoder. Redsea can be used with any RTL-SDR USB radio stick
335with the rtl_fm tool, or any other @dfn{software-defined radio} (SDR) via
336csdr, for example. It can also decode raw ASCII bitstream, the hex format
337used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
338 (license license:expat)))
d042caf6
GLV
339
340(define-public gnuradio
341 (package
342 (name "gnuradio")
08380922 343 (version "3.9.0.0")
d042caf6
GLV
344 (source
345 (origin
346 (method url-fetch)
347 (uri (string-append "https://www.gnuradio.org/releases/gnuradio/"
348 "gnuradio-" version ".tar.xz"))
349 (sha256
08380922 350 (base32 "1jvm9xd0l2pz1fww4zii6hl7ccnvy256nrf70ljb594n7j9j49ha"))))
d042caf6
GLV
351 (build-system cmake-build-system)
352 (native-inputs
353 `(("doxygen" ,doxygen)
d042caf6 354 ("ghostscript" ,ghostscript)
d3e7f1ee 355 ("js-mathjax" ,js-mathjax)
d042caf6
GLV
356 ("orc" ,orc)
357 ("pkg-config" ,pkg-config)
08380922 358 ("pybind11" ,pybind11)
d042caf6
GLV
359 ("python-cheetah" ,python-cheetah)
360 ("python-mako" ,python-mako)
361 ("python-pyzmq" ,python-pyzmq)
362 ("python-scipy" ,python-scipy)
363 ("python-sphinx" ,python-sphinx)
d042caf6
GLV
364 ("texlive" ,(texlive-union (list texlive-amsfonts
365 texlive-latex-amsmath
366 ;; TODO: Add newunicodechar.
367 texlive-latex-graphics)))
368 ("xorg-server" ,xorg-server-for-tests)))
369 (inputs
370 `(("alsa-lib" ,alsa-lib)
371 ("boost" ,boost)
372 ("cairo" ,cairo)
373 ("codec2" ,codec2)
374 ("cppzmq" ,cppzmq)
375 ("fftwf" ,fftwf)
376 ("gmp" ,gmp)
377 ("gsl" ,gsl)
378 ("gsm" ,gsm)
379 ("gtk+" ,gtk+)
380 ("jack" ,jack-1)
d3e7f1ee 381 ("libsndfile" ,libsndfile)
d042caf6
GLV
382 ("log4cpp" ,log4cpp)
383 ("pango" ,pango)
384 ("portaudio" ,portaudio)
f03e5ca5 385 ("python" ,python)
d042caf6
GLV
386 ("python-click" ,python-click)
387 ("python-click-plugins" ,python-click-plugins)
388 ("python-lxml" ,python-lxml)
389 ("python-numpy" ,python-numpy)
390 ("python-pycairo" ,python-pycairo)
391 ("python-pygobject" ,python-pygobject)
392 ("python-pyqt" ,python-pyqt)
393 ("python-pyyaml" ,python-pyyaml)
394 ("qtbase" ,qtbase)
395 ("qwt" ,qwt)
08380922 396 ("sdl" ,sdl)
8e1e86b0 397 ("volk" ,volk)
d042caf6
GLV
398 ("zeromq" ,zeromq)))
399 (arguments
400 `(#:modules ((guix build cmake-build-system)
93299e61 401 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
d042caf6 402 ((guix build python-build-system) #:prefix python:)
93299e61
GLV
403 (guix build utils)
404 (ice-9 match))
d042caf6 405 #:imported-modules (,@%cmake-build-system-modules
93299e61 406 (guix build glib-or-gtk-build-system)
d042caf6 407 (guix build python-build-system))
d3e7f1ee
GLV
408 #:configure-flags
409 (list (string-append "-DMATHJAX2_ROOT="
410 (assoc-ref %build-inputs "js-mathjax")
411 "/share/javascript/mathjax"))
d042caf6
GLV
412 #:phases
413 (modify-phases %standard-phases
414 (add-after 'unpack 'fix-paths
415 (lambda* (#:key inputs #:allow-other-keys)
416 (let ((qwt (assoc-ref inputs "qwt")))
417 (substitute* "cmake/Modules/FindQwt.cmake"
418 (("/usr/include")
419 (string-append qwt "/include"))
420 (("/usr/lib")
421 (string-append qwt "/lib"))
422 (("qwt6-\\$\\{QWT_QT_VERSION\\}")
423 "qwt")))
424 (substitute* "cmake/Modules/GrPython.cmake"
425 (("dist-packages")
426 "site-packages"))
08380922 427 (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
d042caf6
GLV
428 "gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
429 (("<codec2/")
430 "<"))
431 #t))
432 (add-before 'check 'set-test-environment
433 (lambda* (#:key inputs #:allow-other-keys)
434 (setenv "HOME" "/tmp")
435 (system (string-append (assoc-ref inputs "xorg-server")
436 "/bin/Xvfb :1 &"))
437 (setenv "DISPLAY" ":1")
438 #t))
08380922
JPS
439 (replace 'check
440 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
441 (invoke "ctest" "-j" (if parallel-tests?
442 (number->string (parallel-job-count))
443 "1")
444 "--output-on-failure"
445 ;;disable broken tests
446 "-E" (string-join
447 '(;; https://github.com/gnuradio/gnuradio/issues/3871
448 "qa_header_payload_demux"
449 ;; https://github.com/gnuradio/gnuradio/issues/4348
450 "qa_packet_headerparser_b")
451 "|"))))
d042caf6 452 (add-after 'install 'wrap-python
93299e61
GLV
453 (assoc-ref python:%standard-phases 'wrap))
454 (add-after 'wrap-python 'wrap-glib-or-gtk
455 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
456 (add-after 'wrap-glib-or-gtk 'wrap-with-GI_TYPELIB_PATH
457 (lambda* (#:key inputs outputs #:allow-other-keys)
458 (let ((out (assoc-ref outputs "out"))
459 (paths (map (match-lambda
460 ((output . directory)
461 (let ((girepodir (string-append
462 directory
463 "/lib/girepository-1.0")))
464 (if (file-exists? girepodir)
465 girepodir
466 #f))))
467 inputs)))
468 (wrap-program (string-append out "/bin/gnuradio-companion")
469 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
470 #t)))))
cf480830 471 (native-search-paths
f03e5ca5 472 ;; Variables required to find third-party plugins at runtime.
cf480830
GLV
473 (list (search-path-specification
474 (variable "GRC_BLOCKS_PATH")
f03e5ca5
GLV
475 (files '("share/gnuradio/grc/blocks")))
476 (search-path-specification
477 (variable "PYTHONPATH")
478 (files (list (string-append "lib/python"
479 (version-major+minor
480 (package-version python))
481 "/site-packages"))))))
d042caf6
GLV
482 (synopsis "Toolkit for software-defined radios")
483 (description
484 "GNU Radio is a development toolkit that provides signal processing blocks
485to implement software radios. It can be used with external RF hardware to
486create software-defined radios, or without hardware in a simulation-like
487environment.")
488 (home-page "https://www.gnuradio.org")
489 (license license:gpl3+)))
aa862c2c
GLV
490
491(define-public gnuradio-osmosdr
f1df1192
GLV
492 ;; No tag for version supporting Gnuradio 3.9; use commit.
493 (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
494 (revision "0"))
495 (package
496 (name "gnuradio-osmosdr")
497 (version (git-version "0.2.3" revision commit))
498 (source
499 (origin
500 (method git-fetch)
501 (uri (git-reference
502 (url "https://git.osmocom.org/gr-osmosdr")
503 (commit commit)))
504 (file-name (git-file-name name version))
505 (sha256
506 (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
507 (build-system cmake-build-system)
508 (native-inputs
509 `(("doxygen" ,doxygen)
510 ("pkg-config" ,pkg-config)
511 ("pybind11" ,pybind11)
512 ("python" ,python)
513 ("python-mako" ,python-mako)
514 ("python-six" ,python-six)))
515 (inputs
1d568a45
GLV
516 `(("airspyhf" ,airspyhf)
517 ("boost" ,boost)
f1df1192
GLV
518 ("fftwf" ,fftwf)
519 ("gmp" ,gmp)
520 ("gnuradio" ,gnuradio)
521 ("hackrf" ,hackrf)
522 ("libsndfile" ,libsndfile)
523 ("log4cpp" ,log4cpp)
524 ("rtl-sdr" ,rtl-sdr)
525 ("volk" ,volk)))
526 (synopsis "GNU Radio block for interfacing with various radio hardware")
527 (description "This is a block for GNU Radio allowing to use a common API
aa862c2c 528to access different radio hardware.")
f1df1192
GLV
529 (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
530 (license license:gpl3+))))
bc94b75d
GLV
531
532(define-public libosmo-dsp
533 (package
534 (name "libosmo-dsp")
535 (version "0.4.0")
536 (source
537 (origin
538 (method git-fetch)
539 (uri (git-reference
540 (url "https://git.osmocom.org/libosmo-dsp")
541 (commit version)))
542 (file-name (git-file-name name version))
543 (sha256
544 (base32 "00plihnpym1gkfpflah8il9463qxzm9kx2f07jyvbkszpj8viq5g"))))
545 (build-system gnu-build-system)
546 (native-inputs
547 `(("autoconf" ,autoconf)
548 ("automake" ,automake)
549 ("bash-minimal" ,bash-minimal)
550 ("doxygen" ,doxygen)
bc94b75d
GLV
551 ("libtool" ,libtool)
552 ("pkg-config" ,pkg-config)
553 ("texlive" ,(texlive-union (list texlive-amsfonts
554 texlive-latex-amsmath
555 ;; TODO: Add newunicodechar.
556 texlive-latex-graphics)))))
557 (inputs
558 `(("fftwf" ,fftwf)))
559 (arguments
560 `(#:phases
561 (modify-phases %standard-phases
562 (add-after 'unpack 'fix-paths
563 (lambda* (#:key inputs #:allow-other-keys)
564 (substitute* "git-version-gen"
565 (("/bin/sh")
566 (string-append (assoc-ref inputs "bash")
567 "/bin/bash")))
568 #t)))))
569 (synopsis "DSP primitives for SDR")
570 (description
571 "This a C-language library for common DSP (Digital Signal Processing)
572primitives for SDR (Software Defined Radio).")
573 (home-page "https://osmocom.org/projects/libosmo-dsp")
574 (license license:gpl2+)))
77dc12a8
GLV
575
576(define-public gnuradio-iqbalance
50e33007
GLV
577 ;; No tag for version supporting Gnuradio 3.9; use commit.
578 (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
579 (revision "0"))
580 (package
581 (name "gnuradio-iqbalance")
582 (version (git-version "0.38.2" revision commit))
583 (source
584 (origin
585 (method git-fetch)
586 (uri (git-reference
587 (url "https://git.osmocom.org/gr-iqbal")
588 (commit commit)))
589 (file-name (git-file-name name version))
590 (sha256
591 (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
592 (build-system cmake-build-system)
593 (native-inputs
594 `(("doxygen" ,doxygen)
595 ("pkg-config" ,pkg-config)
596 ("pybind11" ,pybind11)
597 ("python" ,python)
598 ("python-numpy" ,python-numpy)
599 ("python-six" ,python-six)))
600 (inputs
601 `(("boost" ,boost)
602 ("fftwf" ,fftwf)
603 ("gmp" ,gmp)
604 ("gnuradio" ,gnuradio)
605 ("libosmo-dsp" ,libosmo-dsp)
606 ("log4cpp" ,log4cpp)
607 ("volk" ,volk)))
608 (synopsis "GNU Radio block to correct IQ imbalance")
609 (description
77dc12a8
GLV
610 "This is a GNU Radio block to correct IQ imbalance in quadrature
611receivers. It's composed of two main block:
612@itemize
613@item Fix: Given a phase and amplitude error, it will correct a complex signal.
614@item Optimize: Attempts to auto-detect the phase and amplitude error to feed
615to the fix block above.
616@end itemize")
50e33007
GLV
617 (home-page "https://git.osmocom.org/gr-iqbal/")
618 (license license:gpl3+))))
f76ac21c
GLV
619
620(define-public gqrx
621 (package
622 (name "gqrx")
9b97f39f 623 (version "2.14.4")
f76ac21c
GLV
624 (source
625 (origin
626 (method git-fetch)
627 (uri (git-reference
b0e7b699 628 (url "https://github.com/csete/gqrx")
f76ac21c
GLV
629 (commit (string-append "v" version))))
630 (file-name (git-file-name name version))
631 (sha256
9b97f39f 632 (base32 "0m4ncydihz4n4i80c252vk3c5v672yab1jv85n6ndn7a92xv3ilq"))))
f76ac21c
GLV
633 (build-system qt-build-system)
634 (native-inputs
635 `(("pkg-config" ,pkg-config)))
636 (inputs
637 `(("alsa-lib" ,alsa-lib)
638 ("boost" ,boost)
639 ("fftwf" ,fftwf)
640 ("gmp" ,gmp)
641 ("gnuradio" ,gnuradio)
642 ("gnuradio-iqbalance" ,gnuradio-iqbalance)
643 ("gnuradio-osmosdr" ,gnuradio-osmosdr)
644 ("jack" ,jack-1)
da80d4e6 645 ("libsndfile" ,libsndfile)
f76ac21c
GLV
646 ("log4cpp" ,log4cpp)
647 ("portaudio" ,portaudio)
648 ("pulseaudio" ,pulseaudio)
649 ("qtbase" ,qtbase)
01e62a02
GLV
650 ("qtsvg" ,qtsvg)
651 ("volk" ,volk)))
f76ac21c 652 (arguments
a79fd1c2 653 `(#:tests? #f)) ; no tests
f76ac21c
GLV
654 (synopsis "Software defined radio receiver")
655 (description "Gqrx is a software defined radio (SDR) receiver implemented
656using GNU Radio and the Qt GUI toolkit.")
657 (home-page "https://gqrx.dk/")
658 (license license:gpl3+)))
72f6ee0e
GLV
659
660(define-public fldigi
661 (package
662 (name "fldigi")
512459f6 663 (version "4.1.18")
72f6ee0e
GLV
664 (source
665 (origin
65e9f131
GLV
666 (method git-fetch)
667 (uri (git-reference
668 (url "https://git.code.sf.net/p/fldigi/fldigi")
669 (commit (string-append "v" version))))
670 (file-name (git-file-name name version))
72f6ee0e 671 (sha256
512459f6 672 (base32 "177qnl1bxy46rqwdxizfy2i3mxk5bzz733cp445rfzl7b6yf6zrn"))))
72f6ee0e
GLV
673 (build-system gnu-build-system)
674 (native-inputs
65e9f131
GLV
675 `(("autoconf" ,autoconf)
676 ("automake" ,automake)
677 ("gettext" ,gettext-minimal)
678 ("pkg-config" ,pkg-config)))
72f6ee0e
GLV
679 (inputs
680 `(("alsa-lib" ,alsa-lib)
681 ("fltk" ,fltk)
e6d14165 682 ("hamlib" ,hamlib)
72f6ee0e
GLV
683 ("libpng" ,libpng)
684 ("libsamplerate" ,libsamplerate)
e6d14165 685 ("libusb" ,libusb)
72f6ee0e
GLV
686 ("libx11" ,libx11)
687 ("libxext" ,libxext)
688 ("libxfixes" ,libxfixes)
689 ("libxft" ,libxft)
690 ("portaudio" ,portaudio)
691 ("pulseaudio" ,pulseaudio)))
692 (synopsis "Software modem for amateur radio use")
693 (description
694 "Fldigi is a software modem for amateur radio use. It is a sound card
695based program that is used for both transmitting and receiving data by
696connecting the microphone and headphone connections of a computer to some radio
697hardware.")
698 (home-page "http://www.w1hkj.com/")
699 (license license:gpl3+)))
8080c03d
GLV
700
701(define-public flrig
702 (package
703 (name "flrig")
3d2989d0 704 (version "1.3.52")
8080c03d
GLV
705 (source
706 (origin
9e549633
GLV
707 (method git-fetch)
708 (uri (git-reference
709 (url "https://git.code.sf.net/p/fldigi/flrig")
710 (commit (string-append "v" version))))
711 (file-name (git-file-name name version))
8080c03d 712 (sha256
9e549633 713 (base32 "0vxn1wy5b2zfq20k93rfgq34m1nd3mxd74h8l98f90d85fhcqggy"))))
8080c03d
GLV
714 (build-system gnu-build-system)
715 (native-inputs
9e549633
GLV
716 `(("autoconf" ,autoconf)
717 ("automake" ,automake)
718 ("pkg-config" ,pkg-config)))
8080c03d
GLV
719 (inputs
720 `(("fltk" ,fltk)
721 ("libx11" ,libx11)
722 ("libxext" ,libxext)
723 ("libxfixes" ,libxfixes)
724 ("libxft" ,libxft)))
725 (synopsis "Radio transceiver control program")
726 (description
727 "Flrig is a transceiver control program for amateur radio use.
728It provides computer aided control of various radios using a serial
729or USB connection.")
730 (home-page "http://www.w1hkj.com/")
731 (license license:gpl3+)))
660912a4
GLV
732
733(define-public flamp
734 (package
735 (name "flamp")
736 (version "2.2.05")
737 (source
738 (origin
224582c5
GLV
739 (method git-fetch)
740 (uri (git-reference
741 (url "https://git.code.sf.net/p/fldigi/flamp")
742 (commit (string-append "v" version))))
743 (file-name (git-file-name name version))
660912a4 744 (sha256
224582c5 745 (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq"))))
660912a4
GLV
746 (build-system gnu-build-system)
747 (native-inputs
224582c5
GLV
748 `(("autoconf" ,autoconf)
749 ("automake" ,automake)
750 ("pkg-config" ,pkg-config)))
660912a4
GLV
751 (inputs
752 `(("fltk" ,fltk)
753 ("libx11" ,libx11)
754 ("libxext" ,libxext)
755 ("libxfixes" ,libxfixes)
756 ("libxft" ,libxft)))
757 (synopsis "Tool for AMP file transfer")
758 (description
3a888b41 759 "FLAMP is a program for transferring files by radio waves using AMP
660912a4
GLV
760(Amateur Multicast Protocol).")
761 (home-page "http://www.w1hkj.com/")
762 (license license:gpl3+)))
90ec7085
GLV
763
764(define-public flwrap
765 (package
766 (name "flwrap")
767 (version "1.3.5")
768 (source
769 (origin
689b525d
GLV
770 (method git-fetch)
771 (uri (git-reference
772 (url "https://git.code.sf.net/p/fldigi/flwrap")
773 (commit (string-append "v" version))))
774 (file-name (git-file-name name version))
90ec7085 775 (sha256
689b525d 776 (base32 "0xkhr82smfr7wpb9xl05wf7bz3vi2mr4xkcr2s8v6mblhgsdhqwg"))))
90ec7085
GLV
777 (build-system gnu-build-system)
778 (native-inputs
689b525d
GLV
779 `(("autoconf" ,autoconf)
780 ("automake" ,automake)
781 ("pkg-config" ,pkg-config)))
90ec7085
GLV
782 (inputs
783 `(("fltk" ,fltk)
784 ("libx11" ,libx11)
785 ("libxext" ,libxext)
786 ("libxfixes" ,libxfixes)
787 ("libxft" ,libxft)))
788 (synopsis "File encapsulation program")
789 (description
790 "Flwrap is a software utility for amateur radio use. Its purpose is to
791encapsulate both text and binary files in a way that allows them to be
792transmitted over any of several digital modes and verified at the receipt end
793for correctness.")
794 (home-page "http://www.w1hkj.com/")
795 (license license:gpl3+)))
409dfdf0 796
79c4fb4f
CH
797(define-public hackrf
798 ;; Using a git commit because there have been many many commits
799 ;; since the relase two years ago, but no sign of a promised
800 ;; release for many months now.
801 (let ((commit "43e6f99fe8543094d18ff3a6550ed2066c398862")
802 (revision "0"))
803 (package
804 (name "hackrf")
805 (version (git-version "2018.01.1" revision commit))
806 (source
807 (origin
808 (method git-fetch)
809 (uri (git-reference
b0e7b699 810 (url "https://github.com/mossmann/hackrf")
79c4fb4f
CH
811 (commit commit)))
812 (file-name (git-file-name name version))
813 (sha256
814 (base32 "0avnv693xi0zsnrvkbfn0ln1r3s1iyj0bz7sc3gxay909av0pvbc"))))
815 (build-system cmake-build-system)
816 (arguments
817 '(#:configure-flags
818 (list "-DUDEV_RULES_GROUP=dialout"
819 (string-append "-DUDEV_RULES_PATH="
820 (assoc-ref %outputs "out")
821 "/lib/udev/rules.d"))
822 #:phases
823 (modify-phases %standard-phases
824 (add-before 'configure 'enter-source-directory
825 (lambda _
826 (chdir "host")
827 #t))
828 (add-after 'install 'delete-static-library
829 (lambda* (#:key outputs #:allow-other-keys)
830 (delete-file (string-append (assoc-ref outputs "out")
831 "/lib/libhackrf.a"))
832 #t))
833 (add-before 'install-license-files 'leave-source-directory
834 (lambda _
835 (chdir "..")
836 #t)))
837 #:tests? #f)) ; no test suite
838 (native-inputs
839 `(("pkg-config" ,pkg-config)))
840 (inputs
841 `(("fftw" ,fftw)
842 ("fftwf" ,fftwf)
843 ("libusb" ,libusb)))
844 (home-page "https://greatscottgadgets.com/hackrf/")
845 (synopsis "User-space library and utilities for HackRF SDR")
846 (description
847 "Command line utilities and a C library for controlling the HackRF
32290b2c
BW
848Software Defined Radio (SDR) over USB. Installing this package installs the
849userspace hackrf utilities and C library. To install the hackrf udev rules,
850you must extend 'udev-service-type' with this package. E.g.:
851@code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
79c4fb4f
CH
852 (license license:gpl2))))
853
409dfdf0
GLV
854(define-public hamlib
855 (package
856 (name "hamlib")
c9d42d61 857 (version "4.1")
409dfdf0
GLV
858 (source
859 (origin
860 (method url-fetch)
861 (uri (string-append
862 "https://github.com/Hamlib/Hamlib/releases/download/"
863 version "/hamlib-" version ".tar.gz"))
864 (sha256
c9d42d61 865 (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
409dfdf0
GLV
866 (build-system gnu-build-system)
867 (native-inputs
868 `(("doxygen" ,doxygen)
869 ("lua" ,lua)
870 ("pkg-config" ,pkg-config)
871 ("python-wrapper" ,python-wrapper)
872 ("swig" ,swig)
873 ("tcl" ,tcl)))
874 (inputs
875 `(("gd" ,gd)
876 ("libusb" ,libusb)
877 ("libxml2" ,libxml2)
878 ("readline" ,readline)))
879 (arguments
880 `(#:configure-flags '("--disable-static"
881 "--with-lua-binding"
882 "--with-python-binding"
883 "--with-tcl-binding"
884 "--with-xml-support")))
885 (synopsis "Tools and API to control radios")
886 (description
887 "The Ham Radio Control Library (Hamlib) is a project to provide programs
888with a consistent Application Programming Interface (API) for controlling the
889myriad of radios and rotators available to amateur radio and communications
890users.")
891 (home-page "https://hamlib.github.io/")
892 (license (list license:gpl2+ license:lgpl2.1+))))
5a915632
GLV
893
894(define wsjtx-hamlib
895 ;; Fork of hamlib with custom patches used by wsjtx.
896 (package
897 (inherit hamlib)
898 (name "wsjtx-hamlib")
9aaeb9bd 899 (version "2.3.1")
5a915632
GLV
900 (source
901 (origin
902 (method git-fetch)
903 (uri (git-reference
904 (url "https://git.code.sf.net/u/bsomervi/hamlib.git")
905 (commit (string-append "wsjtx-" version))))
906 (file-name (git-file-name name version))
907 (sha256
9aaeb9bd 908 (base32 "0m4yzjcqs7a1w4lghyyckpkiy96jxdjijddxarqr3a37cl2rz23j"))))
5a915632
GLV
909 (native-inputs
910 `(("autoconf" ,autoconf)
911 ("automake" ,automake)
912 ("libtool" ,libtool)
913 ("texinfo" ,texinfo)
09e27115
GLV
914 ,@(package-native-inputs hamlib)))
915 (arguments
916 `(#:configure-flags '("--disable-static"
917 "--with-lua-binding"
918 "--with-python-binding"
919 "--with-tcl-binding"
9aaeb9bd 920 "--with-xml-support")))))
5a915632
GLV
921
922(define-public wsjtx
923 (package
924 (name "wsjtx")
92dfa92d 925 (version "2.3.1")
5a915632
GLV
926 (source
927 (origin
928 (method git-fetch)
929 (uri (git-reference
930 (url "https://git.code.sf.net/p/wsjt/wsjtx.git")
931 (commit (string-append "wsjtx-" version))))
932 (file-name (git-file-name name version))
933 (sha256
92dfa92d 934 (base32 "0mdr4l7zii08615yn7z91spnvnqm5i9390bra9lz3aqyxrsiim91"))))
5a915632
GLV
935 (build-system qt-build-system)
936 (native-inputs
937 `(("asciidoc" ,asciidoc)
938 ("gfortran" ,gfortran)
939 ("pkg-config" ,pkg-config)
940 ("qttools" ,qttools)
941 ("ruby-asciidoctor" ,ruby-asciidoctor)))
942 (inputs
943 `(("boost" ,boost)
944 ("fftw" ,fftw)
945 ("fftwf" ,fftwf)
946 ("hamlib" ,wsjtx-hamlib)
947 ("libusb" ,libusb)
948 ("qtbase" ,qtbase)
949 ("qtmultimedia" ,qtmultimedia)
950 ("qtserialport" ,qtserialport)))
951 (arguments
b79794a7
GLV
952 `(#:tests? #f ; No test suite
953 #:phases
954 (modify-phases %standard-phases
955 (add-after 'unpack 'work-around-runtime-bug
956 (lambda _
957 ;; Some of the programs in this package fail to find symbols
958 ;; in libm at runtime. Adding libm manually at the end of the
959 ;; library lists when linking the programs seems to help.
960 ;; TODO: find exactly what is wrong in the way the programs
961 ;; are built.
962 (substitute* "CMakeLists.txt"
963 (("target_link_libraries \\((.*)\\)" all libs)
964 (string-append "target_link_libraries (" libs " m)")))
965 #t)))))
5a915632
GLV
966 (synopsis "Weak-signal ham radio communication program")
967 (description
968 "WSJT-X implements communication protocols or modes called FT4, FT8,
969JT4, JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
970detecting and measuring your own radio signals reflected from the Moon. These
971modes were all designed for making reliable, confirmed QSOs under extreme
972weak-signal conditions.")
973 (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html")
974 (license license:gpl3)))
f93eebbf 975
8a294ece
GLV
976(define-public js8call
977 (package
978 (inherit wsjtx)
979 (name "js8call")
b8fe812f 980 (version "2.2.0")
8a294ece
GLV
981 (source
982 (origin
983 (method url-fetch)
984 (uri (string-append "http://files.js8call.com/" version
985 "/js8call-" version ".tgz"))
986 (sha256
b8fe812f 987 (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
8a294ece
GLV
988 (modules '((guix build utils)))
989 (snippet
990 '(begin
991 ;; Delete bundled boost to use the shared one.
992 (delete-file-recursively "boost")
993 #t))))
994 (build-system qt-build-system)
995 (native-inputs
996 `(("asciidoc" ,asciidoc)
997 ("gfortran" ,gfortran)
998 ("pkg-config" ,pkg-config)
999 ("qttools" ,qttools)
1000 ("ruby-asciidoctor" ,ruby-asciidoctor)))
1001 (inputs
1002 `(("boost" ,boost)
1003 ("fftw" ,fftw)
1004 ("fftwf" ,fftwf)
b8fe812f 1005 ("hamlib" ,wsjtx-hamlib)
8a294ece
GLV
1006 ("libusb" ,libusb)
1007 ("qtbase" ,qtbase)
1008 ("qtmultimedia" ,qtmultimedia)
1009 ("qtserialport" ,qtserialport)))
1010 (arguments
1011 `(#:tests? #f ; No test suite
1012 #:phases
1013 (modify-phases %standard-phases
1014 (add-after 'unpack 'fix-paths
1015 (lambda* (#:key outputs #:allow-other-keys)
1016 (substitute* "CMakeLists.txt"
1017 (("DESTINATION /usr/share")
1018 (string-append "DESTINATION "
1019 (assoc-ref outputs "out")
1020 "/share")))
1021 #t))
ac4847eb
GLV
1022 (add-after 'fix-paths 'work-around-runtime-bug
1023 (lambda _
1024 ;; Some of the programs in this package fail to find symbols
1025 ;; in libm at runtime. Adding libm manually at the end of the
1026 ;; library lists when linking the programs seems to help.
1027 ;; TODO: find exactly what is wrong in the way the programs
1028 ;; are built.
1029 (substitute* "CMakeLists.txt"
1030 (("target_link_libraries \\((.*)\\)" all libs)
1031 (string-append "target_link_libraries (" libs " m)")))
1032 #t))
8a294ece
GLV
1033 (add-after 'unpack 'fix-hamlib
1034 (lambda _
1035 (substitute* "CMake/Modules/Findhamlib.cmake"
1036 (("set \\(ENV\\{PKG_CONFIG_PATH\\}.*\\)")
1037 "set (__pc_path $ENV{PKG_CONFIG_PATH})
1038 list (APPEND __pc_path \"${__hamlib_pc_path}\")
1039 set (ENV{PKG_CONFIG_PATH} \"${__pc_path}\")"))
1040 (substitute* "HamlibTransceiver.hpp"
1041 (("#ifdef JS8_USE_LEGACY_HAMLIB")
1042 "#if 1"))
1043 #t)))))
1044 (synopsis "Weak-signal ham radio communication program")
1045 (description
1046 "JS8Call is a software using the JS8 digital mode (a derivative of the FT8
1047mode) providing weak signal keyboard to keyboard messaging to amateur radio
1048operators.")
1049 (home-page "http://js8call.com/")
1050 (license license:gpl3)))
1051
f93eebbf
GLV
1052(define-public xnec2c
1053 (package
1054 (name "xnec2c")
1055 (version "4.1.1")
1056 (source
1057 (origin
1058 (method url-fetch)
1059 (uri (string-append "http://www.5b4az.org/pkg/nec2/xnec2c/xnec2c-"
1060 version ".tar.bz2"))
1061 (sha256
1062 (base32 "1myvlkfybb2ha8l0h96ca3iz206zzy9z5iizm0sbab2zzp78n1r9"))))
1063 (build-system gnu-build-system)
1064 (native-inputs
1065 `(("pkg-config" ,pkg-config)))
1066 (inputs
1067 `(("gtk+" ,gtk+)))
1068 (arguments
1069 `(#:phases
1070 (modify-phases %standard-phases
1071 (add-after 'unpack 'fix-makefile
1072 (lambda* (#:key outputs #:allow-other-keys)
1073 (substitute* '("Makefile.am" "Makefile.in")
1074 ;; The DESTDIR variable does not get replaced the prefix
1075 ;; in the final Makefile, so let's do here.
1076 (("\\$\\(DESTDIR\\)/usr")
1077 (assoc-ref outputs "out")))
1078 #t))
1079 (add-after 'fix-makefile 'fix-paths
1080 (lambda* (#:key outputs #:allow-other-keys)
1081 ;; Increase the max length of the path to the glade file,
1082 ;; so that the '/gnu/store/...' path can fit in.
1083 (substitute* '("src/shared.c" "src/shared.h")
1084 (("char xnec2c_glade\\[64\\];")
1085 "char xnec2c_glade[256];"))
1086 ;; Fix hard coded references to '/usr/...'.
1087 (substitute* '("src/geom_edit.c" "src/main.c")
1088 (("\"/usr")
1089 (string-append "\"" (assoc-ref outputs "out"))))
1090 #t)))))
1091 (synopsis "Antenna modeling software")
1092 (description
1093 "Xnec2c is a GTK3-based graphical version of nec2c, a translation to the
1094C language of NEC2, the FORTRAN Numerical Electromagnetics Code commonly used
1095for antenna simulation and analysis. It can be used to define the geometry of
1096an antenna, and then plot the radiation pattern or frequency-related data like
1097gain and standing wave ratio.")
1098 (home-page "http://www.5b4az.org/")
1099 (license license:gpl3+)))
4fca1bc5
GLV
1100
1101(define-public dump1090
1102 (package
1103 (name "dump1090")
552e9fc1 1104 (version "4.0")
4fca1bc5
GLV
1105 (source
1106 (origin
1107 (method git-fetch)
1108 (uri (git-reference
b0e7b699 1109 (url "https://github.com/flightaware/dump1090")
4fca1bc5
GLV
1110 (commit (string-append "v" version))))
1111 (file-name (git-file-name name version))
1112 (sha256
552e9fc1 1113 (base32 "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"))))
4fca1bc5
GLV
1114 (build-system gnu-build-system)
1115 (native-inputs
1116 `(("pkg-config" ,pkg-config)))
1117 (inputs
1118 `(("libusb" ,libusb)
1119 ("ncurses" ,ncurses)
1120 ("rtl-sdr" ,rtl-sdr)))
1121 (arguments
1122 `(#:test-target "test"
19e8a754 1123 #:make-flags
1ca44ae3
MB
1124 (list (string-append "CC=" ,(cc-for-target))
1125 "BLADERF=no")
4fca1bc5
GLV
1126 #:phases
1127 (modify-phases %standard-phases
19e8a754 1128 (delete 'configure)
4fca1bc5
GLV
1129 (replace 'install
1130 (lambda* (#:key outputs #:allow-other-keys)
1131 (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
1132 (install-file "dump1090" bin)
1133 (install-file "view1090" bin)
1134 #t))))))
1135 (synopsis "Mode S decoder for rtl-sdr devices")
1136 (description
1137 "Dump1090 is a Mode S decoder specifically designed for rtl-sdr devices.
1138It can be used to decode the ADS-B signals that planes emit to indicate
1139their position, altitude, speed, etc.")
1140 (home-page "https://github.com/flightaware/dump1090")
bcf83975 1141 (license license:gpl2+)))
232f2d26
GLV
1142
1143(define-public rtl-433
1144 (package
1145 (name "rtl-433")
17544394 1146 (version "20.11")
232f2d26
GLV
1147 (source
1148 (origin
1149 (method git-fetch)
1150 (uri (git-reference
b0e7b699 1151 (url "https://github.com/merbanan/rtl_433")
232f2d26
GLV
1152 (commit version)))
1153 (file-name (git-file-name name version))
1154 (sha256
17544394 1155 (base32 "093bxjxkg7yf78wqj5gpijbfa2p05ny09qqsj84kzi1svnzsa369"))))
232f2d26
GLV
1156 (build-system cmake-build-system)
1157 (native-inputs
1158 `(("pkg-config" ,pkg-config)))
1159 (inputs
1160 `(("libusb" ,libusb)
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
1165from 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+)))
8fdd0da4
GLV
1168
1169(define-public multimon-ng
1170 (package
1171 (name "multimon-ng")
2606d947 1172 (version "1.1.9")
8fdd0da4
GLV
1173 (source
1174 (origin
1175 (method git-fetch)
1176 (uri (git-reference
b0e7b699 1177 (url "https://github.com/EliasOenal/multimon-ng")
8fdd0da4
GLV
1178 (commit version)))
1179 (file-name (git-file-name name version))
1180 (sha256
2606d947 1181 (base32 "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"))))
8fdd0da4
GLV
1182 (build-system cmake-build-system)
1183 (inputs
1184 `(("libx11" ,libx11)
1185 ("pulseaudio" ,pulseaudio)))
1186 (arguments
2606d947 1187 '(#:tests? #f)) ; no test suite
8fdd0da4
GLV
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
1191modes:
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+)))
0288e217
GLV
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
1234NanoVNA vector network analyzers.")
1235 (license license:gpl3+)))
aee72ed1
GLV
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))))
e6034e3c
GLV
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.
1308It 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+)))
e212f32d
GLV
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
1334methods:
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+)))
b8e71b39
GLV
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
1383programs using the library: cw, cwgen, cwcp and xcwcp. The programs are
1384intended for people who want to learn receiving and sending morse code.")
1385 (license license:gpl2+)))
a56b331e
GLV
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
1425Identification System) messages sent by ships and coast stations.")
1426 (license license:gpl2+)))
5adfaa68
GLV
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
1459RS-BA1 server. The application is mainly developed for connecting to the Icom
1460IC-705 transceiver, which has built-in WiFi and RS-BA1 server.
1461
1462Compatible 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)))
92ff287e
GLV
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)
1536receiver.")
1537 (license license:gpl2+)))
561017f8
GLV
1538
1539(define-public welle-io
1540 (package
1541 (name "welle-io")
1542 (version "2.2")
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 "04fpm6sc431dl9i5h53xpd6k85j22sv8aawl7b6wv2fzpfsd9fwa"))))
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
1576defined radio with support for rtl-sdr.")
1577 (license license:gpl2+)))