summary refs log tree commit diff
path: root/gnu/packages/radio.scm
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2021-04-16 14:39:48 +0300
committerEfraim Flashner <efraim@flashner.co.il>2021-04-16 14:39:48 +0300
commitfcc39864dba82e14895afbe841091091366c96bc (patch)
tree6e0f05495fd6512051224dc85fd3ab495cbf1a24 /gnu/packages/radio.scm
parent76fc36d0a7215979bb74c05840f5a4de4ab5ea93 (diff)
parent44f9432705d04c069a8acf9e37e3ad856ac0bf82 (diff)
downloadguix-fcc39864dba82e14895afbe841091091366c96bc.tar.gz
Merge remote-tracking branch 'origin/master' into core-updates
 Conflicts:
	gnu/local.mk
	gnu/packages/boost.scm
	gnu/packages/chez.scm
	gnu/packages/compression.scm
	gnu/packages/crates-io.scm
	gnu/packages/docbook.scm
	gnu/packages/engineering.scm
	gnu/packages/gcc.scm
	gnu/packages/gl.scm
	gnu/packages/gtk.scm
	gnu/packages/nettle.scm
	gnu/packages/python-check.scm
	gnu/packages/python-xyz.scm
	gnu/packages/radio.scm
	gnu/packages/rust.scm
	gnu/packages/sqlite.scm
	guix/build-system/node.scm
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+)))