gnu: Add welle-io.
[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
AI
174
175(define-public chirp
176 (package
177 (name "chirp")
8e93fe98 178 (version "20201121")
e200de54
AI
179 (source
180 (origin
181 (method url-fetch)
182 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
183 version "/chirp-daily-" version ".tar.gz"))
184 (sha256
8e93fe98 185 (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
e200de54
AI
186 (build-system python-build-system)
187 (inputs
188 `(("python2-libxml2" ,python2-libxml2)
189 ("python2-pygtk" ,python2-pygtk)
190 ("python2-pyserial" ,python2-pyserial)))
191 (arguments
192 `(#:python ,python-2))
193 (home-page "https://chirp.danplanet.com")
194 (synopsis "Cross-radio programming tool")
195 (description "Chirp is a cross-radio programming tool. It supports a
196growing list of radios across several manufacturers and allows transferring of
197memory contents between them.")
198 (license (list license:gpl3+
199 license:lgpl3+)))) ; chirp/elib_intl.py
7f1c69f5
AI
200
201(define-public aptdec
202 (package
203 (name "aptdec")
204 (version "1.7")
205 (source
206 (origin
207 (method git-fetch)
208 (uri (git-reference
ac2fc134 209 (url "https://github.com/Xerbo/aptdec")
7f1c69f5
AI
210 (commit (string-append "v" version))))
211 (file-name (git-file-name name version))
212 (sha256
213 (base32
214 "1hf0zb51qc6fyhdjxyij1n3vgwnw3cwksc3r11szbhkml14qjnzk"))))
215 (build-system gnu-build-system)
216 (inputs
217 `(("libpng" ,libpng)
218 ("libsndfile" ,libsndfile)))
219 (arguments
319a73e7
AI
220 `(#:make-flags
221 (list
222 (string-append "CC="
223 (if ,(%current-target-system)
224 (string-append (assoc-ref %build-inputs "cross-gcc")
225 "/bin/" ,(%current-target-system) "-gcc")
226 "gcc"))
227 (string-append "PREFIX=" %output)
228 (string-append "RPM_BUILD_ROOT=" %output))
7f1c69f5
AI
229 #:tests? #f ; no tests
230 #:phases
231 (modify-phases %standard-phases
232 (delete 'configure)
233 (replace 'install
234 (lambda* (#:key outputs #:allow-other-keys)
235 (let ((out (assoc-ref outputs "out")))
236 (install-file "atpdec" (string-append out "/bin")))
237 #t)))))
ac2fc134 238 (home-page "https://github.com/Xerbo/aptdec")
7f1c69f5
AI
239 (synopsis "NOAA Automatic Picture Transmission (APT) decoder")
240 (description "Aptdec decodes Automatic Picture Transmission (APT) images.
241These are medium resolution images of the Earth transmitted by, among other
242satellites, the POES NOAA weather satellite series. These transmissions are
243on a frequency of 137 MHz. They can be received using an inexpensive antenna
244and a dedicated receiver.")
245 (license license:gpl2+)))
c4f96706
ES
246
247(define-public redsea
248 (package
249 (name "redsea")
250 (version "0.18")
251 (source (origin
252 (method git-fetch)
253 (uri (git-reference
254 (url "https://github.com/windytan/redsea")
255 (commit (string-append "v" version))))
256 (file-name (git-file-name name version))
257 (sha256
258 (base32
259 "1y96g0ra2krjb2kypm8s5gdfia45yci4f36klsvyzg8d53v5cwhn"))))
260 (build-system gnu-build-system)
261 (arguments
262 `(#:phases
263 (modify-phases %standard-phases
264 ;; The configure.ac file does not explicitly link against libiconv
265 ;; except on Mac OS, causing the build to fail. This phase comments
266 ;; out the original AC_SUBST macro (located inside a conditional) and
267 ;; adds an explicit use of it underneath, so that libiconv is always
268 ;; linked against.
269 (add-after 'unpack 'patch-libiconv
270 (lambda _
271 (substitute* "configure.ac"
272 (("^ +AC_SUBST")
273 "# AC_SUBST")
274 (("esac")
275 "esac\nAC_SUBST([ICONV], [\"-liconv\"])"))
276 #t)))))
277 (inputs
278 `(("libiconv" ,libiconv)
279 ("libsndfile" ,libsndfile)
280 ("liquid-dsp" ,liquid-dsp)))
281 (native-inputs
282 `(("autoconf" ,autoconf)
283 ("automake" ,automake)))
284 (home-page "https://github.com/windytan/redsea")
285 (synopsis "Lightweight RDS to JSON decoder")
286 (description "redsea is a lightweight command-line @dfn{FM Radio Data
287System} (FM-RDS) decoder. Redsea can be used with any RTL-SDR USB radio stick
288with the rtl_fm tool, or any other @dfn{software-defined radio} (SDR) via
289csdr, for example. It can also decode raw ASCII bitstream, the hex format
290used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
291 (license license:expat)))
d042caf6
GLV
292
293(define-public gnuradio
294 (package
295 (name "gnuradio")
08380922 296 (version "3.9.0.0")
d042caf6
GLV
297 (source
298 (origin
299 (method url-fetch)
300 (uri (string-append "https://www.gnuradio.org/releases/gnuradio/"
301 "gnuradio-" version ".tar.xz"))
302 (sha256
08380922 303 (base32 "1jvm9xd0l2pz1fww4zii6hl7ccnvy256nrf70ljb594n7j9j49ha"))))
d042caf6
GLV
304 (build-system cmake-build-system)
305 (native-inputs
306 `(("doxygen" ,doxygen)
d042caf6 307 ("ghostscript" ,ghostscript)
d3e7f1ee 308 ("js-mathjax" ,js-mathjax)
d042caf6
GLV
309 ("orc" ,orc)
310 ("pkg-config" ,pkg-config)
08380922 311 ("pybind11" ,pybind11)
d042caf6
GLV
312 ("python-cheetah" ,python-cheetah)
313 ("python-mako" ,python-mako)
314 ("python-pyzmq" ,python-pyzmq)
315 ("python-scipy" ,python-scipy)
316 ("python-sphinx" ,python-sphinx)
d042caf6
GLV
317 ("texlive" ,(texlive-union (list texlive-amsfonts
318 texlive-latex-amsmath
319 ;; TODO: Add newunicodechar.
320 texlive-latex-graphics)))
321 ("xorg-server" ,xorg-server-for-tests)))
322 (inputs
323 `(("alsa-lib" ,alsa-lib)
324 ("boost" ,boost)
325 ("cairo" ,cairo)
326 ("codec2" ,codec2)
327 ("cppzmq" ,cppzmq)
328 ("fftwf" ,fftwf)
329 ("gmp" ,gmp)
330 ("gsl" ,gsl)
331 ("gsm" ,gsm)
332 ("gtk+" ,gtk+)
333 ("jack" ,jack-1)
d3e7f1ee 334 ("libsndfile" ,libsndfile)
d042caf6
GLV
335 ("log4cpp" ,log4cpp)
336 ("pango" ,pango)
337 ("portaudio" ,portaudio)
f03e5ca5 338 ("python" ,python)
d042caf6
GLV
339 ("python-click" ,python-click)
340 ("python-click-plugins" ,python-click-plugins)
341 ("python-lxml" ,python-lxml)
342 ("python-numpy" ,python-numpy)
343 ("python-pycairo" ,python-pycairo)
344 ("python-pygobject" ,python-pygobject)
345 ("python-pyqt" ,python-pyqt)
346 ("python-pyyaml" ,python-pyyaml)
347 ("qtbase" ,qtbase)
348 ("qwt" ,qwt)
08380922 349 ("sdl" ,sdl)
8e1e86b0 350 ("volk" ,volk)
d042caf6
GLV
351 ("zeromq" ,zeromq)))
352 (arguments
353 `(#:modules ((guix build cmake-build-system)
93299e61 354 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
d042caf6 355 ((guix build python-build-system) #:prefix python:)
93299e61
GLV
356 (guix build utils)
357 (ice-9 match))
d042caf6 358 #:imported-modules (,@%cmake-build-system-modules
93299e61 359 (guix build glib-or-gtk-build-system)
d042caf6 360 (guix build python-build-system))
d3e7f1ee
GLV
361 #:configure-flags
362 (list (string-append "-DMATHJAX2_ROOT="
363 (assoc-ref %build-inputs "js-mathjax")
364 "/share/javascript/mathjax"))
d042caf6
GLV
365 #:phases
366 (modify-phases %standard-phases
367 (add-after 'unpack 'fix-paths
368 (lambda* (#:key inputs #:allow-other-keys)
369 (let ((qwt (assoc-ref inputs "qwt")))
370 (substitute* "cmake/Modules/FindQwt.cmake"
371 (("/usr/include")
372 (string-append qwt "/include"))
373 (("/usr/lib")
374 (string-append qwt "/lib"))
375 (("qwt6-\\$\\{QWT_QT_VERSION\\}")
376 "qwt")))
377 (substitute* "cmake/Modules/GrPython.cmake"
378 (("dist-packages")
379 "site-packages"))
08380922 380 (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
d042caf6
GLV
381 "gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
382 (("<codec2/")
383 "<"))
384 #t))
385 (add-before 'check 'set-test-environment
386 (lambda* (#:key inputs #:allow-other-keys)
387 (setenv "HOME" "/tmp")
388 (system (string-append (assoc-ref inputs "xorg-server")
389 "/bin/Xvfb :1 &"))
390 (setenv "DISPLAY" ":1")
391 #t))
08380922
JPS
392 (replace 'check
393 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
394 (invoke "ctest" "-j" (if parallel-tests?
395 (number->string (parallel-job-count))
396 "1")
397 "--output-on-failure"
398 ;;disable broken tests
399 "-E" (string-join
400 '(;; https://github.com/gnuradio/gnuradio/issues/3871
401 "qa_header_payload_demux"
402 ;; https://github.com/gnuradio/gnuradio/issues/4348
403 "qa_packet_headerparser_b")
404 "|"))))
d042caf6 405 (add-after 'install 'wrap-python
93299e61
GLV
406 (assoc-ref python:%standard-phases 'wrap))
407 (add-after 'wrap-python 'wrap-glib-or-gtk
408 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
409 (add-after 'wrap-glib-or-gtk 'wrap-with-GI_TYPELIB_PATH
410 (lambda* (#:key inputs outputs #:allow-other-keys)
411 (let ((out (assoc-ref outputs "out"))
412 (paths (map (match-lambda
413 ((output . directory)
414 (let ((girepodir (string-append
415 directory
416 "/lib/girepository-1.0")))
417 (if (file-exists? girepodir)
418 girepodir
419 #f))))
420 inputs)))
421 (wrap-program (string-append out "/bin/gnuradio-companion")
422 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
423 #t)))))
cf480830 424 (native-search-paths
f03e5ca5 425 ;; Variables required to find third-party plugins at runtime.
cf480830
GLV
426 (list (search-path-specification
427 (variable "GRC_BLOCKS_PATH")
f03e5ca5
GLV
428 (files '("share/gnuradio/grc/blocks")))
429 (search-path-specification
430 (variable "PYTHONPATH")
431 (files (list (string-append "lib/python"
432 (version-major+minor
433 (package-version python))
434 "/site-packages"))))))
d042caf6
GLV
435 (synopsis "Toolkit for software-defined radios")
436 (description
437 "GNU Radio is a development toolkit that provides signal processing blocks
438to implement software radios. It can be used with external RF hardware to
439create software-defined radios, or without hardware in a simulation-like
440environment.")
441 (home-page "https://www.gnuradio.org")
442 (license license:gpl3+)))
aa862c2c
GLV
443
444(define-public gnuradio-osmosdr
f1df1192
GLV
445 ;; No tag for version supporting Gnuradio 3.9; use commit.
446 (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
447 (revision "0"))
448 (package
449 (name "gnuradio-osmosdr")
450 (version (git-version "0.2.3" revision commit))
451 (source
452 (origin
453 (method git-fetch)
454 (uri (git-reference
455 (url "https://git.osmocom.org/gr-osmosdr")
456 (commit commit)))
457 (file-name (git-file-name name version))
458 (sha256
459 (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
460 (build-system cmake-build-system)
461 (native-inputs
462 `(("doxygen" ,doxygen)
463 ("pkg-config" ,pkg-config)
464 ("pybind11" ,pybind11)
465 ("python" ,python)
466 ("python-mako" ,python-mako)
467 ("python-six" ,python-six)))
468 (inputs
469 `(("boost" ,boost)
470 ("fftwf" ,fftwf)
471 ("gmp" ,gmp)
472 ("gnuradio" ,gnuradio)
473 ("hackrf" ,hackrf)
474 ("libsndfile" ,libsndfile)
475 ("log4cpp" ,log4cpp)
476 ("rtl-sdr" ,rtl-sdr)
477 ("volk" ,volk)))
478 (synopsis "GNU Radio block for interfacing with various radio hardware")
479 (description "This is a block for GNU Radio allowing to use a common API
aa862c2c 480to access different radio hardware.")
f1df1192
GLV
481 (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
482 (license license:gpl3+))))
bc94b75d
GLV
483
484(define-public libosmo-dsp
485 (package
486 (name "libosmo-dsp")
487 (version "0.4.0")
488 (source
489 (origin
490 (method git-fetch)
491 (uri (git-reference
492 (url "https://git.osmocom.org/libosmo-dsp")
493 (commit version)))
494 (file-name (git-file-name name version))
495 (sha256
496 (base32 "00plihnpym1gkfpflah8il9463qxzm9kx2f07jyvbkszpj8viq5g"))))
497 (build-system gnu-build-system)
498 (native-inputs
499 `(("autoconf" ,autoconf)
500 ("automake" ,automake)
501 ("bash-minimal" ,bash-minimal)
502 ("doxygen" ,doxygen)
bc94b75d
GLV
503 ("libtool" ,libtool)
504 ("pkg-config" ,pkg-config)
505 ("texlive" ,(texlive-union (list texlive-amsfonts
506 texlive-latex-amsmath
507 ;; TODO: Add newunicodechar.
508 texlive-latex-graphics)))))
509 (inputs
510 `(("fftwf" ,fftwf)))
511 (arguments
512 `(#:phases
513 (modify-phases %standard-phases
514 (add-after 'unpack 'fix-paths
515 (lambda* (#:key inputs #:allow-other-keys)
516 (substitute* "git-version-gen"
517 (("/bin/sh")
518 (string-append (assoc-ref inputs "bash")
519 "/bin/bash")))
520 #t)))))
521 (synopsis "DSP primitives for SDR")
522 (description
523 "This a C-language library for common DSP (Digital Signal Processing)
524primitives for SDR (Software Defined Radio).")
525 (home-page "https://osmocom.org/projects/libosmo-dsp")
526 (license license:gpl2+)))
77dc12a8
GLV
527
528(define-public gnuradio-iqbalance
50e33007
GLV
529 ;; No tag for version supporting Gnuradio 3.9; use commit.
530 (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
531 (revision "0"))
532 (package
533 (name "gnuradio-iqbalance")
534 (version (git-version "0.38.2" revision commit))
535 (source
536 (origin
537 (method git-fetch)
538 (uri (git-reference
539 (url "https://git.osmocom.org/gr-iqbal")
540 (commit commit)))
541 (file-name (git-file-name name version))
542 (sha256
543 (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
544 (build-system cmake-build-system)
545 (native-inputs
546 `(("doxygen" ,doxygen)
547 ("pkg-config" ,pkg-config)
548 ("pybind11" ,pybind11)
549 ("python" ,python)
550 ("python-numpy" ,python-numpy)
551 ("python-six" ,python-six)))
552 (inputs
553 `(("boost" ,boost)
554 ("fftwf" ,fftwf)
555 ("gmp" ,gmp)
556 ("gnuradio" ,gnuradio)
557 ("libosmo-dsp" ,libosmo-dsp)
558 ("log4cpp" ,log4cpp)
559 ("volk" ,volk)))
560 (synopsis "GNU Radio block to correct IQ imbalance")
561 (description
77dc12a8
GLV
562 "This is a GNU Radio block to correct IQ imbalance in quadrature
563receivers. It's composed of two main block:
564@itemize
565@item Fix: Given a phase and amplitude error, it will correct a complex signal.
566@item Optimize: Attempts to auto-detect the phase and amplitude error to feed
567to the fix block above.
568@end itemize")
50e33007
GLV
569 (home-page "https://git.osmocom.org/gr-iqbal/")
570 (license license:gpl3+))))
f76ac21c
GLV
571
572(define-public gqrx
573 (package
574 (name "gqrx")
9b97f39f 575 (version "2.14.4")
f76ac21c
GLV
576 (source
577 (origin
578 (method git-fetch)
579 (uri (git-reference
b0e7b699 580 (url "https://github.com/csete/gqrx")
f76ac21c
GLV
581 (commit (string-append "v" version))))
582 (file-name (git-file-name name version))
583 (sha256
9b97f39f 584 (base32 "0m4ncydihz4n4i80c252vk3c5v672yab1jv85n6ndn7a92xv3ilq"))))
f76ac21c
GLV
585 (build-system qt-build-system)
586 (native-inputs
587 `(("pkg-config" ,pkg-config)))
588 (inputs
589 `(("alsa-lib" ,alsa-lib)
590 ("boost" ,boost)
591 ("fftwf" ,fftwf)
592 ("gmp" ,gmp)
593 ("gnuradio" ,gnuradio)
594 ("gnuradio-iqbalance" ,gnuradio-iqbalance)
595 ("gnuradio-osmosdr" ,gnuradio-osmosdr)
596 ("jack" ,jack-1)
da80d4e6 597 ("libsndfile" ,libsndfile)
f76ac21c
GLV
598 ("log4cpp" ,log4cpp)
599 ("portaudio" ,portaudio)
600 ("pulseaudio" ,pulseaudio)
601 ("qtbase" ,qtbase)
01e62a02
GLV
602 ("qtsvg" ,qtsvg)
603 ("volk" ,volk)))
f76ac21c 604 (arguments
a79fd1c2 605 `(#:tests? #f)) ; no tests
f76ac21c
GLV
606 (synopsis "Software defined radio receiver")
607 (description "Gqrx is a software defined radio (SDR) receiver implemented
608using GNU Radio and the Qt GUI toolkit.")
609 (home-page "https://gqrx.dk/")
610 (license license:gpl3+)))
72f6ee0e
GLV
611
612(define-public fldigi
613 (package
614 (name "fldigi")
512459f6 615 (version "4.1.18")
72f6ee0e
GLV
616 (source
617 (origin
65e9f131
GLV
618 (method git-fetch)
619 (uri (git-reference
620 (url "https://git.code.sf.net/p/fldigi/fldigi")
621 (commit (string-append "v" version))))
622 (file-name (git-file-name name version))
72f6ee0e 623 (sha256
512459f6 624 (base32 "177qnl1bxy46rqwdxizfy2i3mxk5bzz733cp445rfzl7b6yf6zrn"))))
72f6ee0e
GLV
625 (build-system gnu-build-system)
626 (native-inputs
65e9f131
GLV
627 `(("autoconf" ,autoconf)
628 ("automake" ,automake)
629 ("gettext" ,gettext-minimal)
630 ("pkg-config" ,pkg-config)))
72f6ee0e
GLV
631 (inputs
632 `(("alsa-lib" ,alsa-lib)
633 ("fltk" ,fltk)
e6d14165 634 ("hamlib" ,hamlib)
72f6ee0e
GLV
635 ("libpng" ,libpng)
636 ("libsamplerate" ,libsamplerate)
e6d14165 637 ("libusb" ,libusb)
72f6ee0e
GLV
638 ("libx11" ,libx11)
639 ("libxext" ,libxext)
640 ("libxfixes" ,libxfixes)
641 ("libxft" ,libxft)
642 ("portaudio" ,portaudio)
643 ("pulseaudio" ,pulseaudio)))
644 (synopsis "Software modem for amateur radio use")
645 (description
646 "Fldigi is a software modem for amateur radio use. It is a sound card
647based program that is used for both transmitting and receiving data by
648connecting the microphone and headphone connections of a computer to some radio
649hardware.")
650 (home-page "http://www.w1hkj.com/")
651 (license license:gpl3+)))
8080c03d
GLV
652
653(define-public flrig
654 (package
655 (name "flrig")
3d2989d0 656 (version "1.3.52")
8080c03d
GLV
657 (source
658 (origin
9e549633
GLV
659 (method git-fetch)
660 (uri (git-reference
661 (url "https://git.code.sf.net/p/fldigi/flrig")
662 (commit (string-append "v" version))))
663 (file-name (git-file-name name version))
8080c03d 664 (sha256
9e549633 665 (base32 "0vxn1wy5b2zfq20k93rfgq34m1nd3mxd74h8l98f90d85fhcqggy"))))
8080c03d
GLV
666 (build-system gnu-build-system)
667 (native-inputs
9e549633
GLV
668 `(("autoconf" ,autoconf)
669 ("automake" ,automake)
670 ("pkg-config" ,pkg-config)))
8080c03d
GLV
671 (inputs
672 `(("fltk" ,fltk)
673 ("libx11" ,libx11)
674 ("libxext" ,libxext)
675 ("libxfixes" ,libxfixes)
676 ("libxft" ,libxft)))
677 (synopsis "Radio transceiver control program")
678 (description
679 "Flrig is a transceiver control program for amateur radio use.
680It provides computer aided control of various radios using a serial
681or USB connection.")
682 (home-page "http://www.w1hkj.com/")
683 (license license:gpl3+)))
660912a4
GLV
684
685(define-public flamp
686 (package
687 (name "flamp")
688 (version "2.2.05")
689 (source
690 (origin
224582c5
GLV
691 (method git-fetch)
692 (uri (git-reference
693 (url "https://git.code.sf.net/p/fldigi/flamp")
694 (commit (string-append "v" version))))
695 (file-name (git-file-name name version))
660912a4 696 (sha256
224582c5 697 (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq"))))
660912a4
GLV
698 (build-system gnu-build-system)
699 (native-inputs
224582c5
GLV
700 `(("autoconf" ,autoconf)
701 ("automake" ,automake)
702 ("pkg-config" ,pkg-config)))
660912a4
GLV
703 (inputs
704 `(("fltk" ,fltk)
705 ("libx11" ,libx11)
706 ("libxext" ,libxext)
707 ("libxfixes" ,libxfixes)
708 ("libxft" ,libxft)))
709 (synopsis "Tool for AMP file transfer")
710 (description
3a888b41 711 "FLAMP is a program for transferring files by radio waves using AMP
660912a4
GLV
712(Amateur Multicast Protocol).")
713 (home-page "http://www.w1hkj.com/")
714 (license license:gpl3+)))
90ec7085
GLV
715
716(define-public flwrap
717 (package
718 (name "flwrap")
719 (version "1.3.5")
720 (source
721 (origin
689b525d
GLV
722 (method git-fetch)
723 (uri (git-reference
724 (url "https://git.code.sf.net/p/fldigi/flwrap")
725 (commit (string-append "v" version))))
726 (file-name (git-file-name name version))
90ec7085 727 (sha256
689b525d 728 (base32 "0xkhr82smfr7wpb9xl05wf7bz3vi2mr4xkcr2s8v6mblhgsdhqwg"))))
90ec7085
GLV
729 (build-system gnu-build-system)
730 (native-inputs
689b525d
GLV
731 `(("autoconf" ,autoconf)
732 ("automake" ,automake)
733 ("pkg-config" ,pkg-config)))
90ec7085
GLV
734 (inputs
735 `(("fltk" ,fltk)
736 ("libx11" ,libx11)
737 ("libxext" ,libxext)
738 ("libxfixes" ,libxfixes)
739 ("libxft" ,libxft)))
740 (synopsis "File encapsulation program")
741 (description
742 "Flwrap is a software utility for amateur radio use. Its purpose is to
743encapsulate both text and binary files in a way that allows them to be
744transmitted over any of several digital modes and verified at the receipt end
745for correctness.")
746 (home-page "http://www.w1hkj.com/")
747 (license license:gpl3+)))
409dfdf0 748
79c4fb4f
CH
749(define-public hackrf
750 ;; Using a git commit because there have been many many commits
751 ;; since the relase two years ago, but no sign of a promised
752 ;; release for many months now.
753 (let ((commit "43e6f99fe8543094d18ff3a6550ed2066c398862")
754 (revision "0"))
755 (package
756 (name "hackrf")
757 (version (git-version "2018.01.1" revision commit))
758 (source
759 (origin
760 (method git-fetch)
761 (uri (git-reference
b0e7b699 762 (url "https://github.com/mossmann/hackrf")
79c4fb4f
CH
763 (commit commit)))
764 (file-name (git-file-name name version))
765 (sha256
766 (base32 "0avnv693xi0zsnrvkbfn0ln1r3s1iyj0bz7sc3gxay909av0pvbc"))))
767 (build-system cmake-build-system)
768 (arguments
769 '(#:configure-flags
770 (list "-DUDEV_RULES_GROUP=dialout"
771 (string-append "-DUDEV_RULES_PATH="
772 (assoc-ref %outputs "out")
773 "/lib/udev/rules.d"))
774 #:phases
775 (modify-phases %standard-phases
776 (add-before 'configure 'enter-source-directory
777 (lambda _
778 (chdir "host")
779 #t))
780 (add-after 'install 'delete-static-library
781 (lambda* (#:key outputs #:allow-other-keys)
782 (delete-file (string-append (assoc-ref outputs "out")
783 "/lib/libhackrf.a"))
784 #t))
785 (add-before 'install-license-files 'leave-source-directory
786 (lambda _
787 (chdir "..")
788 #t)))
789 #:tests? #f)) ; no test suite
790 (native-inputs
791 `(("pkg-config" ,pkg-config)))
792 (inputs
793 `(("fftw" ,fftw)
794 ("fftwf" ,fftwf)
795 ("libusb" ,libusb)))
796 (home-page "https://greatscottgadgets.com/hackrf/")
797 (synopsis "User-space library and utilities for HackRF SDR")
798 (description
799 "Command line utilities and a C library for controlling the HackRF
32290b2c
BW
800Software Defined Radio (SDR) over USB. Installing this package installs the
801userspace hackrf utilities and C library. To install the hackrf udev rules,
802you must extend 'udev-service-type' with this package. E.g.:
803@code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
79c4fb4f
CH
804 (license license:gpl2))))
805
409dfdf0
GLV
806(define-public hamlib
807 (package
808 (name "hamlib")
c9d42d61 809 (version "4.1")
409dfdf0
GLV
810 (source
811 (origin
812 (method url-fetch)
813 (uri (string-append
814 "https://github.com/Hamlib/Hamlib/releases/download/"
815 version "/hamlib-" version ".tar.gz"))
816 (sha256
c9d42d61 817 (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
409dfdf0
GLV
818 (build-system gnu-build-system)
819 (native-inputs
820 `(("doxygen" ,doxygen)
821 ("lua" ,lua)
822 ("pkg-config" ,pkg-config)
823 ("python-wrapper" ,python-wrapper)
824 ("swig" ,swig)
825 ("tcl" ,tcl)))
826 (inputs
827 `(("gd" ,gd)
828 ("libusb" ,libusb)
829 ("libxml2" ,libxml2)
830 ("readline" ,readline)))
831 (arguments
832 `(#:configure-flags '("--disable-static"
833 "--with-lua-binding"
834 "--with-python-binding"
835 "--with-tcl-binding"
836 "--with-xml-support")))
837 (synopsis "Tools and API to control radios")
838 (description
839 "The Ham Radio Control Library (Hamlib) is a project to provide programs
840with a consistent Application Programming Interface (API) for controlling the
841myriad of radios and rotators available to amateur radio and communications
842users.")
843 (home-page "https://hamlib.github.io/")
844 (license (list license:gpl2+ license:lgpl2.1+))))
5a915632
GLV
845
846(define wsjtx-hamlib
847 ;; Fork of hamlib with custom patches used by wsjtx.
848 (package
849 (inherit hamlib)
850 (name "wsjtx-hamlib")
9aaeb9bd 851 (version "2.3.1")
5a915632
GLV
852 (source
853 (origin
854 (method git-fetch)
855 (uri (git-reference
856 (url "https://git.code.sf.net/u/bsomervi/hamlib.git")
857 (commit (string-append "wsjtx-" version))))
858 (file-name (git-file-name name version))
859 (sha256
9aaeb9bd 860 (base32 "0m4yzjcqs7a1w4lghyyckpkiy96jxdjijddxarqr3a37cl2rz23j"))))
5a915632
GLV
861 (native-inputs
862 `(("autoconf" ,autoconf)
863 ("automake" ,automake)
864 ("libtool" ,libtool)
865 ("texinfo" ,texinfo)
09e27115
GLV
866 ,@(package-native-inputs hamlib)))
867 (arguments
868 `(#:configure-flags '("--disable-static"
869 "--with-lua-binding"
870 "--with-python-binding"
871 "--with-tcl-binding"
9aaeb9bd 872 "--with-xml-support")))))
5a915632
GLV
873
874(define-public wsjtx
875 (package
876 (name "wsjtx")
92dfa92d 877 (version "2.3.1")
5a915632
GLV
878 (source
879 (origin
880 (method git-fetch)
881 (uri (git-reference
882 (url "https://git.code.sf.net/p/wsjt/wsjtx.git")
883 (commit (string-append "wsjtx-" version))))
884 (file-name (git-file-name name version))
885 (sha256
92dfa92d 886 (base32 "0mdr4l7zii08615yn7z91spnvnqm5i9390bra9lz3aqyxrsiim91"))))
5a915632
GLV
887 (build-system qt-build-system)
888 (native-inputs
889 `(("asciidoc" ,asciidoc)
890 ("gfortran" ,gfortran)
891 ("pkg-config" ,pkg-config)
892 ("qttools" ,qttools)
893 ("ruby-asciidoctor" ,ruby-asciidoctor)))
894 (inputs
895 `(("boost" ,boost)
896 ("fftw" ,fftw)
897 ("fftwf" ,fftwf)
898 ("hamlib" ,wsjtx-hamlib)
899 ("libusb" ,libusb)
900 ("qtbase" ,qtbase)
901 ("qtmultimedia" ,qtmultimedia)
902 ("qtserialport" ,qtserialport)))
903 (arguments
b79794a7
GLV
904 `(#:tests? #f ; No test suite
905 #:phases
906 (modify-phases %standard-phases
907 (add-after 'unpack 'work-around-runtime-bug
908 (lambda _
909 ;; Some of the programs in this package fail to find symbols
910 ;; in libm at runtime. Adding libm manually at the end of the
911 ;; library lists when linking the programs seems to help.
912 ;; TODO: find exactly what is wrong in the way the programs
913 ;; are built.
914 (substitute* "CMakeLists.txt"
915 (("target_link_libraries \\((.*)\\)" all libs)
916 (string-append "target_link_libraries (" libs " m)")))
917 #t)))))
5a915632
GLV
918 (synopsis "Weak-signal ham radio communication program")
919 (description
920 "WSJT-X implements communication protocols or modes called FT4, FT8,
921JT4, JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
922detecting and measuring your own radio signals reflected from the Moon. These
923modes were all designed for making reliable, confirmed QSOs under extreme
924weak-signal conditions.")
925 (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html")
926 (license license:gpl3)))
f93eebbf 927
8a294ece
GLV
928(define-public js8call
929 (package
930 (inherit wsjtx)
931 (name "js8call")
b8fe812f 932 (version "2.2.0")
8a294ece
GLV
933 (source
934 (origin
935 (method url-fetch)
936 (uri (string-append "http://files.js8call.com/" version
937 "/js8call-" version ".tgz"))
938 (sha256
b8fe812f 939 (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
8a294ece
GLV
940 (modules '((guix build utils)))
941 (snippet
942 '(begin
943 ;; Delete bundled boost to use the shared one.
944 (delete-file-recursively "boost")
945 #t))))
946 (build-system qt-build-system)
947 (native-inputs
948 `(("asciidoc" ,asciidoc)
949 ("gfortran" ,gfortran)
950 ("pkg-config" ,pkg-config)
951 ("qttools" ,qttools)
952 ("ruby-asciidoctor" ,ruby-asciidoctor)))
953 (inputs
954 `(("boost" ,boost)
955 ("fftw" ,fftw)
956 ("fftwf" ,fftwf)
b8fe812f 957 ("hamlib" ,wsjtx-hamlib)
8a294ece
GLV
958 ("libusb" ,libusb)
959 ("qtbase" ,qtbase)
960 ("qtmultimedia" ,qtmultimedia)
961 ("qtserialport" ,qtserialport)))
962 (arguments
963 `(#:tests? #f ; No test suite
964 #:phases
965 (modify-phases %standard-phases
966 (add-after 'unpack 'fix-paths
967 (lambda* (#:key outputs #:allow-other-keys)
968 (substitute* "CMakeLists.txt"
969 (("DESTINATION /usr/share")
970 (string-append "DESTINATION "
971 (assoc-ref outputs "out")
972 "/share")))
973 #t))
ac4847eb
GLV
974 (add-after 'fix-paths 'work-around-runtime-bug
975 (lambda _
976 ;; Some of the programs in this package fail to find symbols
977 ;; in libm at runtime. Adding libm manually at the end of the
978 ;; library lists when linking the programs seems to help.
979 ;; TODO: find exactly what is wrong in the way the programs
980 ;; are built.
981 (substitute* "CMakeLists.txt"
982 (("target_link_libraries \\((.*)\\)" all libs)
983 (string-append "target_link_libraries (" libs " m)")))
984 #t))
8a294ece
GLV
985 (add-after 'unpack 'fix-hamlib
986 (lambda _
987 (substitute* "CMake/Modules/Findhamlib.cmake"
988 (("set \\(ENV\\{PKG_CONFIG_PATH\\}.*\\)")
989 "set (__pc_path $ENV{PKG_CONFIG_PATH})
990 list (APPEND __pc_path \"${__hamlib_pc_path}\")
991 set (ENV{PKG_CONFIG_PATH} \"${__pc_path}\")"))
992 (substitute* "HamlibTransceiver.hpp"
993 (("#ifdef JS8_USE_LEGACY_HAMLIB")
994 "#if 1"))
995 #t)))))
996 (synopsis "Weak-signal ham radio communication program")
997 (description
998 "JS8Call is a software using the JS8 digital mode (a derivative of the FT8
999mode) providing weak signal keyboard to keyboard messaging to amateur radio
1000operators.")
1001 (home-page "http://js8call.com/")
1002 (license license:gpl3)))
1003
f93eebbf
GLV
1004(define-public xnec2c
1005 (package
1006 (name "xnec2c")
1007 (version "4.1.1")
1008 (source
1009 (origin
1010 (method url-fetch)
1011 (uri (string-append "http://www.5b4az.org/pkg/nec2/xnec2c/xnec2c-"
1012 version ".tar.bz2"))
1013 (sha256
1014 (base32 "1myvlkfybb2ha8l0h96ca3iz206zzy9z5iizm0sbab2zzp78n1r9"))))
1015 (build-system gnu-build-system)
1016 (native-inputs
1017 `(("pkg-config" ,pkg-config)))
1018 (inputs
1019 `(("gtk+" ,gtk+)))
1020 (arguments
1021 `(#:phases
1022 (modify-phases %standard-phases
1023 (add-after 'unpack 'fix-makefile
1024 (lambda* (#:key outputs #:allow-other-keys)
1025 (substitute* '("Makefile.am" "Makefile.in")
1026 ;; The DESTDIR variable does not get replaced the prefix
1027 ;; in the final Makefile, so let's do here.
1028 (("\\$\\(DESTDIR\\)/usr")
1029 (assoc-ref outputs "out")))
1030 #t))
1031 (add-after 'fix-makefile 'fix-paths
1032 (lambda* (#:key outputs #:allow-other-keys)
1033 ;; Increase the max length of the path to the glade file,
1034 ;; so that the '/gnu/store/...' path can fit in.
1035 (substitute* '("src/shared.c" "src/shared.h")
1036 (("char xnec2c_glade\\[64\\];")
1037 "char xnec2c_glade[256];"))
1038 ;; Fix hard coded references to '/usr/...'.
1039 (substitute* '("src/geom_edit.c" "src/main.c")
1040 (("\"/usr")
1041 (string-append "\"" (assoc-ref outputs "out"))))
1042 #t)))))
1043 (synopsis "Antenna modeling software")
1044 (description
1045 "Xnec2c is a GTK3-based graphical version of nec2c, a translation to the
1046C language of NEC2, the FORTRAN Numerical Electromagnetics Code commonly used
1047for antenna simulation and analysis. It can be used to define the geometry of
1048an antenna, and then plot the radiation pattern or frequency-related data like
1049gain and standing wave ratio.")
1050 (home-page "http://www.5b4az.org/")
1051 (license license:gpl3+)))
4fca1bc5
GLV
1052
1053(define-public dump1090
1054 (package
1055 (name "dump1090")
552e9fc1 1056 (version "4.0")
4fca1bc5
GLV
1057 (source
1058 (origin
1059 (method git-fetch)
1060 (uri (git-reference
b0e7b699 1061 (url "https://github.com/flightaware/dump1090")
4fca1bc5
GLV
1062 (commit (string-append "v" version))))
1063 (file-name (git-file-name name version))
1064 (sha256
552e9fc1 1065 (base32 "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"))))
4fca1bc5
GLV
1066 (build-system gnu-build-system)
1067 (native-inputs
1068 `(("pkg-config" ,pkg-config)))
1069 (inputs
1070 `(("libusb" ,libusb)
1071 ("ncurses" ,ncurses)
1072 ("rtl-sdr" ,rtl-sdr)))
1073 (arguments
1074 `(#:test-target "test"
19e8a754 1075 #:make-flags
1ca44ae3
MB
1076 (list (string-append "CC=" ,(cc-for-target))
1077 "BLADERF=no")
4fca1bc5
GLV
1078 #:phases
1079 (modify-phases %standard-phases
19e8a754 1080 (delete 'configure)
4fca1bc5
GLV
1081 (replace 'install
1082 (lambda* (#:key outputs #:allow-other-keys)
1083 (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
1084 (install-file "dump1090" bin)
1085 (install-file "view1090" bin)
1086 #t))))))
1087 (synopsis "Mode S decoder for rtl-sdr devices")
1088 (description
1089 "Dump1090 is a Mode S decoder specifically designed for rtl-sdr devices.
1090It can be used to decode the ADS-B signals that planes emit to indicate
1091their position, altitude, speed, etc.")
1092 (home-page "https://github.com/flightaware/dump1090")
bcf83975 1093 (license license:gpl2+)))
232f2d26
GLV
1094
1095(define-public rtl-433
1096 (package
1097 (name "rtl-433")
17544394 1098 (version "20.11")
232f2d26
GLV
1099 (source
1100 (origin
1101 (method git-fetch)
1102 (uri (git-reference
b0e7b699 1103 (url "https://github.com/merbanan/rtl_433")
232f2d26
GLV
1104 (commit version)))
1105 (file-name (git-file-name name version))
1106 (sha256
17544394 1107 (base32 "093bxjxkg7yf78wqj5gpijbfa2p05ny09qqsj84kzi1svnzsa369"))))
232f2d26
GLV
1108 (build-system cmake-build-system)
1109 (native-inputs
1110 `(("pkg-config" ,pkg-config)))
1111 (inputs
1112 `(("libusb" ,libusb)
1113 ("rtl-sdr" ,rtl-sdr)))
1114 (synopsis "Decoder for radio transmissions in ISM bands")
1115 (description
1116 "This is a generic data receiver, mainly for decoding radio transmissions
1117from devices on the 433 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz ISM bands.")
1118 (home-page "https://github.com/merbanan/rtl_433")
1119 (license license:gpl2+)))
8fdd0da4
GLV
1120
1121(define-public multimon-ng
1122 (package
1123 (name "multimon-ng")
2606d947 1124 (version "1.1.9")
8fdd0da4
GLV
1125 (source
1126 (origin
1127 (method git-fetch)
1128 (uri (git-reference
b0e7b699 1129 (url "https://github.com/EliasOenal/multimon-ng")
8fdd0da4
GLV
1130 (commit version)))
1131 (file-name (git-file-name name version))
1132 (sha256
2606d947 1133 (base32 "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"))))
8fdd0da4
GLV
1134 (build-system cmake-build-system)
1135 (inputs
1136 `(("libx11" ,libx11)
1137 ("pulseaudio" ,pulseaudio)))
1138 (arguments
2606d947 1139 '(#:tests? #f)) ; no test suite
8fdd0da4
GLV
1140 (home-page "https://github.com/EliasOenal/multimon-ng")
1141 (synopsis "Decoder for digital radio transmission modes")
1142 (description "Multimon-ng can decode several digital radio transmission
1143modes:
1144@itemize
1145@item POCSAG512, POCSAG1200, POCSAG2400
1146@item FLEX
1147@item EAS
1148@item UFSK1200, CLIPFSK, AFSK1200, AFSK2400, AFSK2400_2, AFSK2400_3
1149@item HAPN4800
1150@item FSK9600
1151@item DTMF
1152@item ZVEI1, ZVEI2, ZVEI3, DZVEI, PZVEI
1153@item EEA, EIA, CCIR
1154@item MORSE CW
1155@item X10
1156@end itemize")
1157 (license license:gpl2+)))
0288e217
GLV
1158
1159(define-public nanovna-saver
1160 (package
1161 (name "nanovna-saver")
1162 (version "0.3.8")
1163 (source
1164 (origin
1165 (method git-fetch)
1166 (uri (git-reference
1167 (url "https://github.com/NanoVNA-Saver/nanovna-saver")
1168 (commit (string-append "v" version))))
1169 (file-name (git-file-name name version))
1170 (sha256
1171 (base32 "0z83rwpnbbs1n74mx8dgh1d1crp90mannj9vfy161dmy4wzc5kpv"))))
1172 (build-system python-build-system)
1173 (native-inputs
1174 `(("python-cython" ,python-cython)))
1175 (inputs
1176 `(("python-numpy" ,python-numpy)
1177 ("python-pyqt" ,python-pyqt)
1178 ("python-pyserial" ,python-pyserial)
1179 ("python-scipy" ,python-scipy)))
1180 (arguments
1181 '(#:tests? #f))
1182 (home-page "https://github.com/NanoVNA-Saver/nanovna-saver")
1183 (synopsis "GUI for NanoVNA devices")
1184 (description
1185 "NanoVNA-Saver is a tool for reading, displaying and saving data from the
1186NanoVNA vector network analyzers.")
1187 (license license:gpl3+)))
aee72ed1
GLV
1188
1189(define-public qsstv
1190 (package
1191 (name "qsstv")
1192 (version "9.4.4")
1193 (source
1194 (origin
1195 (method url-fetch)
1196 (uri (string-append "http://users.telenet.be/on4qz/qsstv/downloads/"
1197 "qsstv_" version ".tar.gz"))
1198 (sha256
1199 (base32 "0f9hx6sy418cb23fadll298pqbc5l2lxsdivi4vgqbkvx7sw58zi"))))
1200 (build-system qt-build-system)
1201 (native-inputs
1202 `(("pkg-config" ,pkg-config)))
1203 (inputs
1204 `(("alsa-lib" ,alsa-lib)
1205 ("fftw" ,fftw)
1206 ("fftwf" ,fftwf)
1207 ("hamlib" ,hamlib)
1208 ("openjpeg" ,openjpeg)
1209 ("pulseaudio" ,pulseaudio)
1210 ("qtbase" ,qtbase)
1211 ("v4l-utils" ,v4l-utils)))
1212 (arguments
1213 `(#:tests? #f ; No test suite.
1214 #:phases
1215 (modify-phases %standard-phases
1216 (replace 'configure
1217 (lambda* (#:key outputs #:allow-other-keys)
1218 (invoke "qmake"
1219 (string-append "PREFIX=" (assoc-ref outputs "out")))
1220 #t)))))
1221 (home-page "http://users.telenet.be/on4qz/qsstv/")
1222 (synopsis "Program for receiving and transmitting SSTV and HAMDRM")
1223 (description
1224 "QSSTV is a program for receiving and transmitting SSTV and HAMDRM
1225(sometimes called DSSTV). It is compatible with most of MMSSTV and EasyPal.")
1226 (license (list license:gpl2+
1227 license:qwt1.0))))
e6034e3c
GLV
1228
1229(define-public direwolf
1230 (package
1231 (name "direwolf")
1232 (version "1.6")
1233 (source
1234 (origin
1235 (method git-fetch)
1236 (uri (git-reference
1237 (url "https://github.com/wb2osz/direwolf")
1238 (commit version)))
1239 (file-name (git-file-name name version))
1240 (sha256
1241 (base32 "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"))))
1242 (build-system cmake-build-system)
1243 (inputs
1244 `(("alsa-lib" ,alsa-lib)
1245 ("hamlib" ,hamlib)))
1246 (arguments
1247 `(#:phases
1248 (modify-phases %standard-phases
1249 (add-after 'unpack 'fix-paths
1250 (lambda* (#:key outputs #:allow-other-keys)
1251 (substitute* "conf/CMakeLists.txt"
1252 (("DESTINATION /etc")
1253 (string-append "DESTINATION "
1254 (assoc-ref outputs "out")
1255 "/etc"))))))))
1256 (home-page "https://github.com/wb2osz/direwolf")
1257 (synopsis "TNC for Amateur Packet Radio")
1258 (description
1259 "Dire Wolf is a Terminal Node Controller (TNC) for Amateur Packet Radio.
1260It can perform as:
1261@itemize
1262@item APRS GPS tracker,
1263@item Digipeater,
1264@item Internet gateway (IGate)
1265@item APRStt gateway
1266@end itemize\n")
1267 (license license:gpl2+)))
e212f32d
GLV
1268
1269(define-public aldo
1270 (package
1271 (name "aldo")
1272 (version "0.7.7")
1273 (source
1274 (origin
1275 (method url-fetch)
1276 (uri (string-append "mirror://savannah/aldo/aldo-" version ".tar.bz2"))
1277 (sha256
1278 (base32 "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i"))))
1279 (build-system gnu-build-system)
1280 (inputs
1281 `(("ao" ,ao)))
1282 (home-page "https://www.nongnu.org/aldo/")
1283 (synopsis "Morse code tutor")
1284 (description
1285 "Aldo is a morse code learning tool providing four type of training
1286methods:
1287
1288@itemize
1289@item Classic exercice,
1290@item Koch method,
1291@item Read from file,
1292@item Callsign exercice.
1293@end itemize\n")
1294 (license license:gpl3+)))
b8e71b39
GLV
1295
1296(define-public unixcw
1297 (package
1298 (name "unixcw")
1299 (version "3.6.0")
1300 (source
1301 (origin
1302 (method url-fetch)
1303 (uri (string-append "mirror://sourceforge/unixcw/unixcw-"
1304 version ".tar.gz"))
1305 (sha256
1306 (base32 "15wriwv91583kmmyijbzam3dpclzmg4qjyfzjv5f75x9b0gqabxm"))))
1307 (build-system gnu-build-system)
1308 (native-inputs
1309 `(("pkg-config" ,pkg-config)))
1310 (inputs
1311 `(("alsa-lib" ,alsa-lib)
1312 ("ncurses" ,ncurses)
1313 ("pulseaudio" ,pulseaudio)
1314 ("qtbase" ,qtbase)))
1315 (arguments
1316 `(#:configure-flags '("--disable-static")
1317 #:phases
1318 (modify-phases %standard-phases
1319 (add-after 'unpack 'fix-paths
1320 (lambda* (#:key inputs #:allow-other-keys)
1321 (substitute* '("configure"
1322 "src/config.h.in"
1323 "src/cwcp/Makefile.am"
1324 "src/cwcp/Makefile.in")
1325 (("-lcurses")
1326 "-lncurses"))
1327 (substitute* "src/libcw/libcw_pa.c"
1328 (("libpulse-simple.so" all)
1329 (string-append (assoc-ref inputs "pulseaudio")
1330 "/lib/" all))))))))
1331 (home-page "http://unixcw.sourceforge.net/")
1332 (synopsis "Morse code library and programs")
1333 (description
1334 "@code{unixcw} is a project providing the libcw library and a set of
1335programs using the library: cw, cwgen, cwcp and xcwcp. The programs are
1336intended for people who want to learn receiving and sending morse code.")
1337 (license license:gpl2+)))
a56b331e
GLV
1338
1339(define-public gnuais
1340 (package
1341 (name "gnuais")
1342 (version "0.3.3")
1343 (source
1344 (origin
1345 (method git-fetch)
1346 (uri (git-reference
1347 (url "https://github.com/rubund/gnuais")
1348 (commit version)))
1349 (file-name (git-file-name name version))
1350 (sha256
1351 (base32 "1rik5fdfslszdn3yvj769jzmnv9pirzf76ki33bjjzk7nkabbnlm"))))
1352 (build-system cmake-build-system)
1353 (native-inputs
1354 `(("mariadb-dev" ,mariadb "dev")
1355 ("pkg-config" ,pkg-config)))
1356 (inputs
1357 `(("alsa-lib" ,alsa-lib)
1358 ("curl" ,curl)
1359 ("gtk+" ,gtk+)
1360 ("libsoup" ,libsoup-minimal)
1361 ("mariadb-lib" ,mariadb "lib")
1362 ("osm-gps-map" ,osm-gps-map)
1363 ("pulseaudio" ,pulseaudio)))
1364 (arguments
1365 `(#:tests? #f ; No test suite
1366 #:phases
1367 (modify-phases %standard-phases
1368 (add-after 'unpack 'fix-paths
1369 (lambda* (#:key outputs #:allow-other-keys)
1370 (substitute* "src/cfgfile.c"
1371 (("/usr/share/")
1372 (string-append (assoc-ref outputs "out") "/share/"))))))))
1373 (home-page "http://gnuais.sourceforge.net/")
1374 (synopsis "AIS message demodulator and decoder")
1375 (description
1376 "This program contains algorithms to demodulate and decode AIS (Automatic
1377Identification System) messages sent by ships and coast stations.")
1378 (license license:gpl2+)))
5adfaa68
GLV
1379
1380(define-public kappanhang
1381 (package
1382 (name "kappanhang")
1383 (version "1.3")
1384 (source
1385 (origin
1386 (method git-fetch)
1387 (uri (git-reference
1388 (url "https://github.com/nonoo/kappanhang")
1389 (commit (string-append "v" version))))
1390 (file-name (git-file-name name version))
1391 (sha256
1392 (base32 "1ycy8avq5s7zspfi0d9klqcwwkpmcaz742cigd7pmcnbbhspcicp"))))
1393 (build-system go-build-system)
1394 (arguments
1395 '(#:import-path "github.com/nonoo/kappanhang"
1396 #:install-source? #f))
1397 (inputs
1398 `(("go-github-com-akosmarton-papipes",go-github-com-akosmarton-papipes)
1399 ("go-github-com-fatih-color" ,go-github-com-fatih-color)
1400 ("go-github-com-google-goterm" ,go-github-com-google-goterm)
1401 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
1402 ("go-github-com-mesilliac-pulse-simple"
1403 ,go-github-com-mesilliac-pulse-simple)
1404 ("go-github-com-pborman-getopt" ,go-github-com-pborman-getopt)
1405 ("go-go-uber-org-multierr" ,go-go-uber-org-multierr)
1406 ("go-go-uber-org-zap" ,go-go-uber-org-zap)))
1407 (home-page "https://github.com/nonoo/kappanhang")
1408 (synopsis "Client for Icom RS-BA1 server")
1409 (description
1410 "Kappanhang remotely opens audio channels and a serial port to an Icom
1411RS-BA1 server. The application is mainly developed for connecting to the Icom
1412IC-705 transceiver, which has built-in WiFi and RS-BA1 server.
1413
1414Compatible hardware/software:
1415@itemize
1416@item Icom RS-BA1 server software,
1417@item Icom IC-705
1418@item Icom IC-9700
1419@end itemize\n")
1420 (license license:expat)))
92ff287e
GLV
1421
1422(define-public dream
1423 (package
1424 (name "dream")
1425 (version "2.1.1")
1426 (source
1427 (origin
1428 (method url-fetch)
1429 (uri (string-append "mirror://sourceforge/drm/dream/" version
1430 "/dream-" version "-svn808.tar.gz"))
1431 (sha256
1432 (base32 "01dv6gvljz64zrjbr08mybr9aicvpq2c6qskww46lngdjyhk8xs1"))))
1433 (build-system qt-build-system)
1434 (native-inputs
1435 `(("pkg-config" ,pkg-config)))
1436 (inputs
1437 `(("faad2" ,faad2)
1438 ("fftw" ,fftw)
1439 ("libsndfile" ,libsndfile)
1440 ("libpcap" ,libpcap)
1441 ("opus" ,opus)
1442 ("pulseaudio" ,pulseaudio)
1443 ("qtbase" ,qtbase)
1444 ("qtsvg" ,qtsvg)
1445 ("qtwebkit" ,qtwebkit)
1446 ("qwt" ,qwt)
1447 ("speexdsp" ,speexdsp)
1448 ("zlib" ,zlib)))
1449 (arguments
1450 `(#:tests? #f
1451 #:phases
1452 (modify-phases %standard-phases
1453 (add-after 'unpack 'fix-paths
1454 (lambda* (#:key inputs outputs #:allow-other-keys)
1455 (substitute* "dream.pro"
1456 (("target\\.path = /usr/bin")
1457 (string-append "target.path = "
1458 (assoc-ref outputs "out") "/bin"))
1459 (("documentation\\.path = /usr/share/man/man1")
1460 (string-append "documentation.path = "
1461 (assoc-ref outputs "out")
1462 "/share/man/man1"))
1463 (("/usr/include/pulse/")
1464 (string-append (assoc-ref inputs "pulseaudio")
1465 "/include/pulse/"))
1466 (("/usr/include/sndfile\\.h")
1467 (string-append (assoc-ref inputs "libsndfile")
1468 "/include/sndfile.h"))
1469 (("/usr/include/opus/")
1470 (string-append (assoc-ref inputs "opus")
1471 "/include/opus/"))
1472 (("/usr/include/speex/")
1473 (string-append (assoc-ref inputs "speexdsp")
1474 "/include/speex/"))
1475 (("/usr/include/qwt/")
1476 (string-append (assoc-ref inputs "qwt")
1477 "/include/qwt/"))
1478 (("\\$\\$OUT_PWD/include/neaacdec\\.h")
1479 (string-append (assoc-ref inputs "faad2")
1480 "/include/neaacdec.h")))))
1481 (replace 'configure
1482 (lambda _
1483 (invoke "qmake"))))))
1484 (home-page "https://sourceforge.net/projects/drm/")
1485 (synopsis "Digital Radio Mondiale receiver")
1486 (description
1487 "Dream is a software implementation of a Digital Radio Mondiale (DRM)
1488receiver.")
1489 (license license:gpl2+)))
561017f8
GLV
1490
1491(define-public welle-io
1492 (package
1493 (name "welle-io")
1494 (version "2.2")
1495 (source
1496 (origin
1497 (method git-fetch)
1498 (uri (git-reference
1499 (url "https://github.com/albrechtl/welle.io")
1500 (commit (string-append "v" version))))
1501 (file-name (git-file-name name version))
1502 (sha256
1503 (base32 "04fpm6sc431dl9i5h53xpd6k85j22sv8aawl7b6wv2fzpfsd9fwa"))))
1504 (build-system qt-build-system)
1505 (native-inputs
1506 `(("pkg-config" ,pkg-config)))
1507 (inputs
1508 `(("alsa-lib" ,alsa-lib)
1509 ("faad2" ,faad2)
1510 ("fftwf" ,fftwf)
1511 ("lame" ,lame)
1512 ("libusb" ,libusb)
1513 ("mpg123" ,mpg123)
1514 ("rtl-sdr" ,rtl-sdr)
1515 ("qtbase" ,qtbase)
1516 ("qtcharts" ,qtcharts)
1517 ("qtdeclarative" ,qtdeclarative)
1518 ("qtgraphicaleffects" ,qtgraphicaleffects)
1519 ("qtmultimedia" ,qtmultimedia)
1520 ("qtquickcontrols2" ,qtquickcontrols2)))
1521 (arguments
1522 `(#:configure-flags '("-DRTLSDR=ON")
1523 #:tests? #f))
1524 (home-page "https://www.welle.io/")
1525 (synopsis "DAB and DAB+ software radio")
1526 (description
1527 "@code{welle.io} is a Digital Audio Broadcasting (DAB and DAB+) software
1528defined radio with support for rtl-sdr.")
1529 (license license:gpl2+)))