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