Dear all,
I found that the fix for the USB issue on ARM systems has finally made
it into the Linux kernel, 5.6.14 and 5.7-rc6. Today I installed the
latest Manjaro 64 unstable mainline kernel on my rpi4 and made some
quick tests with fl-wspr (https://github.com/tejeez/fl2k-tool).
There are no more USB errors*, but I still get underflow errors at high
sample rates. In my quick tests the maximum reliable sample rate was about
20 MHz when running in an X session with other programs. When I
stopped the X server and ran in a text console I could go above 30 MHz
without underflows.
This means that the rpi4 is fine as an SDR transceiver for many
purposes- but it would be nice to know if it is possible to tune the
system for a bit higher sample rates!
All the best
SM2YHP Fredrik
* Installed AUR package libosmo-fl2k-git to fix other USB
device issues
--
------------------
Carl-Fredrik Enell
Föraregatan 26B
SE-98139 Kiruna
+46705508256
-----------------
I'm using an Airspy HF+ Discovery with the Soapy driver. Whenever I turn
AGC off it stops receiving samples.
On closer inspection, switching AGC off results in samples stalling for
an extended period (hundreds of milliseconds). As such, we hit the
timeout in SoapyAirspyHF::readStream() and return SOAPY_SDR_TIMEOUT (-1).
Things go wrong at this point. It takes a long time before readStream()
is called again, presumably because we returned 0 from work(). By this
time our buffers have overflown, readStream() returns SOAPY_SDR_OVERFLOW
(-2) and work() returns 0. We loop forever, continually overflowing
buffers.
Fix this by looping in soapy_source_c::work() when ->readStream() returns
SOAPY_SDR_OVERFLOW so that we consume the buffers straight away.
Signed-off-by: Anton Blanchard <anton(a)ozlabs.org>
---
lib/soapy/soapy_source_c.cc | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/lib/soapy/soapy_source_c.cc b/lib/soapy/soapy_source_c.cc
index a645361..9dcc885 100644
--- a/lib/soapy/soapy_source_c.cc
+++ b/lib/soapy/soapy_source_c.cc
@@ -96,9 +96,13 @@ int soapy_source_c::work( int noutput_items,
{
int flags = 0;
long long timeNs = 0;
- int ret = _device->readStream(
- _stream, &output_items[0],
- noutput_items, flags, timeNs);
+ int ret;
+
+ do {
+ ret = _device->readStream(
+ _stream, &output_items[0],
+ noutput_items, flags, timeNs);
+ } while (ret == SOAPY_SDR_OVERFLOW);
if (ret < 0) return 0; //call again
return ret;
--
2.25.2
Hi everyone,
thanks in advance for the support, where I can modify the subject value.
I have found the variable inside rds_mod.c but I didn't find anywhere they
are set.
The request is made because seems the windows binaries has them but they
were set and compiled or it's me that I didn't find where they are?
Kind regards,
Marco