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: 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