diff --git a/nongnu/packages/radio.scm b/nongnu/packages/radio.scm index a7ed2c3..e914c82 100644 --- a/nongnu/packages/radio.scm +++ b/nongnu/packages/radio.scm @@ -1,8 +1,10 @@ ;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; Copyright © 2022 Guillaume Le Vaillant +;;; Copyright © 2024 Brice Waegeneire (define-module (nongnu packages radio) #:use-module (gnu packages gcc) + #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages radio) #:use-module (guix build-system cmake) @@ -16,21 +18,64 @@ #:use-module (nonguix build-system binary) #:use-module (nonguix licenses)) +;; Extracted from sdrplay's install_lib.sh +(define %sdrplay-hwdb + (plain-file + "20-sdrplay.hwdb" "\ +usb:v1DF7* + ID_VENDOR_FROM_DATABASE=SDRplay + +usb:v1DF7p2500* + ID_MODEL_FROM_DATABASE=RSP1 + +usb:v1DF7p3000* + ID_MODEL_FROM_DATABASE=RSP1A + +usb:v1DF7p3010* + ID_MODEL_FROM_DATABASE=RSP2/RSP2pro + +usb:v1DF7p3020* + ID_MODEL_FROM_DATABASE=RSPduo + +usb:v1DF7p3030* + ID_MODEL_FROM_DATABASE=RSPdx + +usb:v1DF7p3050* + ID_MODEL_FROM_DATABASE=RSP1B + +usb:v1DF7p3060* + ID_MODEL_FROM_DATABASE=RSPdxR2 +")) + +;; Extracted from sdrplay's install_lib.sh +(define %sdrplay-udev-rules + (plain-file + "66-sdrplay.rules" "\ +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"2500\",MODE:=\"0666\" +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"3000\",MODE:=\"0666\" +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"3010\",MODE:=\"0666\" +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"3020\",MODE:=\"0666\" +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"3030\",MODE:=\"0666\" +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"3050\",MODE:=\"0666\" +SUBSYSTEM==\"usb\",ENV{DEVTYPE}==\"usb_device\",ATTRS{idVendor}==\"1df7\",ATTRS{idProduct}==\"3060\",MODE:=\"0666\" +")) + (define-public sdrplay (package (name "sdrplay") - (version "3.07.1") + (version "3.15.1") (source (origin (method url-fetch) (uri (string-append "https://www.sdrplay.com/software/" "SDRplay_RSP_API-Linux-" version ".run")) (sha256 - (base32 "1a25c7rsdkcjxr7ffvx2lwj7fxdbslg9qhr8ghaq1r53rcrqgzmf")))) + (base32 "0520722j9w8yv523pbvyq08q3lpnjsiy5qd15svd3kqpbnzk4dq9")))) (build-system binary-build-system) (supported-systems '("i686-linux" "x86_64-linux")) (inputs `(("eudev" ,eudev) + ("libusb" ,libusb) ("gcc:lib" ,gcc "lib"))) (arguments (let ((arch (match (or (%current-target-system) @@ -46,9 +91,10 @@ (list (string-append #$arch "/libsdrplay_api.so." #$major-minor) '("gcc:lib")) (list (string-append #$arch "/sdrplay_apiService") - '("eudev" "gcc:lib"))) + '("eudev" "gcc:lib" "libusb"))) #:install-plan - #~(list '("66-mirics.rules" "lib/udev/rules.d/66-mirics.rules") + #~(list '("20-sdrplay.hwdb" "lib/udev/hwdb.d/20-sdrplay.hwdb") + '("66-sdrplay.rules" "lib/udev/rules.d/66-sdrplay.rules") '("inc" "include") (list (string-append #$arch "/libsdrplay_api.so." #$major-minor) (string-append "lib/libsdrplay_api.so." #$major-minor)) @@ -65,6 +111,10 @@ (invoke "sh" source-script "--noexec" "--target" "source") (chdir "source")))) + (add-after 'unpack 'create-udev-files + (lambda* (#:key inputs #:allow-other-keys) + (symlink #$%sdrplay-hwdb "20-sdrplay.hwdb") + (symlink #$%sdrplay-udev-rules "66-sdrplay.rules"))) (add-after 'install 'create-library-links (lambda _ (let* ((lib (string-append #$output "/lib/libsdrplay_api.so")) @@ -85,20 +135,18 @@ package. E.g.: @code{(udev-rules-service 'sdrplay sdrplay)}") "/license.txt"))))) (define-public soapysdrplay3 - (let ((commit "9e5c80c45454db56b8b10bb997369f37e750631b") - (revision "1")) - (package +(package (name "soapysdrplay3") - (version (git-version "0.4.1" revision commit)) + (version "0.5.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/pothosware/SoapySDRPlay3") - (commit commit))) + (commit (string-append "soapy-sdrplay3-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1sl3i1id0fily7qfm0yihxsaqy4f4gr85vl5ip05azhhbrnmnayx")))) + (base32 "15mhgqr5whpyn0q7svwd7zz38karfdgnyi6mgl6bpprz2994ww75")))) (build-system cmake-build-system) (inputs (list sdrplay soapysdr)) @@ -108,4 +156,4 @@ package. E.g.: @code{(udev-rules-service 'sdrplay sdrplay)}") (synopsis "SoapySDR SDRplay module") (description "This package provides SDRplay devices support to the SoapySDR library.") - (license expat)))) + (license expat)))