On Wed Jan 10, 2024 at 09:59:12AM +0100, Sebastian Reitenbach wrote:
> Hi,
> 
> On Tuesday, January 09, 2024 22:44 CET, Rafael Sadowski 
> <raf...@sizeofvoid.org> wrote:
> 
> > On Tue Jan 09, 2024 at 10:24:14PM +0100, Sebastian Reitenbach wrote:
> > > Hi,
> > > 
> > > below and attached an update our _very old_ version of comms/rtl-sdr. 
> > > Tested with RTL-SDR BLOG on amd64.
> > > Tuned in into FM radio station with rtl_fm, tracked aircrafts with 
> > > rtl_adsb.
> > > rtl_test, rtl_power work as well, the other binaries not really tested.
> > > 
> > > more or less a complete overhaul of the port, while there, take 
> > > MAINTAINER.
> > > 
> > > comments/test reports/rants, or even OK?
> > > 
> 
> Thanks Rafael, portcheck didn't told me about MODCMAKE_LDFLAGS ;)
> While there, I recognized, the CFLAGS isn't even needed.
> 
> I assume you mean to change as below:

OK with the follwoing knobs:

- Set -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON, checkout:
/usr/ports/pobj/rtl-sdr-2.0.1/rtl-sdr-2.0.1/cmake/Modules/Version.cmake

- Set NO_TEST = Yes

> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/comms/rtl-sdr/Makefile,v
> diff -u -r1.10 Makefile
> --- Makefile  20 Sep 2023 06:52:55 -0000      1.10
> +++ Makefile  10 Jan 2024 08:58:20 -0000
> @@ -1,32 +1,24 @@
>  COMMENT=     software to turn RTL2832U into an SDR
>  
> -DISTNAME=    rtl-sdr-0.20130412
> -REVISION=    3
> +GH_ACCOUNT = osmocom
> +GH_PROJECT = rtl-sdr
> +GH_TAGNAME = v2.0.1
>  
> -SHARED_LIBS= rtlsdr 0.1
> +SHARED_LIBS= rtlsdr 0.2
>  
>  CATEGORIES=  comms
>  
> -HOMEPAGE=    http://sdr.osmocom.org/trac/wiki/rtl-sdr
> +MAINTAINER = Sebastian Reitenbach <sebas...@openbsd.org>
> +HOMEPAGE=    https://osmocom.org/projects/rtl-sdr/wiki
>  
>  # GPLv2+
>  PERMIT_PACKAGE=      Yes
>  
>  WANTLIB += c m pthread usb-1.0
>  
> -# http://cgit.osmocom.org/rtl-sdr
> -SITES=               https://spacehopper.org/mirrors/
> -
>  MODULES=     devel/cmake
>  LIB_DEPENDS= devel/libusb1
>  
> -NO_TEST=     Yes
> -
> -# rtl_tcp, rtl_adsb and rtl_fm require asynchronous mode which is
> -# not currently working. additionally, rtl_adsb and rtl_fm have mutex
> -# issues (unlocking already-unlocked mutex). other programs have been
> -# patched to force synchronous mode.   update DESCR if fixing these.
> -post-install:
> -     cd ${PREFIX}/bin && rm rtl_adsb rtl_tcp
> +MODCMAKE_LDFLAGS=-L${LOCALBASE}/lib
>  
>  .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/comms/rtl-sdr/distinfo,v
> diff -u -r1.1.1.1 distinfo
> --- distinfo  21 Apr 2013 11:45:08 -0000      1.1.1.1
> +++ distinfo  10 Jan 2024 08:58:20 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (rtl-sdr-0.20130412.tar.gz) = 
> yziYeP445KTe5VWGCLV2QSRNjTryKrgk/qvSJyCdGKU=
> -SIZE (rtl-sdr-0.20130412.tar.gz) = 112343
> +SHA256 (rtl-sdr-2.0.1.tar.gz) = 7pt2VozelGdIFumfkYsBcY+d2IoYBKMieAjA73RPvBg=
> +SIZE (rtl-sdr-2.0.1.tar.gz) = 135727
> Index: patches/patch-include_rtl-sdr_h
> ===================================================================
> RCS file: patches/patch-include_rtl-sdr_h
> diff -N patches/patch-include_rtl-sdr_h
> --- patches/patch-include_rtl-sdr_h   15 Oct 2022 12:29:29 -0000      1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,24 +0,0 @@
> -From 92df068dc5acae9e671eefe1f80626319819c52b Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pinkava?= <j...@seznam.cz>
> -Date: Tue, 17 Mar 2015 13:21:09 +0100
> -Subject: [PATCH] New functions rtlsdr_set_tuner_bandwidth()
> -
> -Index: include/rtl-sdr.h
> ---- include/rtl-sdr.h.orig
> -+++ include/rtl-sdr.h
> -@@ -215,6 +215,15 @@ RTLSDR_API int rtlsdr_get_tuner_gains(rtlsdr_dev_t *de
> - RTLSDR_API int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain);
> - 
> - /*!
> -+ * Set the bandwidth for the device.
> -+ *
> -+ * \param dev the device handle given by rtlsdr_open()
> -+ * \param bw bandwidth in Hz. Zero means automatic BW selection.
> -+ * \return 0 on success
> -+ */
> -+RTLSDR_API int rtlsdr_set_tuner_bandwidth(rtlsdr_dev_t *dev, uint32_t bw);
> -+
> -+/*!
> -  * Get actual gain the device is configured to.
> -  *
> -  * \param dev the device handle given by rtlsdr_open()
> Index: patches/patch-src_CMakeLists_txt
> ===================================================================
> RCS file: patches/patch-src_CMakeLists_txt
> diff -N patches/patch-src_CMakeLists_txt
> --- patches/patch-src_CMakeLists_txt  11 Mar 2022 18:26:30 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,26 +0,0 @@
> ---- src/CMakeLists.txt.orig  Fri Apr 12 21:51:14 2013
> -+++ src/CMakeLists.txt       Sun Apr 21 12:17:27 2013
> -@@ -101,12 +101,17 @@ target_link_libraries(rtl_adsb rtlsdr_shared
> - if(UNIX)
> - target_link_libraries(rtl_fm m)
> - target_link_libraries(rtl_adsb m)
> --if(APPLE)
> --    target_link_libraries(rtl_test m)
> --else()
> --    target_link_libraries(rtl_test m rt)
> --endif()
> --endif()
> -+
> -+include(CheckFunctionExists)
> -+check_function_exists(clock_gettime LIBRT_LIBC_HAS_CLOCK_GETTIME)
> -+if(LIBRT_LIBC_HAS_CLOCK_GETTIME)
> -+    set(LIBRT_LIBRARIES)
> -+else(LIBRT_LIBC_HAS_CLOCK_GETTIME)
> -+    find_library(LIBRT_LIBRARIES NAMES rt )
> -+endif(LIBRT_LIBC_HAS_CLOCK_GETTIME)
> -+
> -+target_link_libraries(rtl_test m ${LIBRT_LIBRARIES})
> -+endif(UNIX)
> - 
> - if(WIN32)
> - target_link_libraries(rtl_sdr libgetopt_static)
> Index: patches/patch-src_librtlsdr_c
> ===================================================================
> RCS file: patches/patch-src_librtlsdr_c
> diff -N patches/patch-src_librtlsdr_c
> --- patches/patch-src_librtlsdr_c     15 Oct 2022 12:29:29 -0000      1.3
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,100 +0,0 @@
> -First chunks:
> -From 92df068dc5acae9e671eefe1f80626319819c52b Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pinkava?= <j...@seznam.cz>
> -Date: Tue, 17 Mar 2015 13:21:09 +0100
> -Subject: [PATCH] New functions rtlsdr_set_tuner_bandwidth()
> -
> -Index: src/librtlsdr.c
> ---- src/librtlsdr.c.orig
> -+++ src/librtlsdr.c
> -@@ -85,6 +85,7 @@ struct rtlsdr_dev {
> -     rtlsdr_tuner_iface_t *tuner;
> -     uint32_t tun_xtal; /* Hz */
> -     uint32_t freq; /* Hz */
> -+    uint32_t bw;
> -     uint32_t offs_freq; /* Hz */
> -     int corr; /* ppm */
> -     int gain; /* tenth dB */
> -@@ -906,6 +907,24 @@ int rtlsdr_get_tuner_gains(rtlsdr_dev_t *dev, int *gai
> -     }
> - }
> - 
> -+int rtlsdr_set_tuner_bandwidth(rtlsdr_dev_t *dev, uint32_t bw)
> -+{
> -+    int r = 0;
> -+
> -+    if (!dev || !dev->tuner)
> -+            return -1;
> -+
> -+    if (dev->tuner->set_bw) {
> -+            rtlsdr_set_i2c_repeater(dev, 1);
> -+            r = dev->tuner->set_bw(dev, bw > 0 ? bw : dev->rate);
> -+            rtlsdr_set_i2c_repeater(dev, 0);
> -+            if (r)
> -+                    return r;
> -+            dev->bw = bw;
> -+    }
> -+    return r;
> -+}
> -+
> - int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain)
> - {
> -     int r = 0;
> -@@ -989,14 +1008,14 @@ int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t
> -     if ( ((double)samp_rate) != real_rate )
> -             fprintf(stderr, "Exact sample rate is: %f Hz\n", real_rate);
> - 
> -+    dev->rate = (uint32_t)real_rate;
> -+
> -     if (dev->tuner && dev->tuner->set_bw) {
> -             rtlsdr_set_i2c_repeater(dev, 1);
> --            dev->tuner->set_bw(dev, (int)real_rate);
> -+            dev->tuner->set_bw(dev, dev->bw > 0 ? dev->bw : dev->rate);
> -             rtlsdr_set_i2c_repeater(dev, 0);
> -     }
> - 
> --    dev->rate = (uint32_t)real_rate;
> --
> -     tmp = (rsamp_ratio >> 16);
> -     r |= rtlsdr_demod_write_reg(dev, 1, 0x9f, tmp, 2);
> -     tmp = rsamp_ratio & 0xffff;
> -@@ -1112,6 +1131,7 @@ int rtlsdr_get_direct_sampling(rtlsdr_dev_t *dev)
> - int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on)
> - {
> -     int r = 0;
> -+    int bw;
> - 
> -     if (!dev)
> -             return -1;
> -@@ -1128,7 +1148,14 @@ int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on
> - 
> -     if (dev->tuner && dev->tuner->set_bw) {
> -             rtlsdr_set_i2c_repeater(dev, 1);
> --            dev->tuner->set_bw(dev, on ? (2 * dev->offs_freq) : dev->rate);
> -+            if (on) {
> -+                    bw = 2 * dev->offs_freq;
> -+            } else if (dev->bw > 0) {
> -+                    bw = dev->bw;
> -+            } else {
> -+                    bw = dev->rate;
> -+            }
> -+            dev->tuner->set_bw(dev, bw);
> -             rtlsdr_set_i2c_repeater(dev, 0);
> -     }
> - 
> -@@ -1340,10 +1367,12 @@ int rtlsdr_open(rtlsdr_dev_t **out_dev, uint32_t 
> index
> -     r = libusb_open(device, &dev->devh);
> -     if (r < 0) {
> -             libusb_free_device_list(list, 1);
> --            fprintf(stderr, "usb_open error %d\n", r);
> -+            fprintf(stderr, "libusb_open error %s (%d)\n", 
> libusb_error_name(r), r);
> -             if(r == LIBUSB_ERROR_ACCESS)
> --                    fprintf(stderr, "Please fix the device permissions, 
> e.g. "
> --                    "by installing the udev rules file rtl-sdr.rules\n");
> -+                    fprintf(stderr, "No permission to access the relevant 
> /dev/ugen devices.\n");
> -+            else if(r == LIBUSB_ERROR_NO_DEVICE)
> -+                    fprintf(stderr, "Check that you have sufficient 
> /dev/ugen nodes for your device.\n"
> -+                        "You may need to run sh MAKEDEV ugen[number].\n");
> -             goto err;
> -     }
> - 
> Index: patches/patch-src_rtl_fm_c
> ===================================================================
> RCS file: patches/patch-src_rtl_fm_c
> diff -N patches/patch-src_rtl_fm_c
> --- patches/patch-src_rtl_fm_c        11 Mar 2022 18:26:30 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,74 +0,0 @@
> ---- src/rtl_fm.c.orig        Fri Apr 12 21:51:14 2013
> -+++ src/rtl_fm.c     Tue Apr 23 15:42:34 2013
> -@@ -128,6 +128,7 @@ void usage(void)
> -             "\t[-E sets lower edge tuning (default: center)]\n"
> -             "\t[-N enables NBFM mode (default: on)]\n"
> -             "\t[-W enables WBFM mode (default: off)]\n"
> -+            "\t[-S force sync output (default: async)]\n"
> -             "\t (-N -s 170k -o 4 -A fast -r 32k -l 0 -D)\n"
> -             "\tfilename (a '-' dumps samples to stdout)\n"
> -             "\t (omitting the filename also uses stdout)\n\n"
> -@@ -723,12 +724,22 @@ int main(int argc, char **argv)
> -     uint32_t dev_index = 0;
> -     int device_count;
> -     int ppm_error = 0;
> -+#ifdef __OpenBSD__
> -+    int sync_mode = 1;
> -+#else
> -+    int sync_mode = 0;
> -+#endif
> -     char vendor[256], product[256], serial[256];
> -+    pthread_mutexattr_t attr;
> -+
> -     fm_init(&fm);
> --    pthread_mutex_init(&data_ready, NULL);
> --    pthread_mutex_init(&data_write, NULL);
> -+    pthread_mutexattr_init(&attr);
> -+    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
> -+    pthread_mutex_init(&data_ready, &attr);
> -+    pthread_mutex_init(&data_write, &attr);
> -+    pthread_mutexattr_destroy(&attr);
> - 
> --    while ((opt = getopt(argc, argv, "d:f:g:s:b:l:o:t:r:p:EFA:NWMULRDC")) 
> != -1) {
> -+    while ((opt = getopt(argc, argv, "d:f:g:s:b:l:o:t:r:p:EFA:NWMULRDSC")) 
> != -1) {
> -             switch (opt) {
> -             case 'd':
> -                     dev_index = atoi(optarg);
> -@@ -815,6 +826,9 @@ int main(int argc, char **argv)
> -             case 'R':
> -                     fm.mode_demod = &raw_demod;
> -                     break;
> -+            case 'S':
> -+                    sync_mode = 1;
> -+                    break;
> -             default:
> -                     usage();
> -                     break;
> -@@ -921,9 +935,24 @@ int main(int argc, char **argv)
> -             fprintf(stderr, "WARNING: Failed to reset buffers.\n");}
> - 
> -     pthread_create(&demod_thread, NULL, demod_thread_fn, (void *)(&fm));
> --    rtlsdr_read_async(dev, rtlsdr_callback, (void *)(&fm),
> --                          DEFAULT_ASYNC_BUF_NUMBER,
> --                          lcm_post[fm.post_downsample] * 
> DEFAULT_BUF_LENGTH);
> -+    if (sync_mode) {
> -+            fprintf(stderr, "Reading samples in sync mode...\n");
> -+            while (!do_exit) {
> -+                    r = rtlsdr_read_sync(dev, &fm.buf,
> -+                                         lcm_post[fm.post_downsample] * 
> DEFAULT_BUF_LENGTH,
> -+                                         &fm.buf_len);
> -+                    if (r < 0) {
> -+                            fprintf(stderr, "WARNING: sync read failed.\n");
> -+                            break;
> -+                    }
> -+                    full_demod(&fm);
> -+            }
> -+    } else {
> -+            fprintf(stderr, "Reading samples in async mode...\n");
> -+            rtlsdr_read_async(dev, rtlsdr_callback, (void *)(&fm),
> -+                              DEFAULT_ASYNC_BUF_NUMBER,
> -+                              lcm_post[fm.post_downsample] * 
> DEFAULT_BUF_LENGTH);
> -+    }
> - 
> -     if (do_exit) {
> -             fprintf(stderr, "\nUser cancel, exiting...\n");}
> Index: patches/patch-src_rtl_sdr_c
> ===================================================================
> RCS file: patches/patch-src_rtl_sdr_c
> diff -N patches/patch-src_rtl_sdr_c
> --- patches/patch-src_rtl_sdr_c       11 Mar 2022 18:26:30 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,15 +0,0 @@
> ---- src/rtl_sdr.c.orig       Sun Apr 21 11:58:32 2013
> -+++ src/rtl_sdr.c    Sun Apr 21 11:59:23 2013
> -@@ -110,7 +110,12 @@ int main(int argc, char **argv)
> -     int n_read;
> -     int r, opt;
> -     int i, gain = 0;
> -+#ifdef __OpenBSD__
> -+    /* XXX async doesn't work yet */
> -+    int sync_mode = 1;
> -+#else
> -     int sync_mode = 0;
> -+#endif
> -     FILE *file;
> -     uint8_t *buffer;
> -     uint32_t dev_index = 0;
> Index: patches/patch-src_rtl_test_c
> ===================================================================
> RCS file: patches/patch-src_rtl_test_c
> diff -N patches/patch-src_rtl_test_c
> --- patches/patch-src_rtl_test_c      11 Mar 2022 18:26:30 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,15 +0,0 @@
> ---- src/rtl_test.c.orig      Sun Apr 21 11:58:32 2013
> -+++ src/rtl_test.c   Sun Apr 21 11:59:31 2013
> -@@ -210,7 +210,12 @@ int main(int argc, char **argv)
> -     int n_read;
> -     int r, opt;
> -     int i, tuner_benchmark = 0;
> -+#ifdef __OpenBSD__
> -+    /* XXX async doesn't work yet */
> -+    int sync_mode = 1;
> -+#else
> -     int sync_mode = 0;
> -+#endif
> -     uint8_t *buffer;
> -     uint32_t dev_index = 0;
> -     uint32_t samp_rate = DEFAULT_SAMPLE_RATE;
> Index: pkg/DESCR
> ===================================================================
> RCS file: /cvs/ports/comms/rtl-sdr/pkg/DESCR,v
> diff -u -r1.2 DESCR
> --- pkg/DESCR 23 Apr 2013 14:50:19 -0000      1.2
> +++ pkg/DESCR 10 Jan 2024 08:58:20 -0000
> @@ -9,10 +9,7 @@
>               (narrow band FM, wide band FM, AM and SSB)
>  rtl_sdr:     tunes the device and captures raw data to a file
>  rtl_test:    check the possible tuning range
> -
> -Asynchronous mode is NOT currently supported on OpenBSD; some programs
> -have been modified to force synchronous mode, the following are not yet
> -available:
> -
> +rtl_biast:   turn the RTL-SDR.com bias tee or any GPIO ON and OFF
> +rtl_power:   simple FFT logger
>  rtl_adsb:    simple ADS-B decoder (aircraft tracking)
>  rtl_tcp:     provides a network server for remote access to an SDR
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/comms/rtl-sdr/pkg/PLIST,v
> diff -u -r1.4 PLIST
> --- pkg/PLIST 11 Mar 2022 18:26:30 -0000      1.4
> +++ pkg/PLIST 10 Jan 2024 08:58:20 -0000
> @@ -1,9 +1,19 @@
> +@bin bin/rtl_adsb
> +@bin bin/rtl_biast
>  @bin bin/rtl_eeprom
>  @bin bin/rtl_fm
> +@bin bin/rtl_power
>  @bin bin/rtl_sdr
> +@bin bin/rtl_tcp
>  @bin bin/rtl_test
>  include/rtl-sdr.h
>  include/rtl-sdr_export.h
> -lib/librtlsdr.a
> +lib/cmake/
> +lib/cmake/rtlsdr/
> +lib/cmake/rtlsdr/rtlsdrConfig.cmake
> +lib/cmake/rtlsdr/rtlsdrConfigVersion.cmake
> +lib/cmake/rtlsdr/rtlsdrTargets${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/rtlsdr/rtlsdrTargets.cmake
> +@static-lib lib/librtlsdr.a
>  @lib lib/librtlsdr.so.${LIBrtlsdr_VERSION}
>  lib/pkgconfig/librtlsdr.pc
> 

Reply via email to