summaryrefslogtreecommitdiff
path: root/gnu/packages/radio.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/radio.scm')
-rw-r--r--gnu/packages/radio.scm361
1 files changed, 268 insertions, 93 deletions
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index ff694cecd8..36472fe966 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2020 Charlie Ritter <chewzerita@posteo.net>
;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 João Pedro Simas <jpsimas@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
@@ -35,6 +37,7 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
@@ -48,14 +51,17 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
+ #:use-module (gnu packages gps)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
+ #:use-module (gnu packages javascript)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
#:use-module (gnu packages maths)
+ #:use-module (gnu packages mp3)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
@@ -67,6 +73,7 @@
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
+ #:use-module (gnu packages sdl)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages swig)
#:use-module (gnu packages tcl)
@@ -165,6 +172,53 @@ To install the rtl-sdr udev rules, you must extend 'udev-service-type' with
this package. E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
(license license:gpl2+)))
+(define-public airspyhf
+ (package
+ (name "airspyhf")
+ (version "1.6.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/airspy/airspyhf")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0n699i5a9fzzhf80fcjlqq6p2a013rzlwmwv4nmwfafy6c8cr924"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("libusb" ,libusb)))
+ (arguments
+ '(#:configure-flags '("-DINSTALL_UDEV_RULES=ON")
+ #:tests? #f ; No tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "tools/CMakeLists.txt"
+ (("DESTINATION \"/etc/udev/")
+ (string-append "DESTINATION \""
+ (assoc-ref outputs "out")
+ "/lib/udev/")))))
+ (add-after 'fix-paths 'fix-udev-rules
+ (lambda _
+ (substitute* "tools/52-airspyhf.rules"
+ ;; The plugdev group does not exist; use dialout as in
+ ;; the hackrf package.
+ (("GROUP=\"plugdev\"")
+ "GROUP=\"dialout\"")))))))
+ (home-page "https://github.com/airspy/airspyhf")
+ (synopsis "Software defined radio driver for Airspy HF+")
+ (description
+ "This package provides the driver and utilities for controlling the Airspy
+HF+ Software Defined Radio (SDR) over USB.
+
+To install the airspyhf udev rules, you must extend @code{udev-service-type}
+with this package. E.g.: @code{(udev-rules-service 'airspyhf airspyhf)}")
+ (license license:bsd-3)))
+
(define-public chirp
(package
(name "chirp")
@@ -286,36 +340,31 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
(define-public gnuradio
(package
(name "gnuradio")
- (version "3.8.0.0")
+ (version "3.9.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.gnuradio.org/releases/gnuradio/"
"gnuradio-" version ".tar.xz"))
(sha256
- (base32 "0aw55gf5549b0fz2qdi7vplcmaf92bj34h40s34b2ycnqasv900r"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Delete bundled volk to use the shared one.
- (delete-file-recursively "volk")
- #t))))
+ (base32 "1jvm9xd0l2pz1fww4zii6hl7ccnvy256nrf70ljb594n7j9j49ha"))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
("ghostscript" ,ghostscript)
+ ("js-mathjax" ,js-mathjax)
("orc" ,orc)
("pkg-config" ,pkg-config)
+ ("pybind11" ,pybind11)
("python-cheetah" ,python-cheetah)
("python-mako" ,python-mako)
("python-pyzmq" ,python-pyzmq)
("python-scipy" ,python-scipy)
("python-sphinx" ,python-sphinx)
- ("swig" ,swig)
("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
- texlive-latex-amsmath
- ;; TODO: Add newunicodechar.
- texlive-latex-graphics)))
+ texlive-latex-amsmath
+ ;; TODO: Add newunicodechar.
+ texlive-latex-graphics)))
("xorg-server" ,xorg-server-for-tests)))
(inputs
`(("alsa-lib" ,alsa-lib)
@@ -329,6 +378,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
("gsm" ,gsm)
("gtk+" ,gtk+)
("jack" ,jack-1)
+ ("libsndfile" ,libsndfile)
("log4cpp" ,log4cpp)
("pango" ,pango)
("portaudio" ,portaudio)
@@ -343,6 +393,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
("python-pyyaml" ,python-pyyaml)
("qtbase" ,qtbase)
("qwt" ,qwt)
+ ("sdl" ,sdl)
("volk" ,volk)
("zeromq" ,zeromq)))
(arguments
@@ -355,7 +406,9 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
(guix build glib-or-gtk-build-system)
(guix build python-build-system))
#:configure-flags
- '("-DENABLE_INTERNAL_VOLK=OFF")
+ (list (string-append "-DMATHJAX2_ROOT="
+ (assoc-ref %build-inputs "js-mathjax")
+ "/share/javascript/mathjax"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
@@ -371,8 +424,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
(substitute* "cmake/Modules/GrPython.cmake"
(("dist-packages")
"site-packages"))
- (substitute* '("gr-vocoder/swig/vocoder_swig.i"
- "gr-vocoder/include/gnuradio/vocoder/codec2.h"
+ (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
"gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
(("<codec2/")
"<"))
@@ -384,6 +436,19 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
"/bin/Xvfb :1 &"))
(setenv "DISPLAY" ":1")
#t))
+ (replace 'check
+ (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+ (invoke "ctest" "-j" (if parallel-tests?
+ (number->string (parallel-job-count))
+ "1")
+ "--output-on-failure"
+ ;;disable broken tests
+ "-E" (string-join
+ '(;; https://github.com/gnuradio/gnuradio/issues/3871
+ "qa_header_payload_demux"
+ ;; https://github.com/gnuradio/gnuradio/issues/4348
+ "qa_packet_headerparser_b")
+ "|"))))
(add-after 'install 'wrap-python
(assoc-ref python:%standard-phases 'wrap))
(add-after 'wrap-python 'wrap-glib-or-gtk
@@ -424,40 +489,45 @@ environment.")
(license license:gpl3+)))
(define-public gnuradio-osmosdr
- (package
- (name "gnuradio-osmosdr")
- (version "0.2.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.osmocom.org/gr-osmosdr")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1aqj5cylipmmjh1x1kb2j8262hxq6mi86dgb2zphj94wvsab2ghx"))))
- (build-system cmake-build-system)
- (native-inputs
- `(("doxygen" ,doxygen)
- ("pkg-config" ,pkg-config)
- ("python" ,python)
- ("python-mako" ,python-mako)
- ("python-six" ,python-six)
- ("swig" ,swig)))
- (inputs
- `(("boost" ,boost)
- ("fftwf" ,fftwf)
- ("gmp" ,gmp)
- ("gnuradio" ,gnuradio)
- ("hackrf" ,hackrf)
- ("log4cpp" ,log4cpp)
- ("rtl-sdr" ,rtl-sdr)
- ("volk" ,volk)))
- (synopsis "GNU Radio block for interfacing with various radio hardware")
- (description "This is a block for GNU Radio allowing to use a common API
+ ;; No tag for version supporting Gnuradio 3.9; use commit.
+ (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
+ (revision "0"))
+ (package
+ (name "gnuradio-osmosdr")
+ (version (git-version "0.2.3" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.osmocom.org/gr-osmosdr")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("doxygen" ,doxygen)
+ ("pkg-config" ,pkg-config)
+ ("pybind11" ,pybind11)
+ ("python" ,python)
+ ("python-mako" ,python-mako)
+ ("python-six" ,python-six)))
+ (inputs
+ `(("airspyhf" ,airspyhf)
+ ("boost" ,boost)
+ ("fftwf" ,fftwf)
+ ("gmp" ,gmp)
+ ("gnuradio" ,gnuradio)
+ ("hackrf" ,hackrf)
+ ("libsndfile" ,libsndfile)
+ ("log4cpp" ,log4cpp)
+ ("rtl-sdr" ,rtl-sdr)
+ ("volk" ,volk)))
+ (synopsis "GNU Radio block for interfacing with various radio hardware")
+ (description "This is a block for GNU Radio allowing to use a common API
to access different radio hardware.")
- (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
- (license license:gpl3+)))
+ (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
+ (license license:gpl3+))))
(define-public libosmo-dsp
(package
@@ -504,36 +574,39 @@ primitives for SDR (Software Defined Radio).")
(license license:gpl2+)))
(define-public gnuradio-iqbalance
- (package
- (name "gnuradio-iqbalance")
- (version "0.38.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.osmocom.org/gr-iqbal")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0ksagwz05p3b0702q7ljq7013xmp0ijp30my9z6s3p7ja8dj42s3"))))
- (build-system cmake-build-system)
- (native-inputs
- `(("doxygen" ,doxygen)
- ("pkg-config" ,pkg-config)
- ("python" ,python)
- ("python-numpy" ,python-numpy)
- ("python-six" ,python-six)
- ("swig" ,swig)))
- (inputs
- `(("boost" ,boost)
- ("fftwf" ,fftwf)
- ("gmp" ,gmp)
- ("gnuradio" ,gnuradio)
- ("libosmo-dsp" ,libosmo-dsp)
- ("log4cpp" ,log4cpp)
- ("volk" ,volk)))
- (synopsis "GNU Radio block to correct IQ imbalance")
- (description
+ ;; No tag for version supporting Gnuradio 3.9; use commit.
+ (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
+ (revision "0"))
+ (package
+ (name "gnuradio-iqbalance")
+ (version (git-version "0.38.2" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.osmocom.org/gr-iqbal")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("doxygen" ,doxygen)
+ ("pkg-config" ,pkg-config)
+ ("pybind11" ,pybind11)
+ ("python" ,python)
+ ("python-numpy" ,python-numpy)
+ ("python-six" ,python-six)))
+ (inputs
+ `(("boost" ,boost)
+ ("fftwf" ,fftwf)
+ ("gmp" ,gmp)
+ ("gnuradio" ,gnuradio)
+ ("libosmo-dsp" ,libosmo-dsp)
+ ("log4cpp" ,log4cpp)
+ ("volk" ,volk)))
+ (synopsis "GNU Radio block to correct IQ imbalance")
+ (description
"This is a GNU Radio block to correct IQ imbalance in quadrature
receivers. It's composed of two main block:
@itemize
@@ -541,8 +614,8 @@ receivers. It's composed of two main block:
@item Optimize: Attempts to auto-detect the phase and amplitude error to feed
to the fix block above.
@end itemize")
- (home-page "https://git.osmocom.org/gr-iqbal/")
- (license license:gpl3+)))
+ (home-page "https://git.osmocom.org/gr-iqbal/")
+ (license license:gpl3+))))
(define-public gqrx
(package
@@ -569,6 +642,7 @@ to the fix block above.
("gnuradio-iqbalance" ,gnuradio-iqbalance)
("gnuradio-osmosdr" ,gnuradio-osmosdr)
("jack" ,jack-1)
+ ("libsndfile" ,libsndfile)
("log4cpp" ,log4cpp)
("portaudio" ,portaudio)
("pulseaudio" ,pulseaudio)
@@ -822,7 +896,7 @@ users.")
(package
(inherit hamlib)
(name "wsjtx-hamlib")
- (version "2.3.0")
+ (version "2.3.1")
(source
(origin
(method git-fetch)
@@ -831,7 +905,7 @@ users.")
(commit (string-append "wsjtx-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0ampwqs7p0g8pdnwpdrbvwyqag065n96amgb3v4z332nw0nxvm10"))))
+ (base32 "0m4yzjcqs7a1w4lghyyckpkiy96jxdjijddxarqr3a37cl2rz23j"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
@@ -843,20 +917,12 @@ users.")
"--with-lua-binding"
"--with-python-binding"
"--with-tcl-binding"
- "--with-xml-support")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-tests
- (lambda _
- (substitute* "tests/testloc.c"
- (("dmmm2dec\\(deg, mmm, nesw\\);")
- "dmmm2dec(deg, mmm, 0, nesw);"))
- #t)))))))
+ "--with-xml-support")))))
(define-public wsjtx
(package
(name "wsjtx")
- (version "2.3.0")
+ (version "2.3.1")
(source
(origin
(method git-fetch)
@@ -865,7 +931,7 @@ users.")
(commit (string-append "wsjtx-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1qf8r88ssara3pddvd3jpv5phzxwnanvdj00dxgmzq0c2jqcy2a8"))))
+ (base32 "0mdr4l7zii08615yn7z91spnvnqm5i9390bra9lz3aqyxrsiim91"))))
(build-system qt-build-system)
(native-inputs
`(("asciidoc" ,asciidoc)
@@ -1400,3 +1466,112 @@ Compatible hardware/software:
@item Icom IC-9700
@end itemize\n")
(license license:expat)))
+
+(define-public dream
+ (package
+ (name "dream")
+ (version "2.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/drm/dream/" version
+ "/dream-" version "-svn808.tar.gz"))
+ (sha256
+ (base32 "01dv6gvljz64zrjbr08mybr9aicvpq2c6qskww46lngdjyhk8xs1"))))
+ (build-system qt-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("faad2" ,faad2)
+ ("fftw" ,fftw)
+ ("libsndfile" ,libsndfile)
+ ("libpcap" ,libpcap)
+ ("opus" ,opus)
+ ("pulseaudio" ,pulseaudio)
+ ("qtbase" ,qtbase)
+ ("qtsvg" ,qtsvg)
+ ("qtwebkit" ,qtwebkit)
+ ("qwt" ,qwt)
+ ("speexdsp" ,speexdsp)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "dream.pro"
+ (("target\\.path = /usr/bin")
+ (string-append "target.path = "
+ (assoc-ref outputs "out") "/bin"))
+ (("documentation\\.path = /usr/share/man/man1")
+ (string-append "documentation.path = "
+ (assoc-ref outputs "out")
+ "/share/man/man1"))
+ (("/usr/include/pulse/")
+ (string-append (assoc-ref inputs "pulseaudio")
+ "/include/pulse/"))
+ (("/usr/include/sndfile\\.h")
+ (string-append (assoc-ref inputs "libsndfile")
+ "/include/sndfile.h"))
+ (("/usr/include/opus/")
+ (string-append (assoc-ref inputs "opus")
+ "/include/opus/"))
+ (("/usr/include/speex/")
+ (string-append (assoc-ref inputs "speexdsp")
+ "/include/speex/"))
+ (("/usr/include/qwt/")
+ (string-append (assoc-ref inputs "qwt")
+ "/include/qwt/"))
+ (("\\$\\$OUT_PWD/include/neaacdec\\.h")
+ (string-append (assoc-ref inputs "faad2")
+ "/include/neaacdec.h")))))
+ (replace 'configure
+ (lambda _
+ (invoke "qmake"))))))
+ (home-page "https://sourceforge.net/projects/drm/")
+ (synopsis "Digital Radio Mondiale receiver")
+ (description
+ "Dream is a software implementation of a Digital Radio Mondiale (DRM)
+receiver.")
+ (license license:gpl2+)))
+
+(define-public welle-io
+ (package
+ (name "welle-io")
+ (version "2.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/albrechtl/welle.io")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "04fpm6sc431dl9i5h53xpd6k85j22sv8aawl7b6wv2fzpfsd9fwa"))))
+ (build-system qt-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("faad2" ,faad2)
+ ("fftwf" ,fftwf)
+ ("lame" ,lame)
+ ("libusb" ,libusb)
+ ("mpg123" ,mpg123)
+ ("rtl-sdr" ,rtl-sdr)
+ ("qtbase" ,qtbase)
+ ("qtcharts" ,qtcharts)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtgraphicaleffects" ,qtgraphicaleffects)
+ ("qtmultimedia" ,qtmultimedia)
+ ("qtquickcontrols2" ,qtquickcontrols2)))
+ (arguments
+ `(#:configure-flags '("-DRTLSDR=ON")
+ #:tests? #f))
+ (home-page "https://www.welle.io/")
+ (synopsis "DAB and DAB+ software radio")
+ (description
+ "@code{welle.io} is a Digital Audio Broadcasting (DAB and DAB+) software
+defined radio with support for rtl-sdr.")
+ (license license:gpl2+)))