Which options are those? I’d be happy to isolate the underlying patches and submit them upstream to the Osmocom rtl-sdr project. This would also make them available to default SatNOGS installations eventually.
Here is the overview of all the options, but the main one I am using is the serial option.
This gives me the opportunity to select the specific RTL-SDR that I want to use for a function.
Usage: rtl_sdr -f frequency_to_tune_to [Hz]
[-s samplerate (default: 2048000 Hz)]
[-w tuner_bandwidth (default: automatic)]
[-d device_index or serial (default: 0)]
[-g gain (default: 0 for auto)]
[-p ppm_error (default: 0)]
[-O set RTL driver options seperated with ':', e.g. -O 'bc=30000:agc=0' ]
f=<freqHz> set tuner frequency
bw=<bw_in_kHz> set tuner bandwidth
bc=<if_in_Hz> set band center relative to the complex-base-band '0' frequency
puts the tuner frequency onto this if frequency (default: 0)
sb=<sideband> set tuner sideband/mirror: 'L' or '0' for lower side band,
'U' or '1' for upper side band. default for R820T/2: 'L'
agc=<tuner_gain_mode> activates tuner agc with '1'. deactivates with '0'
gain=<tenth_dB> set tuner gain. 400 for 40.0 dB
ifm=<tuner_if_mode> set R820T/2 tuner's variable-gain-amplifier (VGA). default: 10011
0: activate agc controlled from RTL2832's feedback
around 0: set gain in 10th dB. 408 for +40.8 dB
5000+val: set gain to val in 10th dB. 5408 for +40.8 dB
10000+idx: set gain idx 0 .. 15: 10015 for maximum gain
dagc=<rtl_agc> set RTL2832's digital agc (after ADC). 1 to activate. 0 to deactivate
ds=<direct_sampling> deactivate/bypass tuner with 1
dm=<ds_mode_thresh> set dynamic direct threshold mode or threshold frequency:
0: use I & Q; 1: use I; 2: use Q; 3: use I below threshold frequency;
4: use Q below threshold frequency (=RTL-SDR v3)
other values set the threshold frequency
harm=<Nth_harmonic> R820T/2: use Nth harmonic for frequencies above 1.76 GHz. default: 5
vcocmin=<current> set R820T/2 VCO current min: 0..7: higher value is more current
vcocmax=<current> set R820T/2 VCO current max: 0..7
vcoalgo=<algo> set R820T/2 VCO algorithm. 0: default. 1: with vcomax=3.9G. 2: Youssef/Carl
Tp=<gpio_pin> set GPIO pin for Bias T, default =0 for rtl-sdr.com compatible V3
T=<bias_tee> 1 activates power at antenna one some dongles, e.g. rtl-sdr.com's V3
[-b output_block_size (default: 16 * 16384)]
[-n number of samples to read (default: 0, infinite)]
[-S force sync output (default: async)]
[-N no dithering (default: use dithering)]
[-H write wave Header to file (default: off)]
filename (a '-' dumps samples to stdout)
Also the updated SoapRTL drivers has this option and I use it when configuring the SAtNOGS client both on bare metal and within a docker container.
One of the stations has all these SDR’s connected, one used by bare metal and two in different containers and then you need make sure by serial you configure the correct device.
Bus 001 Device 006: ID 1d50:60a1 OpenMoko, Inc. Airspy
Bus 001 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 001 Device 002: ID 0bda:2832 Realtek Semiconductor Corp. RTL2832U DVB-T
This seems to be an easy one! The upstream rtl-sdr does already support selecting a device using its serial number with -d <string>. In librtlsdr/librtlsdr the only relevant patch as far as I can see is… e30dbd … documenting it!
The patch we apply which resets the device after 10 seconds of bulk transfer timeout could be accepted upstream. But I doubt that they would accept the proactive reset before each initialization.
Are you the author of both? I’d recommend to submit the first of those patches upstream too, yes. We would probably need to document why this patch is needed & that it is well tested.
Yes, I’m the author. I had done extensive stress tests and managed to find a way to cause lock-ups within a few minutes. The root cause of the timeout though is still unknown to me. I suspect it might have to do with the device itself. So, I ended up writing a couple of patches that address the symptom. The observation may still fail but hopefully it will be reset for the next observation without a need for a reboot.
Regarding these stress tests, I’m sure you have told them already, but I did discover that radiosonde auto rx did cause any of my rtlsdr’s to overheat and hang in a day or so. The scanning auto selects bw based on how many sections it needs to scan the range, needing testing and adjusting it to run at ~2Msps is necessary. That image did not use the patches, so it was pretty much always down.
I’d been keen to link to a patched version of librtlsdr in the auto_rx documentation!
Which repository should I be linking to, and does it have RTLSDR v4 support?
When the V4 came out I tried the first two repos in my builder + Dockerfile and as expected they did work but ended up with failed observations after a while.
I see you build from another source, we probably need a fork with a branch or two for these MR’s so perhaps build from that ?
Looks like the debian package and our on OBS is using based on osmocom 0.6.0
Upstream of rtl-sdr is (and has always been) Osmocom.
Sorry for creating confusion. The sole purpose of this branch “satnogs” was to simplify reasoning in our thread here, it is supposed to be ephemeral and I won’t update it.
If you ask me which version of librtlsdr to promote? Upstream or the packages built for satnogs in OBS.
Yes, the patches referenced above are not merged yet, but hopefully soon.
Since version 2.0.0 the rtl-sdr-blog dongle v4 is supported. Latest release is 2.0.1 (changelog).
[addendum: https://gitea.osmocom.org/sdr/rtl-sdr/ and https://github.com/steve-m/librtlsdr are the same. The latter has been the semi-official github mirror of the osmocom tree when git.osmocom.org didn’t exist yet]
[addendum 2: markdown hyperlink formatting is slightly broken in this wiki atm]
Since then, a new version 2.0.2 has been released, that adresses the soversion issue.
OBS build from my personal project.
I’m currently stress testing it on a Debian 11 laptop.
cat rtl-stress.sh
#!/bin/bash
set -eu
while true
do
timeout -k 5 10 rtl_test 2>&1 | tee -a rtl-stress.log
sleep 1
done