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 >