Hello,
it's my first mail on this list, so please forgive me if I do something
wrong.
I'm about to post a couple of patches for RTL drivers:
1. RTL-SDR: convert _lut to float[] to reduce size by a factor of 256.
The _lut is being indexed by I + Q (16 bits = 65536 entries), however
both samples can be processed independently, resulting in 8-bit LUT.
Saves a bit of RAM and CPU cache.
lib/rtl/rtl_source_c.cc | 19 ++++++-------------
lib/rtl/rtl_source_c.h | 4 ++--
2 files changed, 8 insertions(+), 15 deletions(-)
2. RTL-TCP: Convert to single class model
The existing RTL TCP driver is quite different from its brother RTL_SDR.
It's much more complicated, uses gr::blocks::deinterleave and
gr::blocks::float_to_complex, and generally doesn't work correctly
(e.g. https://github.com/csete/gqrx/issues/99
Spectrum is mirrored when filter or demodulator changes (rtl_tcp) #99)
I've converted the RTL TCP driver to the model used by RTL_SDR,
simplifying it in the process, and fixing the GQRX issue.
lib/rtl_tcp/CMakeLists.txt | 1 -
lib/rtl_tcp/rtl_tcp_source_c.cc | 352 ++++++++++++++++++++++++++++++++--------
lib/rtl_tcp/rtl_tcp_source_c.h | 32 +++-
lib/rtl_tcp/rtl_tcp_source_f.cc | 327 -------------------------------------
lib/rtl_tcp/rtl_tcp_source_f.h | 125 --------------
5 files changed, 309 insertions(+), 528 deletions(-)
I'm also thinking about merging the code common to RTL-SDR and RTL-TCP,
but this it's done yet.
Comments?
--
Krzysztof Halasa
Here are some real beginner questions that I would like
to have a better understanding of concerning SDR in general and
the rtl dongles:
I understand that the I and Q signals are both 8-bit
numbers so each one can have 2^8 possible levels. Is the in-phase
value related to the amplitude of the signal such that frequency
variations within the pass band don't change it much?
Is the Q or Quadrature value something that varies with
whether or not the frequency is higher or lower than the center
frequency set in to the device?
I could imagine that if the Q value responds to changes
in frequency that one could get the effect of a discriminator
circuit.
I bought a couple of the rtl dongles and tried out the
rtl-fm program to receive local FM signals and it worked quite
well.
Finally, what determines the pass-band? It did seem to
get smaller if I tried a 12,000 HZ sample rate. I also was
surprised at how accurate the frequency is.
Other than the fact that I am at the low end of the
learning curve, I see all kinds of possibilities.
Martin McCormick WB5AGZ
Hello list,
these days I was experimenting with the FIR filters. If my reasoning are
correct
there is rooms for improvement with some trade-off between bandwidth
flatness
and image aliasing. I'm not saying the default FIR is to trash but I
think there can
be specialized application that will benefit from a custom FIR.
Even to just let more people test my theory I need support for FIR
coefficient loading
so even who can't program the driver but have lab test equipment can
give me a
feedback. I have prepared a patch for rtl-sdr and gr-osmosdr to load FIR
coefficients
with a device string like
"rtl=0,fir=50:54:57:60:63:65:68:70:72:74:75:77:78:78:79:79"
for a little discussion see here with some screenshot:
https://www.reddit.com/r/RTLSDR/comments/5jqk5h/playing_with_rtl2832u_fir_f…
I'm looking for feedback and once this patch get accepted (I hope so :) )
I will push the one for gr-osmosdr.
best regards
Luigi
PS: I hope to not send another garbage patch....
Signed-off-by: Luigi Tarenga <luigi.tarenga(a)gmail.com>
---
include/rtl-sdr.h | 9 +++++++++
src/librtlsdr.c | 6 ++++++
2 files changed, 15 insertions(+)
diff --git a/include/rtl-sdr.h b/include/rtl-sdr.h
index fe64bea..74cd765 100644
--- a/include/rtl-sdr.h
+++ b/include/rtl-sdr.h
@@ -169,6 +169,15 @@ RTLSDR_API int
rtlsdr_set_freq_correction(rtlsdr_dev_t *dev, int ppm);
*/
RTLSDR_API int rtlsdr_get_freq_correction(rtlsdr_dev_t *dev);
+/*!
+ * Load and set FIR filter coefficients.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \param new_fir the vector of 16 integer FIR coefficients
+ * \return 0 on success
+ */
+RTLSDR_API int rtlsdr_load_fir_coefficients(rtlsdr_dev_t *dev, int
*new_fir);
+
enum rtlsdr_tuner {
RTLSDR_TUNER_UNKNOWN = 0,
RTLSDR_TUNER_E4000,
diff --git a/src/librtlsdr.c b/src/librtlsdr.c
index 9b7ba52..4b7855f 100644
--- a/src/librtlsdr.c
+++ b/src/librtlsdr.c
@@ -613,6 +613,12 @@ int rtlsdr_set_fir(rtlsdr_dev_t *dev)
return 0;
}
+int rtlsdr_load_fir_coefficients(rtlsdr_dev_t *dev, int *new_fir)
+{
+ memcpy(dev->fir, new_fir, sizeof(fir_default));
+ return rtlsdr_set_fir(dev);
+}
+
void rtlsdr_init_baseband(rtlsdr_dev_t *dev)
{
unsigned int i;
--
2.11.0
hello list,
with this patch I try to start adding support for independent gain
setting to rtl-sdr.
If this will go on (after review of course) I will be able to send a
patch for gr-osmosdr
to expose those controls to end user applications like gqrx.
I see some users wish to experiment with manual tuning like it's
possible to do on SDR#
with airspy dongle that use R820T tuner. I see some users started their
own tree to add this.
There will be some complexity added but I think this can be masked with
a proper
patching of gr-osmosdr to no break compatibility with existing software
and let users
get the old control layout.
In a future patch I wish to add:
- single automatic gain control. I ask if it's ok to expose a
function like
rtlsdr_set_tuner_gain_mode() and internally recycle the function
added by
this patch but with a new *mode* parameter.
- optimized gain for *max sensitivity* and *max linearity* like those
found in airspy code.
here I ask if is fine to expose gains as just integers instead of
tenth of dB.
best regards
Luigi
Signed-off-by: Luigi Tarenga <luigi.tarenga(a)gmail.com>
---
include/rtl-sdr.h | 62 ++++++++++++++++++++++++++
include/tuner_r82xx.h | 3 ++
src/librtlsdr.c | 120
+++++++++++++++++++++++++++++++++++++++++++++++---
src/tuner_r82xx.c | 53 +++++++++++++++++++++-
4 files changed, 230 insertions(+), 8 deletions(-)
diff --git a/include/rtl-sdr.h b/include/rtl-sdr.h
index fe64bea..2eec99c 100644
--- a/include/rtl-sdr.h
+++ b/include/rtl-sdr.h
@@ -216,6 +216,41 @@ RTLSDR_API int rtlsdr_get_tuner_gains(rtlsdr_dev_t
*dev, int *gains);
RTLSDR_API int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain);
/*!
+ * Set the LNA gain for the device.
+ *
+ * Valid gain values for the R820T tuner are from 0 to 15.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \param gain between 0 and 15.
+ * \return 0 on success
+ */
+RTLSDR_API int rtlsdr_set_tuner_lna_gain(rtlsdr_dev_t *dev, int gain);
+
+/*!
+ * Set the Mixer gain for the device.
+ * Manual gain mode must be enabled for this to work.
+ *
+ * Valid gain values for the R820T tuner are from 0 to 15.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \param gain between 0 and 15.
+ * \return 0 on success
+ */
+RTLSDR_API int rtlsdr_set_tuner_mix_gain(rtlsdr_dev_t *dev, int gain);
+
+/*!
+ * Set the VGA gain for the device.
+ * Manual gain mode must be enabled for this to work.
+ *
+ * Valid gain values for the R820T tuner are from 0 to 15.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \param gain between 0 and 15.
+ * \return 0 on success
+ */
+RTLSDR_API int rtlsdr_set_tuner_vga_gain(rtlsdr_dev_t *dev, int gain);
+
+/*!
* Set the bandwidth for the device.
*
* \param dev the device handle given by rtlsdr_open()
@@ -233,6 +268,33 @@ RTLSDR_API int
rtlsdr_set_tuner_bandwidth(rtlsdr_dev_t *dev, uint32_t bw);
RTLSDR_API int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev);
/*!
+ * Get actual LNA gain the device is configured to.
+ * The LNA gain must have been set with \ref rtlsdr_set_tuner_lna_gain
function.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \return -1 on error, LNA gain register value (0 to 15 for R820T).
+ */
+RTLSDR_API int rtlsdr_get_tuner_lna_gain(rtlsdr_dev_t *dev);
+
+/*!
+ * Get actual Mixer gain the device is configured to.
+ * The Mixer gain must have been set with \ref
rtlsdr_set_tuner_mix_gain function.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \return -1 on error, Mixer gain register value (0 to 15 for R820T).
+ */
+RTLSDR_API int rtlsdr_get_tuner_mix_gain(rtlsdr_dev_t *dev);
+
+/*!
+ * Get actual VGA gain the device is configured to.
+ * The VGA gain must have been set with \ref rtlsdr_set_tuner_vga_gain
function.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \return -1 on error, VGA gain register value (0 to 15 for R820T).
+ */
+RTLSDR_API int rtlsdr_get_tuner_vga_gain(rtlsdr_dev_t *dev);
+
+/*!
* Set the intermediate frequency gain for the device.
*
* \param dev the device handle given by rtlsdr_open()
diff --git a/include/tuner_r82xx.h b/include/tuner_r82xx.h
index f6c206a..3ddb9c6 100644
--- a/include/tuner_r82xx.h
+++ b/include/tuner_r82xx.h
@@ -115,6 +115,9 @@ int r82xx_standby(struct r82xx_priv *priv);
int r82xx_init(struct r82xx_priv *priv);
int r82xx_set_freq(struct r82xx_priv *priv, uint32_t freq);
int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int
gain);
+int r82xx_set_lna_gain(struct r82xx_priv *priv, int gain);
+int r82xx_set_mix_gain(struct r82xx_priv *priv, int gain);
+int r82xx_set_vga_gain(struct r82xx_priv *priv, int gain);
int r82xx_set_bandwidth(struct r82xx_priv *priv, int bandwidth,
uint32_t rate);
#endif
diff --git a/src/librtlsdr.c b/src/librtlsdr.c
index 9b7ba52..10556a8 100644
--- a/src/librtlsdr.c
+++ b/src/librtlsdr.c
@@ -62,6 +62,9 @@ typedef struct rtlsdr_tuner_iface {
int (*set_freq)(void *, uint32_t freq /* Hz */);
int (*set_bw)(void *, int bw /* Hz */);
int (*set_gain)(void *, int gain /* tenth dB */);
+ int (*set_lna_gain)(void *, int gain /* register value */);
+ int (*set_mix_gain)(void *, int gain /* register value */);
+ int (*set_vga_gain)(void *, int gain /* register value */);
int (*set_if_gain)(void *, int stage, int gain /* tenth dB */);
int (*set_gain_mode)(void *, int manual);
} rtlsdr_tuner_iface_t;
@@ -117,6 +120,9 @@ struct rtlsdr_dev {
uint32_t offs_freq; /* Hz */
int corr; /* ppm */
int gain; /* tenth dB */
+ int lna_gain; /* register value */
+ int mix_gain; /* register value */
+ int vga_gain; /* register value */
struct e4k_state e4k_s;
struct r82xx_config r82xx_c;
struct r82xx_priv r82xx_p;
@@ -258,6 +264,18 @@ int r820t_set_gain(void *dev, int gain) {
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
return r82xx_set_gain(&devt->r82xx_p, 1, gain);
}
+int r820t_set_lna_gain(void *dev, int gain) {
+ rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
+ return r82xx_set_lna_gain(&devt->r82xx_p, gain);
+}
+int r820t_set_mix_gain(void *dev, int gain) {
+ rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
+ return r82xx_set_mix_gain(&devt->r82xx_p, gain);
+}
+int r820t_set_vga_gain(void *dev, int gain) {
+ rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
+ return r82xx_set_vga_gain(&devt->r82xx_p, gain);
+}
int r820t_set_gain_mode(void *dev, int manual) {
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
return r82xx_set_gain(&devt->r82xx_p, manual, 0);
@@ -266,36 +284,37 @@ int r820t_set_gain_mode(void *dev, int manual) {
/* definition order must match enum rtlsdr_tuner */
static rtlsdr_tuner_iface_t tuners[] = {
{
- NULL, NULL, NULL, NULL, NULL, NULL, NULL /* dummy for unknown
tuners */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL /*
dummy for unknown tuners */
},
{
e4000_init, e4000_exit,
- e4000_set_freq, e4000_set_bw, e4000_set_gain, e4000_set_if_gain,
+ e4000_set_freq, e4000_set_bw, e4000_set_gain, NULL, NULL, NULL,
e4000_set_if_gain,
e4000_set_gain_mode
},
{
_fc0012_init, fc0012_exit,
- fc0012_set_freq, fc0012_set_bw, _fc0012_set_gain, NULL,
+ fc0012_set_freq, fc0012_set_bw, _fc0012_set_gain, NULL, NULL,
NULL, NULL,
fc0012_set_gain_mode
},
{
_fc0013_init, fc0013_exit,
- fc0013_set_freq, fc0013_set_bw, _fc0013_set_gain, NULL,
+ fc0013_set_freq, fc0013_set_bw, _fc0013_set_gain, NULL, NULL,
NULL, NULL,
fc0013_set_gain_mode
},
{
fc2580_init, fc2580_exit,
- _fc2580_set_freq, fc2580_set_bw, fc2580_set_gain, NULL,
+ _fc2580_set_freq, fc2580_set_bw, fc2580_set_gain, NULL, NULL,
NULL, NULL,
fc2580_set_gain_mode
},
{
r820t_init, r820t_exit,
- r820t_set_freq, r820t_set_bw, r820t_set_gain, NULL,
+ r820t_set_freq, r820t_set_bw, r820t_set_gain,
+ r820t_set_lna_gain, r820t_set_mix_gain, r820t_set_vga_gain, NULL,
r820t_set_gain_mode
},
{
r820t_init, r820t_exit,
- r820t_set_freq, r820t_set_bw, r820t_set_gain, NULL,
+ r820t_set_freq, r820t_set_bw, r820t_set_gain, NULL, NULL, NULL,
NULL,
r820t_set_gain_mode
},
};
@@ -1049,6 +1068,69 @@ int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int
gain)
return r;
}
+int rtlsdr_set_tuner_lna_gain(rtlsdr_dev_t *dev, int gain)
+{
+ int r = 0;
+
+ if (!dev || !dev->tuner)
+ return -1;
+
+ if (dev->tuner->set_lna_gain) {
+ rtlsdr_set_i2c_repeater(dev, 1);
+ r = dev->tuner->set_lna_gain((void *)dev, gain);
+ rtlsdr_set_i2c_repeater(dev, 0);
+ }
+
+ if (!r)
+ dev->lna_gain = gain;
+ else
+ dev->lna_gain = 0;
+
+ return r;
+}
+
+int rtlsdr_set_tuner_mix_gain(rtlsdr_dev_t *dev, int gain)
+{
+ int r = 0;
+
+ if (!dev || !dev->tuner)
+ return -1;
+
+ if (dev->tuner->set_mix_gain) {
+ rtlsdr_set_i2c_repeater(dev, 1);
+ r = dev->tuner->set_mix_gain((void *)dev, gain);
+ rtlsdr_set_i2c_repeater(dev, 0);
+ }
+
+ if (!r)
+ dev->mix_gain = gain;
+ else
+ dev->mix_gain = 0;
+
+ return r;
+}
+
+int rtlsdr_set_tuner_vga_gain(rtlsdr_dev_t *dev, int gain)
+{
+ int r = 0;
+
+ if (!dev || !dev->tuner)
+ return -1;
+
+ if (dev->tuner->set_vga_gain) {
+ rtlsdr_set_i2c_repeater(dev, 1);
+ r = dev->tuner->set_vga_gain((void *)dev, gain);
+ rtlsdr_set_i2c_repeater(dev, 0);
+ }
+
+ if (!r)
+ dev->vga_gain = gain;
+ else
+ dev->vga_gain = 0;
+
+ return r;
+}
+
int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev)
{
if (!dev)
@@ -1057,6 +1139,30 @@ int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev)
return dev->gain;
}
+int rtlsdr_get_tuner_lna_gain(rtlsdr_dev_t *dev)
+{
+ if (!dev)
+ return -1;
+
+ return dev->lna_gain;
+}
+
+int rtlsdr_get_tuner_mix_gain(rtlsdr_dev_t *dev)
+{
+ if (!dev)
+ return -1;
+
+ return dev->mix_gain;
+}
+
+int rtlsdr_get_tuner_vga_gain(rtlsdr_dev_t *dev)
+{
+ if (!dev)
+ return -1;
+
+ return dev->vga_gain;
+}
+
int rtlsdr_set_tuner_if_gain(rtlsdr_dev_t *dev, int stage, int gain)
{
int r = 0;
diff --git a/src/tuner_r82xx.c b/src/tuner_r82xx.c
index f620238..64d412b 100644
--- a/src/tuner_r82xx.c
+++ b/src/tuner_r82xx.c
@@ -1018,7 +1018,7 @@ int r82xx_set_gain(struct r82xx_priv *priv, int
set_manual_gain, int gain)
if (rc < 0)
return rc;
- /* Mixer auto off */
+ /* Mixer auto off */
rc = r82xx_write_reg_mask(priv, 0x07, 0, 0x10);
if (rc < 0)
return rc;
@@ -1073,6 +1073,57 @@ int r82xx_set_gain(struct r82xx_priv *priv, int
set_manual_gain, int gain)
return 0;
}
+int r82xx_set_lna_gain(struct r82xx_priv *priv, int gain)
+{
+ int rc;
+
+ /* LNA auto off */
+ rc = r82xx_write_reg_mask(priv, 0x05, 0x10, 0x10);
+ if (rc < 0)
+ return rc;
+
+ /* set LNA gain */
+ rc = r82xx_write_reg_mask(priv, 0x05, (uint8_t) gain, 0x0f);
+ if (rc < 0)
+ return rc;
+
+ return 0;
+}
+
+int r82xx_set_mix_gain(struct r82xx_priv *priv, int gain)
+{
+ int rc;
+
+ /* Mixer auto off */
+ rc = r82xx_write_reg_mask(priv, 0x07, 0, 0x10);
+ if (rc < 0)
+ return rc;
+
+ /* set Mixer gain */
+ rc = r82xx_write_reg_mask(priv, 0x07, (uint8_t) gain, 0x0f);
+ if (rc < 0)
+ return rc;
+
+ return 0;
+}
+
+int r82xx_set_vga_gain(struct r82xx_priv *priv, int gain)
+{
+ int rc;
+
+ /* VGA auto off */
+ rc = r82xx_write_reg_mask(priv, 0x0c, 0, 0x10);
+ if (rc < 0)
+ return rc;
+
+ /* set VGA gain */
+ rc = r82xx_write_reg_mask(priv, 0x0c, (uint8_t) gain, 0x0f);
+ if (rc < 0)
+ return rc;
+
+ return 0;
+}
+
/* Bandwidth contribution by low-pass filter. */
static const int r82xx_if_low_pass_bw_table[] = {
1700000, 1600000, 1550000, 1450000, 1200000, 900000, 700000,
550000, 450000, 350000
--
2.11.0
The include directory in gnuradio-osmosdr.pc.in
includedir=${prefix}/@GR_INCLUDE_DIR@
ends up pointing to
includedir=${prefix}/include
when the file gnuradio-osmosdr.pc is installed in $prefix/lib/pkgconfig.
But it appears the include files for gnuradio-osmosdr.pc are installed in
includedir=${prefix}/include/osmosdr
When I attempted to build software using gr-osmosdr outside of the
gnuradio tree, I had to add the subdirectory ./osmosdr to the include
path in gnuradio-osmosdr.pc otherwise cmake complained it couldn't find
the gnuradio-osmosdr includes.
Since it appears to build
gr-osmosdr
without the subdirectory osmosdr added to the include path, I'm not
really sure what's going on.
-- Cinaed
hello,
I'm trying to build rtl-sdr on win10. I choosed to use mingw and qtcreator.
I installed:
cmake 3.7.1
qtcreate 4.2.0
mingw32 (to build libusb)
I compiled libusb with mingw32 and automake and installed in Desktop\libusb\.
Now I'm trying to find out how to generate make files for rtl-sdr passing
the folder where I installed libusb (library and header) in qtcreator.
I don't understand if I have to modify CMakeLists.txt or there is some
gui to enter
the correct parameter. I have even to find out if I have to explicit the
variable LIBUSB_PKG_INCLUDE_DIRS or what...
running cmake (from qtcreator) returns with error that I'm missing
libusb and libpthread.
I think that once I can solve the problem for libusb I will be able to
solve even the one of
libpthread. can someone help me in this phase?
thanks
Luigi
Dear Osmocom Community,
[please respect the Reply-To and post all follow-up discussion to this
to openbsc(a)lists.osmocom.org, so we avoid having long threads
cross-posted to several mailing lists.]
>From 2012 to 2016 we were running a series of small, invitation-only
Osmocom Developer Conferences. Access was intentionally restricted
to those community members who have demonstrated an existing track
record of contribution to any of the projects under the Osmocom
umbrella.
This format of a small, tightly knit group of about 20 people has been
successful over the years, and I have received a lot of positive
feedback from past participants.
On the other hand, the Osmocom project has grown in scope and diversity,
and some of those projects don't have all that much relationship to each
other - except being started by people from within the same group.
There's the cellular communications (GSM/GPRS/EDGE/UMTS and hopefully at
some point LTE) protocols which is attracting a lot of professional
users. And then there's pure community projects like rtl-sdr,
OsmocomBB, OsmocomGMR and many other efforts.
Particularly the cellular infrastructure projects (OsmoBTS, OsmoPCU,
OsmoBTS, OsmoNITB, OsmoSGSN, OpenGGSN, OsmoIuh & co) are somehow
"standing out" of the othe projects in the context of having a wider
user bsae, and in that user base also primarily commercial users.
So I'd like to start a discussion on how to possibly change the event
format to accomodate the various interests and parties. I definitely
don't want to loose the "annual meeting of old friends" atmosphere,
while at the same time also opening up to other interested parties.
One idea would be to keep OsmoDevCon as-is and have a separate event
where non-contributing/developing users / sysadmins / system integrators
could also be attending.
Another idea would be to split into a 'user day' and 'developer days'
format. This is something the netfilter developer workshops have been
using for many years, and from my limited insight quite successfully so.
The "user day" is more like a traditional tech conference, with a large
auditorium and talks oriented towards users / sysadmins / integrators of
the software. The "developer days" are the invitation-only part, for
known contributing developers only, similar to what we have at
OsmoDevCon.
Having both events (or both parts of an event) back-to-back has the
advantage that a large number of potential speakers for the 'user day'
are already present, and they don't have to travel yet another time.
One could even structure it further and say we have one user day, one
public 'Osmocom cellular developer day' and then the closed 'OsmoDevCon
classic', maybe reduced from 4 days to 3 or even 2 days only?
What is the general opinion about this?
Are there people lurking on this list who would be interested in
attending a public 'user day' or even 'developer day' about the Osmocom
cellular projects, with presentations and workshops around topics such
as running Osmocom based cellular networks?
In terms of when/where, I would suggest to keep the tradition of April
in Berlin/Germany. But I'm of course very happy if somebody wants to
host it some place else...
Regards, and looking forward to meeting you [again] in 2017,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hello,
I am not sure how to set auto gain on a RTL dongle. I ran across this
which I think should be what I need:
http://cgit.osmocom.org/gr-osmosdr/tree/grc/gen_osmosdr_blocks.py
From that page:
|<param> <name>Ch$(n): Gain Mode</name> <key>gain_mode$(n)</key>
<value>False</value> <type>bool</type> <hide>\#if \$nchan() > $n then
'none' else 'all'#</hide> <option> <name>Manual</name> <key>False</key>
</option> <option> <name>Automatic</name> <key>True</key> </option>
</param> |
However it is not clear what I need to pass to make auto gain happen.
Thanks,
John