summary refs log tree commit diff
path: root/gnu/packages/radio.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/radio.scm')
-rw-r--r--gnu/packages/radio.scm434
1 files changed, 329 insertions, 105 deletions
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index feb17f99ab..3776e87ee3 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -94,6 +94,34 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt))
 
+(define-public libfec
+  ;; Use commit to get compilation fixes that are not in a release yet.
+  (let ((commit "9750ca0a6d0a786b506e44692776b541f90daa91")
+        (revision "1"))
+    (package
+      (name "libfec")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/quiet/libfec")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0i6jhrdswr1wglyb9h39idpz5v9z13yhidvlbj34vxpyngrkhlvs"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
+         #:test-target "test_all"))
+      (home-page "https://github.com/quiet/libfec")
+      (synopsis "Forward error correction algorithms library")
+      (description
+       "This package provides a set of functions that implement several popular
+@dfn{forward error correction} (FEC) algorithms and several low-level routines
+useful in modems implemented with @dfn{digital signal processing} (DSP).")
+      (license license:lgpl2.1))))
+
 (define-public liquid-dsp
   (package
     (name "liquid-dsp")
@@ -110,8 +138,15 @@
     (native-inputs
      `(("autoconf" ,autoconf)))
     (inputs
-     `(("fftw" ,fftw)
-       ("fftwf" ,fftwf)))
+     `(("fftwf" ,fftwf)
+       ("libfec" ,libfec)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'delete-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/libliquid.a")))))))
     (home-page "https://liquidsdr.org")
     (synopsis "Signal processing library for software-defined radios")
     (description
@@ -223,6 +258,110 @@ 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 soapysdr
+  (package
+    (name "soapysdr")
+    (version "0.8.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapySDR")
+             (commit (string-append "soapy-sdr-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dy25zxk7wmg7ik82dx7h3bbbynvalbz1dxsl7kgm3374yxhnixv"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("python" ,python)
+       ("swig" ,swig)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "SOAPY_SDR_PLUGIN_PATH")
+            (files (list (string-append "lib/SoapySDR/modules"
+                                        (version-major+minor version)))))))
+    (home-page "https://github.com/pothosware/SoapySDR/wiki")
+    (synopsis "Vendor and platform neutral SDR support library")
+    (description
+     "SoapySDR is a library designed to support several kinds of software
+defined radio hardware devices with a common API.")
+    (license license:boost1.0)))
+
+(define-public soapyairspyhf
+  (package
+    (name "soapyairspyhf")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapyAirspyHF")
+             (commit (string-append "soapy-airspyhf-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04krqinglgkjvx7klqik6yn8rb4mlpwzb6zvnmvm7szqci2agggz"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("airspyhf" ,airspyhf)
+       ("soapysdr" ,soapysdr)))
+    (arguments
+     `(#:tests? #f))  ; No test suite
+    (home-page "https://github.com/pothosware/SoapyAirspyHF/wiki")
+    (synopsis "SoapySDR Airspy HF+ module")
+    (description "This package provides Airspy HF+ devices support to the
+SoapySDR library.")
+    (license license:expat)))
+
+(define-public soapyhackrf
+  (package
+    (name "soapyhackrf")
+    (version "0.3.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapyHackRF")
+             (commit (string-append "soapy-hackrf-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1awn89z462500gb3fjb7x61b1znkjri9n1d39bqfip1qk4s11pxc"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("hackrf" ,hackrf)
+       ("soapysdr" ,soapysdr)))
+    (arguments
+     `(#:tests? #f))  ; No test suite
+    (home-page "https://github.com/pothosware/SoapyHackRF/wiki")
+    (synopsis "SoapySDR HackRF module")
+    (description
+     "This package provides HackRF devices support to the SoapySDR library.")
+    (license license:expat)))
+
+(define-public soapyrtlsdr
+  (package
+    (name "soapyrtlsdr")
+    (version "0.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapyRTLSDR")
+             (commit (string-append "soapy-rtl-sdr-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dlnryj6k20pk7w7v4v13y099r7ikhvlzbgzgphmi5cxkdv0shrd"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("rtl-sdr" ,rtl-sdr)
+       ("soapysdr" ,soapysdr)))
+    (arguments
+     `(#:tests? #f))  ; No test suite
+    (home-page "https://github.com/pothosware/SoapyRTLSDR/wiki")
+    (synopsis "SoapySDR RTL-SDR module")
+    (description
+     "This package provides RTL-SDR devices support to the SoapySDR library.")
+    (license license:expat)))
+
 (define-public chirp
   (package
     (name "chirp")
@@ -375,6 +514,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
        ("python-click" ,python-click)
        ("python-click-plugins" ,python-click-plugins)
        ("python-lxml" ,python-lxml)
+       ("python-matplotlib" ,python-matplotlib)
        ("python-numpy" ,python-numpy)
        ("python-pycairo" ,python-pycairo)
        ("python-pygobject" ,python-pygobject)
@@ -513,6 +653,7 @@ environment.")
          ("python-numpy" ,python-numpy)
          ("python-pyqt" ,python-pyqt)
          ("rtl-sdr" ,rtl-sdr)
+         ("soapysdr" ,soapysdr)
          ("volk" ,volk)))
       (arguments
        `(#:modules ((guix build cmake-build-system)
@@ -798,66 +939,61 @@ for correctness.")
     (license license:gpl3+)))
 
 (define-public hackrf
-  ;; Using a git commit because there have been many many commits
-  ;; since the relase two years ago, but no sign of a promised
-  ;; release for many months now.
-  (let ((commit "43e6f99fe8543094d18ff3a6550ed2066c398862")
-        (revision "0"))
-    (package
-     (name "hackrf")
-     (version (git-version "2018.01.1" revision commit))
-     (source
-      (origin
+  (package
+    (name "hackrf")
+    (version "2021.03.1")
+    (source
+     (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mossmann/hackrf")
-             (commit commit)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0avnv693xi0zsnrvkbfn0ln1r3s1iyj0bz7sc3gxay909av0pvbc"))))
-     (build-system cmake-build-system)
-     (arguments
-      '(#:configure-flags
-        (list "-DUDEV_RULES_GROUP=dialout"
-              (string-append "-DUDEV_RULES_PATH="
-                             (assoc-ref %outputs "out")
-                             "/lib/udev/rules.d"))
-        #:phases
-        (modify-phases %standard-phases
-          (add-before 'configure 'enter-source-directory
-            (lambda _
-              (chdir "host")
-              #t))
-          (add-after 'install 'delete-static-library
-            (lambda* (#:key outputs #:allow-other-keys)
-              (delete-file (string-append (assoc-ref outputs "out")
-                                          "/lib/libhackrf.a"))
-              #t))
-          (add-before 'install-license-files 'leave-source-directory
-            (lambda _
-              (chdir "..")
-              #t)))
-        #:tests? #f)) ; no test suite
-     (native-inputs
-      `(("pkg-config" ,pkg-config)))
-     (inputs
-      `(("fftw" ,fftw)
-        ("fftwf" ,fftwf)
-        ("libusb" ,libusb)))
-     (home-page "https://greatscottgadgets.com/hackrf/")
-     (synopsis "User-space library and utilities for HackRF SDR")
-     (description
-      "Command line utilities and a C library for controlling the HackRF
+        (base32 "12fkgimjy5ia291c1rn4y59pn9r5wdvz5x9z5xc8zr1xr96iyhfs"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "-DUDEV_RULES_GROUP=dialout"
+             (string-append "-DUDEV_RULES_PATH="
+                            (assoc-ref %outputs "out")
+                            "/lib/udev/rules.d"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'enter-source-directory
+           (lambda _
+             (chdir "host")
+             #t))
+         (add-after 'install 'delete-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/libhackrf.a"))
+             #t))
+         (add-before 'install-license-files 'leave-source-directory
+           (lambda _
+             (chdir "..")
+             #t)))
+       #:tests? #f)) ; no test suite
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("fftw" ,fftw)
+       ("fftwf" ,fftwf)
+       ("libusb" ,libusb)))
+    (home-page "https://greatscottgadgets.com/hackrf/")
+    (synopsis "User-space library and utilities for HackRF SDR")
+    (description
+     "Command line utilities and a C library for controlling the HackRF
 Software Defined Radio (SDR) over USB.  Installing this package installs the
 userspace hackrf utilities and C library.  To install the hackrf udev rules,
 you must extend 'udev-service-type' with this package.  E.g.:
 @code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
-     (license license:gpl2))))
+    (license license:gpl2)))
 
 (define-public hamlib
   (package
     (name "hamlib")
-    (version "4.1")
+    (version "4.2")
     (source
      (origin
        (method url-fetch)
@@ -865,7 +1001,7 @@ you must extend 'udev-service-type' with this package.  E.g.:
              "https://github.com/Hamlib/Hamlib/releases/download/"
              version "/hamlib-" version ".tar.gz"))
        (sha256
-        (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
+        (base32 "1m8gb20i8ga6ndnnw187ry1h4z8wx27v1hl7c610r6ky60pv4072"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -1162,7 +1298,8 @@ their position, altitude, speed, etc.")
     (inputs
      `(("libusb" ,libusb)
        ("openssl" ,openssl)
-       ("rtl-sdr" ,rtl-sdr)))
+       ("rtl-sdr" ,rtl-sdr)
+       ("soapysdr" ,soapysdr)))
     (synopsis "Decoder for radio transmissions in ISM bands")
     (description
      "This is a generic data receiver, mainly for decoding radio transmissions
@@ -1543,7 +1680,7 @@ receiver.")
 (define-public welle-io
   (package
     (name "welle-io")
-    (version "2.2")
+    (version "2.3")
     (source
      (origin
        (method git-fetch)
@@ -1552,7 +1689,7 @@ receiver.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04fpm6sc431dl9i5h53xpd6k85j22sv8aawl7b6wv2fzpfsd9fwa"))))
+        (base32 "1xl1lanw0xgmgks67dbfb2h52jxnrd1i2zik56v0q8dwsr7f0daw"))))
     (build-system qt-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1569,9 +1706,11 @@ receiver.")
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
        ("qtmultimedia" ,qtmultimedia)
-       ("qtquickcontrols2" ,qtquickcontrols2)))
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("soapysdr" ,soapysdr)))
     (arguments
-     `(#:configure-flags '("-DRTLSDR=ON")
+     `(#:configure-flags '("-DRTLSDR=ON"
+                           "-DSOAPYSDR=ON")
        #:tests? #f))
     (home-page "https://www.welle.io/")
     (synopsis "DAB and DAB+ software radio")
@@ -1808,6 +1947,7 @@ voice formats.")
        ("qtwebsockets" ,qtwebsockets)
        ("rtl-sdr" ,rtl-sdr)
        ("serialdv" ,serialdv)
+       ("soapysdr" ,soapysdr)
        ("sgp4" ,sgp4)
        ("zlib" ,zlib)))
     (arguments
@@ -1824,7 +1964,9 @@ voice formats.")
              (string-append "-DSERIALDV_DIR="
                             (assoc-ref %build-inputs "serialdv"))
              (string-append "-DSGP4_DIR="
-                            (assoc-ref %build-inputs "sgp4")))))
+                            (assoc-ref %build-inputs "sgp4"))
+             (string-append "-DSOAPYSDR_DIR="
+                            (assoc-ref %build-inputs "soapysdr")))))
     (home-page "https://github.com/f4exb/sdrangel/wiki")
     (synopsis "Software defined radio")
     (description
@@ -1860,70 +2002,152 @@ software-defined radio receivers.")
     (license license:gpl3+)))
 
 (define-public wfview
-  ;; No tagged release, use commit directly.
-  (let ((commit "274e905d214a7360e8cf2dd0421dbe3712a0ddcc")
+  (package
+    (name "wfview")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/eliggett/wfview")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16a9afm0nkqx4pzwfxisspybimhqdyr3yjpr7ac7wgpp3520ikzi"))))
+    (build-system qt-build-system)
+    (inputs
+     `(("qcustomplot" ,qcustomplot)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtserialport" ,qtserialport)))
+    (arguments
+     `(#:tests? #f  ; No test suite.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "wfview.pro"
+               (("\\.\\./wfview/")
+                "../"))
+             (substitute* '("wfmain.cpp")
+               (("/usr/share")
+                (string-append (assoc-ref outputs "out") "/share")))))
+         (replace 'configure
+           (lambda _
+             (mkdir-p "build")
+             (chdir "build")
+             (invoke "qmake" "../wfview.pro")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (install-file "wfview"
+                             (string-append out "/bin"))
+               (install-file "wfview.png"
+                             (string-append out "/share/pixmaps"))
+               (install-file "wfview.desktop"
+                             (string-append out "/share/applications"))
+               (let ((dir (string-append
+                           out "/share/wfview/stylesheets/qdarkstyle")))
+                 (mkdir-p dir)
+                 (copy-recursively "qdarkstyle" dir))))))))
+    (home-page "https://wfview.org/")
+    (synopsis "Software to control Icom radios")
+    (description
+     "@code{wfview} is a program to control modern Icom radios and view the
+spectrum waterfall.  It supports at least the following models:
+
+@itemize
+@item IC-705
+@item IC-7300
+@item IC-7610
+@item IC-7850
+@item IC-7851
+@item IC-9700
+@end itemize\n")
+    (license (list license:expat
+                   license:gpl3))))
+
+(define-public minimodem
+  (package
+    (name "minimodem")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.whence.com/minimodem/minimodem-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "13ipyh39l7p420j1j9kvwyskv2nqnimls1a3z1klsa1zivds9k7q"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fftwf" ,fftwf)
+       ("libsndfile" ,libsndfile)
+       ("pulseaudio" ,pulseaudio)))
+    (home-page "http://www.whence.com/minimodem/")
+    (synopsis "Software audio FSK modem")
+    (description
+     "Minimodem is a command-line program which decodes (or generates) audio
+modem tones at any specified baud rate, using various framing protocols.  It
+acts a general-purpose software FSK modem, and includes support for various
+standard FSK protocols such as Bell103, Bell202, RTTY, TTY/TDD, NOAA SAME, and
+Caller-ID.")
+    (license license:gpl3+)))
+
+(define-public rfcat
+  ;; Use a commit for now because some fixes to make rfcat work with
+  ;; Python 3 instead of Python 2 are not in a release yet.
+  (let ((commit "725bf79af27d47cdec64107317c1c8fe3f7ad7b8")
         (revision "1"))
     (package
-      (name "wfview")
-      (version (git-version "20210511" revision commit))
+      (name "rfcat")
+      (version (git-version "1.9.5" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://gitlab.com/eliggett/wfview")
+               (url "https://github.com/atlas0fd00m/rfcat")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1dmxn15xs63wx1y4mh1mlv8qc1xz32vgbyl3rk82gf6knw518svp"))))
-      (build-system qt-build-system)
+          (base32 "0dbc6n4pxsa73wzxny773khc73r1dn3ma5hi7xv76vcykjvzkdi3"))))
+      (build-system python-build-system)
       (inputs
-       `(("qcustomplot" ,qcustomplot)
-         ("qtbase" ,qtbase)
-         ("qtmultimedia" ,qtmultimedia)
-         ("qtserialport" ,qtserialport)))
+       `(("python-future" ,python-future)
+         ("python-ipython" ,python-ipython)
+         ("python-numpy" ,python-numpy)
+         ("python-pyserial" ,python-pyserial)
+         ("python-pyside-2" ,python-pyside-2)
+         ("python-pyusb" ,python-pyusb)))
       (arguments
-       `(#:tests? #f  ; No test suite.
+       `(#:tests? #f  ; Tests want to use a serial port
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'fix-paths
-             (lambda* (#:key outputs #:allow-other-keys)
-               (substitute* "wfview.pro"
-                 (("\\.\\./wfview/")
-                  "../"))
-               (substitute* '("wfmain.cpp")
-                 (("/usr/share")
-                  (string-append (assoc-ref outputs "out") "/share")))))
-           (replace 'configure
+           (add-after 'unpack 'fix-permissions
              (lambda _
-               (mkdir-p "build")
-               (chdir "build")
-               (invoke "qmake" "../wfview.pro")))
-           (replace 'install
+               (make-file-writable "rflib/rflib_version.py")))
+           (add-after 'install 'install-udev-rules
              (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out")))
-                 (install-file "wfview"
-                               (string-append out "/bin"))
-                 (install-file "wfview.png"
-                               (string-append out "/share/pixmaps"))
-                 (install-file "wfview.desktop"
-                               (string-append out "/share/applications"))
-                 (let ((dir (string-append
-                             out "/share/wfview/stylesheets/qdarkstyle")))
-                   (mkdir-p dir)
-                   (copy-recursively "qdarkstyle" dir))))))))
-      (home-page "https://wfview.org/")
-      (synopsis "Software to control Icom radios")
+               (install-file "etc/udev/rules.d/20-rfcat.rules"
+                             (string-append (assoc-ref outputs "out")
+                                            "/lib/udev/rules.d")))))))
+      (home-page "https://github.com/atlas0fd00m/rfcat")
+      (synopsis "Program to control some radio dongles")
       (description
-       "@code{wfview} is a program to control modern Icom radios and view the
-spectrum waterfall.  It supports at least the following models:
+       "@code{rfcat} is a program to control some radio dongles operating in
+ISM bands.
 
+Supported dongles:
 @itemize
-@item IC-705
-@item IC-7300
-@item IC-7610
-@item IC-7850
-@item IC-7851
-@item IC-9700
-@end itemize\n")
-      (license (list license:expat
-                     license:gpl3)))))
+@item YARD Stick One
+@item cc1111emk
+@item chronos watch dongle
+@item imme (limited support)
+@end itemize
+
+To install the rfcat udev rules, you must extend @code{udev-service-type} with
+this package.  E.g.: @code{(udev-rules-service 'rfcat rfcat)}")
+      (license (list license:bsd-3
+                     license:gpl2)))))