Hi again,
I am working on my own SDR project for Stereo FM radio support, but i
would like to also improve quality for rtl_fm application, i made
unoficial patch to add:
Complex FIR - to filter strong signals close to wanted signal
Real FIR - to filter pilot from FM
Stereo FIR
Stereo Deemphasis
AGC support - it can give better resolution of IQ data
Some other improvments in FM radio code.
All FIR filters has 3 possible variants, simple, LUT, SSE2 instricts, of
course SSE is the fastest one and it should works on Intel Atoms, but
not on ARM.
Feel free to use any part of code in any of you programs, I know that
this code is little to much to add it into rtl_fm, but maybe it could
somebody help to recieve HW stereo FM radio.
Speed of SSE code is much better than anything you can get around here,
on Core i7 it consume only 5% of one CPU, so i could demodulate at least
80 channels at the same time in stereo quality of course.
I tried this code only on AMD64 and GCC Linux, so i am not sure if it
can be compiled under windows.
--
Miroslav Slugeň
+420 724 825 885
Teramos Multimedia s.r.o.
Hi there!
I'm using a dongle on a raspberry + rtl_tcp and sdrsharp on another
machine (quad core.... 3gb ram...good machine!)
The problem occour at 00:57
http://www.youtube.com/watch?v=4E2MPfEzEi8
and at 1:34 in this video:
http://www.youtube.com/watch?v=8snz1wQSRpw
If i stop and start sdrsharp, it works ok for some minutes...then the
problem is up again!
No errors appear on the console of raspberry/rtl_tcp
I'm not able to understand if it's a problem of rtl_tcp,raspberry or
whatelse...
Things i've tryed:
1) Changed the samplerate
2) Changed the raspberry (tested tp1/tp2 too...getting 4.98v!!!)
3) Changed the dongle
4) Updated sdrsharp
The dongles tryed work ok on a pc
I've no more idea....
Anyone can help me?
PS: If someone know a program that works in linux and is similar to
sdrsharp AND CAN INTERFACE TO A REMOTE RTL_TCP...
Hi,
I've been working on a project the involves tuning VOR signals. They are
narrow band signals. > 25 kHz. For that, the wide bandwidth of the RTL
dongles isn't that helpful to me. (and actually a hindrance when two
signals are inside the sample range but widely different strengths)
Anyway, the lowest I can get my dongles (R820T) to go is 250ksps, which is
fine. I've been working at that frequency for awhile, but getting some
strange results. For example, if I tune in to 116.8 MHz, which should be
the OAK VOR, it works fine. But if I tune to 115.8 MHz, which should be the
SFO VOR I get ... the OAK VOR. That is, there is a perfect copy of the OAK
signal 1 MHz shifted down.
If I switch the sample rate to 1.024Msps or 900ksps, I don't get this
problem.
I don't understand what is happening here. 1 MHz is an even multiple of
250kHz, so maybe I'm getting an image of OAK overpowering the relatively
weaker SFO signal. But should there not be filters that manage this?
I guess I was expecting that if the device is set to 250ksps, then it would
"close down" filters appropriately to reject signals out of that band. But
maybe the filters don't work properly below a certain sample rate? Like the
rtl2832 can sample down to 250ksps, but the 820T tuner was not designed for
it?
Or perhaps I'm doing something wrong? Can I control the filters directly?
I'm glad I find this issue because I was going nuts thinking my software
had some mysterious bug. But I can reproduce this issue just with SDR# or
whatever. :-)
Regards.
Dave J
Jeff Miller
360.630.5073
_____
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2014.0.4259 / Virus Database: 3684/7048 - Release Date: 01/31/14
Hi and thanks for a great tool set.
I've implemented a faster FM demodulator for rlt_fm. Its an
instantaneous frequency demodulator, like the already implemented atan
method, but it uses some math tricks to get rid of the the actual atan
calculation. Feel free to use it if you wish
Best regards
Anders
Though GSM spec has frequency hopping option, it can be switched on or off by operator. Yes, most operator switch it on.
I think You too are talking different thing. GSM doesn't hops inside each 200khz channel. It hops among multiple 200khz channel.
There is an exception: The downlink broadcasting carrier which carries FCCH SCH BCCH etc doesn't hop, and accordingly uplink RACH carrier doesn't hop either. These two uplink and downlink carrier frequency have a fixed 45MHz spacing if I recall correctly.
I think most of calibration programs use downlink broadcasting carrier to calibrate the dongle, because it doesn't hop and is easy to be captured.
You may also try my matlab calibration tool:
https://github.com/JiaoXianjun/multi-rtl-sdr-calibration
-----Original Message-----
From: "Nikos Balkanas" <nikos.balkanas(a)eyeonix.com>
Sent: 2014/1/31 19:13
To: "Ralph A. Schmid, dk5ras" <ralph(a)schmid.xxx>
Cc: "osmocom-sdr(a)lists.osmocom.org" <osmocom-sdr(a)lists.osmocom.org>; "Richard Koch" <n1gp(a)hotmail.com>
Subject: Re: kalibrate-rtl results...
On Fri, Jan 31, 2014 at 12:47 PM, Ralph A. Schmid, dk5ras <ralph(a)schmid.xxx> wrote:
GSM does not hop around inside its channel, this is wrong, the frequency is +- some Hz accurate, at least in normal western European commercial GSM networks.
Are you sure about that? Check it out:
https://svn.berlin.ccc.de/projects/airprobe/wiki/A
Legend of first picture. If still in doubt that *most" GSM carriers are hoppers, use rtl_power to scan your region ;-)
Nikos
Ralph.
From: osmocom-sdr-bounces(a)lists.osmocom.org [mailto:osmocom-sdr-bounces@lists.osmocom.org] On Behalf Of Nikos Balkanas
Sent: Thursday, January 30, 2014 7:35 PM
To: Richard Koch
Cc: osmocom-sdr(a)lists.osmocom.org
Subject: Re: kalibrate-rtl results...
On Thu, Jan 30, 2014 at 8:21 PM, Richard Koch <n1gp(a)hotmail.com> wrote:
I'm attempting to calibrate my RTL dongles. I notice they are
all about 2-4khz off if I compare against a known broadcast
station's frequency.
I am trying out kalibrate-rtl and am getting varied results.
I am in the US, so I did a 'kal -s EGSM -g 20' and got the following:
chan: 991 (928.4MHz + 26.986kHz) power: 448020.99
chan: 1002 (930.6MHz - 5.631kHz) power: 320357.07
chan: 1003 (930.8MHz + 16.192kHz) power: 109489.92
Then 'kal -c CHANNELNUM -g 20' for each channel number.
I then get the results below which the average frequency error looks
different for each channel. It is consistent though if I run them multiple times.
I would have expected less frequency error since I know that it is really only
about 4Khz off. Or am I not reading the results correctly?
Results seem OK. Do not forget that most BSTs hop around in their allotted 20 Khz channel.
So a result of +/- 20 Khz shouldn't surprise you. Best calibrate against "anchor" BSTs that are steady.
And yes, recommendation is to calibrate against 3 BSTs and correct for the average or stddev if you wish...
Nikos
-Rick
Using device 0: Generic RTL2832U OEM
Found Fitipower FC0013 tuner
Exact sample rate is: 270833.002142 Hz
Setting gain: 100.0 dB
kal: Calculating clock frequency offset.
Using E-GSM-900 channel 991 (928.4MHz)
average [min, max] (range, stddev)
+ 21.342kHz [17837, 27433] (9596, 3402.206299)
overruns: 0
not found: 199
average absolute error: -22.988 ppm
Using device 0: Generic RTL2832U OEM
Found Fitipower FC0013 tuner
Exact sample rate is: 270833.002142 Hz
Setting gain: 100.0 dB
kal: Calculating clock frequency offset.
Using E-GSM-900 channel 1002 (930.6MHz)
average [min, max] (range, stddev)
- 11.529kHz [-15293, -5679] (9614, 3640.780273)
overruns: 0
not found: 194
average absolute error: 12.389 ppm
Using device 0: Generic RTL2832U OEM
Found Fitipower FC0013 tuner
Exact sample rate is: 270833.002142 Hz
Setting gain: 100.0 dB
kal: Calculating clock frequency offset.
Using E-GSM-900 channel 1003 (930.8MHz)
average [min, max] (range, stddev)
+ 14.283kHz [9462, 19098] (9636, 4777.044922)
overruns: 0
not found: 126
average absolute error: -15.345 ppm
while, I can try it, and let's see.
Actually, maybe I will turn it to C some time in the future.
-----Original Message-----
From: "Ron Senykoff" <rsenykoff(a)gmail.com>
Sent: 2014/1/30 23:04
To: "Jiao Xianjun" <putaoshu(a)gmail.com>
Cc: "jdow" <jdow(a)earthlink.net>; "osmocom-sdr(a)lists.osmocom.org" <osmocom-sdr(a)lists.osmocom.org>
Subject: Re: How to get IQ samples from multiple rtl-sdr dongles inasynchronized manner?
Hi Jiao,
Thanks for your work on this. I'm curious if Octave could be used for
some of this.
-Ron / KB1UMH
On Wed, Jan 29, 2014 at 10:14 PM, Jiao Xianjun <putaoshu(a)gmail.com> wrote:
> Hi everybody,
>
> Let me report current progress of this thread.
>
> Now my matlab program can detect and correct sampling and carrier (both
> phase and frequency) error for dongles, and show the sampling phase
> difference between two dongles (at 8X oversampling rate) after correction.
>
> You can try it by yourself here :
> https://github.com/JiaoXianjun/multi-rtl-sdr-calibration
>
> Some runs results have also been attached here. (time location of FCCH SCH
> and BCCH have also been shown there in different color)
>
> In the attached pictures, you may find that from the GSM frame point of view
> those FCCH, SCH and BCCH from two dongles seem almost in the same time
> location. (this needs to be verified further by check/demodulate information
> carried in SCH and BCCH, which is still under development). But if we
> inspect the time location in a 8X oversampling scale (zoom-in), there is a
> fixed sampling phase difference between two dongles (after correction
> respectively).
>
> Unfortunately, this fixed sampling phase difference may vary from run to run
> (one rum means we restart rtl_tcp).
> Fortunately, it remains fixed in a single run. This offers us a opportunity
> to track continuous input I&Q (don't re-run rtl_tcp!) from multiple dongles,
> and needn't worry about phase/sampling jumping/discontinuous things.
>
> Why do carrier and sampling error estimation and correction respectively?
> Inspired by James Peroulas james(a)peroulas.com (author of Lte-Cell-Scanner),
> for example, when there is a non-coherent up/down-converter used outside
> dongle (like MMDS LNB used by Omri Iluz omri(a)iluz.net to detect 2.4GHz band
> signal), there won't be strict relationship between sampling error (which is
> in baseband) and carrier error (which may be located in inside dongle or
> outside dongle mixer).
>
> But for my in-hands dongles, sampling error and carrier seems have
> relationship. This may be because they have common clock source inside
> dongle.
>
> Which I detected by my matlab program gsm_sync_demod.m:
> dongle 1: sampling PPM 27.1739, carrier PPM -28.513
> dongle 2: sampling PPM 116.3043, carrier PPM -118.4247
>
> In my program a positive sampling PPM means sampling clock is slower than
> standard/ideal source (in our case, this source is GSM base-station). If LO
> of mixer uses the same clock as sampling, that may cause a lower LO in
> mixer/down-converter. I guess the LO frequency of mixer in dongle is higher
> than input antenna RF frequency, which means for mixer: output = LO - input.
> Thus a lower LO generates a lower input into baseband, that's why I get a
> negative carrier PPM (negative carrier PPM means detected carrier frequency
> is lower than standard/ideal source).
> I don't know if my guess is correct. Anyone is familiar with the hardware
> architecture of the 820t dongle?
>
> BR
>
> Jiao Xianjun
>
>
>
>
> On Wed, Jan 8, 2014 at 5:23 PM, jdow <jdow(a)earthlink.net> wrote:
>>
>> The last I looked rtl_tcp did not allow full control over the dongle. But,
>> then, to do what I really want has required bypassing rtlsdr to go
>> directly to the usb library so I can access the underlying USB system
>> directly for a specific feature. (A feed through feature in rtlsdr's
>> shared library would be nice when trying to nail down the dongle's
>> identity for restoring context on program startup.)
>>
>> (Building an SDR program without multi-threading is rather like trying
>> to build a bicycle without chains or cables. It can be done. But it's
>> a pathetic tool when you get done with it. Erm, but I do note gear
>> driven bikes need less maintenance under adverse conditions. Been there
>> done that - MANY decades ago.)
>>
>> {^_^} Joanne/W6MKU
>>
>>
>> On 2014/01/07 23:32, Jiao Xianjun wrote:
>>>
>>> Good idea.
>>>
>>> Thanks for your advice!
>>>
>>> But that seems we will do some repeating works.
>>>
>>> rtl_tcp already use mutiple buffers and multi-threading. So why not use
>>> it
>>> directly as a reliable relay.
>>>
>>>
>>> On Tue, Jan 7, 2014 at 1:51 AM, jdow <jdow(a)earthlink.net
>>> <mailto:jdow@earthlink.net>> wrote:
>>>
>>> Have you tried using ping-pong buffers? Process on one buffer and
>>> receive
>>> to another. You may have to use multi-threading to make this work
>>> nicely.
>>>
>>> {^_^} Joanne/W6MKU
>>>
>>>
>>>
>>> On 2014/01/06 01:34, Jiao Xianjun wrote:
>>>
>>> Hi,
>>>
>>> Today I did some experiments using CW signal which is generated
>>> by signal
>>> generator. The conclusion is a little bit sad.
>>>
>>> sync read and UDP lose samples/data high probably:
>>> 1. If there are some other operations (which costs some time)
>>> between two
>>> successive sync reads, some samples will be lost.
>>> 2. Some times, UDP packets are just lost.
>>>
>>> So, seems that I have two choices:
>>> 1. struggle to use async read mode.
>>> 2. use rtl_tcp utility directly, which is offered with rtl-sdr
>>> code. This
>>> program use async mode and TCP, which has avoided the two
>>> shortcomings I
>>> addressed.
>>>
>>> I will try the 2nd method, and try to move on with calibration.
>>>
>>> BR
>>>
>>> Jiao Xianjun
>>>
>>>
>>>
>>> On Sat, Jan 4, 2014 at 8:34 PM, Jiao Xianjun <putaoshu(a)gmail.com
>>> <mailto:putaoshu@gmail.com>
>>> <mailto:putaoshu@gmail.com <mailto:putaoshu@gmail.com>>> wrote:
>>>
>>> Hi,
>>>
>>> I have questions on usage of rtlsdr_read_sync(dev, buffer,
>>> out_block_size,
>>> &n_read):
>>>
>>> For example, if sampling rate is 1Msps, and out_block_size
>>> is 1000000,
>>> question is:
>>>
>>> 1. the rtlsdr_read_sync() will cost 1s exactly? Or is there
>>> any
>>> lower level
>>> device/driver buffer, which perhaps feed rtlsdr_read_sync()
>>> with
>>> history
>>> data quickly and makes rtlsdr_read_sync() return in a time
>>> shorter
>>> than 1s?
>>>
>>> 2. in this infinite processing loop:
>>> while(1)
>>> {
>>> rtlsdr_read_sync(dev, buffer, out_block_size, &n_read);
>>> processing_function(buffer); // let's assume that this cost
>>> 0.001s
>>> }
>>> Those samples during the 0.001s processing period will be
>>> losted or
>>> not? Is
>>> there any method to not lost them?
>>>
>>> Thanks very much!
>>>
>>> BR
>>>
>>> Jiao Xianjun
>>>
>>>
>>>
>>> On Thu, Jan 2, 2014 at 9:25 PM, Jiao Xianjun
>>> <putaoshu(a)gmail.com
>>> <mailto:putaoshu@gmail.com>
>>> <mailto:putaoshu@gmail.com <mailto:putaoshu@gmail.com>>>
>>> wrote:
>>>
>>> I see some UDP packet performance issues in my laptop
>>> (but not
>>> in my
>>> desktop computer). Will the common (interleave multiple
>>> receives) UDP
>>> link helps?
>>>
>>> The issue is that fread for the second dongle in matlab
>>> get
>>> less data
>>> than expectation sometimes. Seem that fread for the
>>> first
>>> dongle works well.
>>>
>>>
>>> ------------------------------__------------------------------__--------------------
>>>
>>> From: Sdr Guru <mailto:sdrguru1@gmail.com
>>> <mailto:sdrguru1@gmail.com>>
>>>
>>> Sent: 2014/1/2 5:39
>>>
>>> To: osmocom-sdr(a)lists.osmocom.org
>>> <mailto:osmocom-sdr@lists.osmocom.org>
>>> <mailto:osmocom-sdr@lists.__osmocom.org
>>>
>>> <mailto:osmocom-sdr@lists.osmocom.org>>
>>>
>>>
>>> Subject: Re: How to get IQ samples from multiple rtl-sdr
>>> dongles in
>>> asynchronized manner?
>>>
>>> Hi
>>>
>>> rtl-sdr-relay
>>> Some of the recommendations.
>>> Please add PPM error calculation, exactly like new
>>> rtl_test -p
>>> but multiple receivers simultaneously.
>>> It provides immediate information if something is wrong
>>> with
>>> USB or dongles.
>>>
>>> https://github.com/keenerd/__rtl-sdr/commit/__b5f89dcf40463130e717b6c9bb3a3…
>>>
>>> <https://github.com/keenerd/rtl-sdr/commit/b5f89dcf40463130e717b6c9bb3a39a3c…>
>>> https://github.com/keenerd/__rtl-sdr/blob/master/src/rtl___test.c
>>>
>>> <https://github.com/keenerd/rtl-sdr/blob/master/src/rtl_test.c>
>>>
>>> Please add automatic eeprom PPM calibration
>>>
>>> https://github.com/keenerd/__rtl-sdr/commit/__ecf267737ca52f5005b7a12a35230…
>>>
>>>
>>> <https://github.com/keenerd/rtl-sdr/commit/ecf267737ca52f5005b7a12a352307e8c…>
>>>
>>> default sample rate 2.4M (28.8/12) or 1.2M (28.8/24),
>>> probably
>>> lower jitter
>>> MAX_NUM_DEV 4->16 :)
>>>
>>> Some nice to have features.
>>> ip binding
>>> multicast support
>>> one common (interleaved) stream of all the receivers
>>> timestamped stream
>>>
>>> I'm trying to convert MATLAB script to Ocatve.
>>>
>>> SG
>>>
>>> On Mon, Dec 30, 2013 at 9:38 AM, Jiao Xianjun
>>> <putaoshu(a)gmail.com <mailto:putaoshu@gmail.com>
>>> <mailto:putaoshu@gmail.com <mailto:putaoshu@gmail.com>>>
>>> wrote:
>>>
>>> Hi guys,
>>>
>>> For the multiple dongles synchronization in signal
>>> level
>>> instead of
>>> bits/packets level, I setup a working repo in
>>> github, and
>>> write a
>>> initial demo framework. See below:
>>>
>>> https://github.com/__JiaoXianjun/multi-rtl-sdr-udp-__relay.git
>>>
>>> <https://github.com/JiaoXianjun/multi-rtl-sdr-udp-relay.git>
>>>
>>> You may find information and instruction of demo
>>> quickly by
>>> reading
>>> the README.
>>>
>>> My initial purpose is performing in-fly calibration
>>> for
>>> multiple
>>> dongles according to some pre-known signal (GSM,
>>> ADS-B?) to
>>> let them
>>> work together coherently.
>>>
>>> An ideal scheme may be that we should generate a
>>> very
>>> narrow band
>>> and very week signal in (or just located at the edge
>>> of) target
>>> working band of dongles, and perform the software
>>> in-fly
>>> calibration
>>> in background (or driver level). This would be user
>>> friendly.
>>>
>>> I know it is far from final state currently, and
>>> many
>>> things are not
>>> clear yet (See TODO). But please join me if you also
>>> think
>>> this is a
>>> good idea. Just check out the demo and run it to
>>> have a look.
>>>
>>> Currently I just test the demo in Ubuntu-Linux.
>>>
>>> BR
>>>
>>> Jiao Xianjun
>
>
Hi everybody,
Let me report current progress of this thread.
Now my matlab program can detect and correct sampling and carrier (both
phase and frequency) error for dongles, and show the sampling phase
difference between two dongles (at 8X oversampling rate) after correction.
You can try it by yourself here :
https://github.com/JiaoXianjun/multi-rtl-sdr-calibration
Some runs results have also been attached here. (time location of FCCH SCH
and BCCH have also been shown there in different color)
In the attached pictures, you may find that from the GSM frame point of
view those FCCH, SCH and BCCH from two dongles seem almost in the same time
location. (this needs to be verified further by check/demodulate
information carried in SCH and BCCH, which is still under development). But
if we inspect the time location in a 8X oversampling scale (zoom-in), there
is a fixed sampling phase difference between two dongles (after correction
respectively).
Unfortunately, this fixed sampling phase difference may vary from run to
run (one rum means we restart rtl_tcp).
Fortunately, it remains fixed in a single run. This offers us a opportunity
to track continuous input I&Q (don't re-run rtl_tcp!) from multiple
dongles, and needn't worry about phase/sampling jumping/discontinuous
things.
Why do carrier and sampling error estimation and correction respectively?
Inspired by James Peroulas james(a)peroulas.com (author of Lte-Cell-Scanner),
for example, when there is a non-coherent up/down-converter used outside
dongle (like MMDS LNB used by Omri Iluz omri(a)iluz.net to detect 2.4GHz band
signal), there won't be strict relationship between sampling error (which
is in baseband) and carrier error (which may be located in inside dongle or
outside dongle mixer).
But for my in-hands dongles, sampling error and carrier seems have
relationship. This may be because they have common clock source inside
dongle.
Which I detected by my matlab program gsm_sync_demod.m:
dongle 1: sampling PPM 27.1739, carrier PPM -28.513
dongle 2: sampling PPM 116.3043, carrier PPM -118.4247
In my program a positive sampling PPM means sampling clock is slower than
standard/ideal source (in our case, this source is GSM base-station). If LO
of mixer uses the same clock as sampling, that may cause a lower LO in
mixer/down-converter. I guess the LO frequency of mixer in dongle is higher
than input antenna RF frequency, which means for mixer: output = LO -
input. Thus a lower LO generates a lower input into baseband, that's why I
get a negative carrier PPM (negative carrier PPM means detected carrier
frequency is lower than standard/ideal source).
I don't know if my guess is correct. Anyone is familiar with the hardware
architecture of the 820t dongle?
BR
Jiao Xianjun
On Wed, Jan 8, 2014 at 5:23 PM, jdow <jdow(a)earthlink.net> wrote:
> The last I looked rtl_tcp did not allow full control over the dongle. But,
> then, to do what I really want has required bypassing rtlsdr to go
> directly to the usb library so I can access the underlying USB system
> directly for a specific feature. (A feed through feature in rtlsdr's
> shared library would be nice when trying to nail down the dongle's
> identity for restoring context on program startup.)
>
> (Building an SDR program without multi-threading is rather like trying
> to build a bicycle without chains or cables. It can be done. But it's
> a pathetic tool when you get done with it. Erm, but I do note gear
> driven bikes need less maintenance under adverse conditions. Been there
> done that - MANY decades ago.)
>
> {^_^} Joanne/W6MKU
>
>
> On 2014/01/07 23:32, Jiao Xianjun wrote:
>
>> Good idea.
>>
>> Thanks for your advice!
>>
>> But that seems we will do some repeating works.
>>
>> rtl_tcp already use mutiple buffers and multi-threading. So why not use it
>> directly as a reliable relay.
>>
>>
>> On Tue, Jan 7, 2014 at 1:51 AM, jdow <jdow(a)earthlink.net
>> <mailto:jdow@earthlink.net>> wrote:
>>
>> Have you tried using ping-pong buffers? Process on one buffer and
>> receive
>> to another. You may have to use multi-threading to make this work
>> nicely.
>>
>> {^_^} Joanne/W6MKU
>>
>>
>> On 2014/01/06 01:34, Jiao Xianjun wrote:
>>
>> Hi,
>>
>> Today I did some experiments using CW signal which is generated
>> by signal
>> generator. The conclusion is a little bit sad.
>>
>> sync read and UDP lose samples/data high probably:
>> 1. If there are some other operations (which costs some time)
>> between two
>> successive sync reads, some samples will be lost.
>> 2. Some times, UDP packets are just lost.
>>
>> So, seems that I have two choices:
>> 1. struggle to use async read mode.
>> 2. use rtl_tcp utility directly, which is offered with rtl-sdr
>> code. This
>> program use async mode and TCP, which has avoided the two
>> shortcomings I
>> addressed.
>>
>> I will try the 2nd method, and try to move on with calibration.
>>
>> BR
>>
>> Jiao Xianjun
>>
>>
>>
>> On Sat, Jan 4, 2014 at 8:34 PM, Jiao Xianjun <putaoshu(a)gmail.com
>> <mailto:putaoshu@gmail.com>
>> <mailto:putaoshu@gmail.com <mailto:putaoshu@gmail.com>>> wrote:
>>
>> Hi,
>>
>> I have questions on usage of rtlsdr_read_sync(dev, buffer,
>> out_block_size,
>> &n_read):
>>
>> For example, if sampling rate is 1Msps, and out_block_size
>> is 1000000,
>> question is:
>>
>> 1. the rtlsdr_read_sync() will cost 1s exactly? Or is there
>> any
>> lower level
>> device/driver buffer, which perhaps feed rtlsdr_read_sync()
>> with
>> history
>> data quickly and makes rtlsdr_read_sync() return in a time
>> shorter
>> than 1s?
>>
>> 2. in this infinite processing loop:
>> while(1)
>> {
>> rtlsdr_read_sync(dev, buffer, out_block_size, &n_read);
>> processing_function(buffer); // let's assume that this cost
>> 0.001s
>> }
>> Those samples during the 0.001s processing period will be
>> losted or
>> not? Is
>> there any method to not lost them?
>>
>> Thanks very much!
>>
>> BR
>>
>> Jiao Xianjun
>>
>>
>>
>> On Thu, Jan 2, 2014 at 9:25 PM, Jiao Xianjun <
>> putaoshu(a)gmail.com
>> <mailto:putaoshu@gmail.com>
>> <mailto:putaoshu@gmail.com <mailto:putaoshu@gmail.com>>>
>> wrote:
>>
>> I see some UDP packet performance issues in my laptop
>> (but not
>> in my
>> desktop computer). Will the common (interleave multiple
>> receives) UDP
>> link helps?
>>
>> The issue is that fread for the second dongle in matlab
>> get
>> less data
>> than expectation sometimes. Seem that fread for the first
>> dongle works well.
>>
>> ------------------------------__----------------------------
>> --__--------------------
>>
>> From: Sdr Guru <mailto:sdrguru1@gmail.com
>> <mailto:sdrguru1@gmail.com>>
>> Sent: 2014/1/2 5:39
>>
>> To: osmocom-sdr(a)lists.osmocom.org
>> <mailto:osmocom-sdr@lists.osmocom.org>
>> <mailto:osmocom-sdr@lists.__osmocom.org
>>
>> <mailto:osmocom-sdr@lists.osmocom.org>>
>>
>> Subject: Re: How to get IQ samples from multiple rtl-sdr
>> dongles in
>> asynchronized manner?
>>
>> Hi
>>
>> rtl-sdr-relay
>> Some of the recommendations.
>> Please add PPM error calculation, exactly like new
>> rtl_test -p
>> but multiple receivers simultaneously.
>> It provides immediate information if something is wrong
>> with
>> USB or dongles.
>> https://github.com/keenerd/__rtl-sdr/commit/__
>> b5f89dcf40463130e717b6c9bb3a39__a3c8b9535f
>> <https://github.com/keenerd/rtl-sdr/commit/
>> b5f89dcf40463130e717b6c9bb3a39a3c8b9535f>
>> https://github.com/keenerd/__rtl-sdr/blob/master/src/rtl___test.c
>>
>> <https://github.com/keenerd/rtl-sdr/blob/master/src/rtl_test.c>
>>
>> Please add automatic eeprom PPM calibration
>> https://github.com/keenerd/__rtl-sdr/commit/__
>> ecf267737ca52f5005b7a12a352307__e8cd763ed6
>>
>> <https://github.com/keenerd/rtl-sdr/commit/
>> ecf267737ca52f5005b7a12a352307e8cd763ed6>
>>
>> default sample rate 2.4M (28.8/12) or 1.2M (28.8/24),
>> probably
>> lower jitter
>> MAX_NUM_DEV 4->16 :)
>>
>> Some nice to have features.
>> ip binding
>> multicast support
>> one common (interleaved) stream of all the receivers
>> timestamped stream
>>
>> I'm trying to convert MATLAB script to Ocatve.
>>
>> SG
>>
>> On Mon, Dec 30, 2013 at 9:38 AM, Jiao Xianjun
>> <putaoshu(a)gmail.com <mailto:putaoshu@gmail.com>
>> <mailto:putaoshu@gmail.com <mailto:putaoshu@gmail.com>>>
>> wrote:
>>
>> Hi guys,
>>
>> For the multiple dongles synchronization in signal
>> level
>> instead of
>> bits/packets level, I setup a working repo in
>> github, and
>> write a
>> initial demo framework. See below:
>>
>> https://github.com/__JiaoXianjun/multi-rtl-sdr-udp-__relay.git
>>
>> <https://github.com/JiaoXianjun/multi-rtl-sdr-udp-relay.git>
>>
>> You may find information and instruction of demo
>> quickly by
>> reading
>> the README.
>>
>> My initial purpose is performing in-fly calibration
>> for
>> multiple
>> dongles according to some pre-known signal (GSM,
>> ADS-B?) to
>> let them
>> work together coherently.
>>
>> An ideal scheme may be that we should generate a very
>> narrow band
>> and very week signal in (or just located at the edge
>> of) target
>> working band of dongles, and perform the software
>> in-fly
>> calibration
>> in background (or driver level). This would be user
>> friendly.
>>
>> I know it is far from final state currently, and many
>> things are not
>> clear yet (See TODO). But please join me if you also
>> think
>> this is a
>> good idea. Just check out the demo and run it to
>> have a look.
>>
>> Currently I just test the demo in Ubuntu-Linux.
>>
>> BR
>>
>> Jiao Xianjun
>>
>
JP,
Thanks for your reply and explanation.
I understand the cutting the coefficient table in half since it
repeats in a backwards manner, but what I don't understand
is why half the table is in 8 bit and the other in 12 bit?
Also I now understand that there is not enough room for extra
coefficients in the rtl2832 for lower bandwidth than 2048Khz.
That is unfortunate if you want lower bandwidth as it forces you
to sample at 2048 or greater and perform your own FIR and
decimation consuming CPU cycles on your host. On an armv4
SBC that is very taxing :^)
-Rick
> Date: Fri, 10 Jan 2014 01:50:51 +0100
> From: j-pi(a)seznam.cz
> To: n1gp(a)hotmail.com; osmocom-sdr(a)lists.osmocom.org
> Subject: Re: Incorrect samplerate from RTL-SDR
> CC: steve(a)steve-m.de
>
> You cannot fit internal FIR filter in SDR to such narrow bandwidth, it
> does not have enough coefficients.
> You can adapt it only to wider band width (some small improvement can be
> done for
> sample rates above 2048 kHz). Select proper values is a bit tricky and
> specialised software
> is almost unavoidable. You can get good hint from FIR filter designer in
> GNU Radio, but
> this software is not designed for this task and the work is cumbersome.
>
> The 8 / 12 bit means the coefficients can be only in range form -128 to
> 127 / -2048 to 2047.
> The usual FIR coefficients absolute value decreases from center to the
> side eg:
>
> 1, -3, 5, 10, 5, -3, 1,
>
> so this just reduces complexity of the device.
>
> For lower bandwidth you need more cofficients (more samples because the
> wave is wider).
>
> JP
>
>
> Dne 9.1.2014 23:53, Richard Koch napsal(a):
> > Hi Steve,
> >
> > In regards to your post about the anti-aliasing filter
> > you referred to, it appears that it is getting set in
> > librtlsdr.c, rtlsdr_init_baseband()
> >
> > If one wanted to change that to optimize the anti-aliasing
> > to a lower bandwidth, say 1500 Khz instead of the 2048 Khz
> >
> > How would you change the fir_coeff[] table entries to achieve
> > this? The 8 bit entries and 12 bit entries are confusing to me.
> >
> >
> > ==== orig post ====
> >
> >> I have seen other reports on the mailing list, saying that sample rates
> >> between 300 kS/s and 900 kS/s don't work. If this applies to all RTL
> >> devices, then maybe it should be documented and the library can return
> >> an error code for such sample rates. Otherwise people will keep walking
> >> into this trap.
> > We could return some sort of error in those cases, but such low rates
> > (< 1MS/s) aren't recommended in general. First of all, the
> > anti-aliasing filter we're using has a fixed bandwidth of 2 MHz, and
> > although the coefficients can be changed, I doubt you can get a nice
> > filter for lower bandwidths with such a low order. And then the ADCs
> > only have 8 bits resolution, so you want to improve that by decimating,
> > and also profit from decimation gain.
> > Even Realtek uses 2.048 MS/s for FM reception in their original Windows
> > software.
>
>
Hi,
i am doing a project to get a certain fequencyspectrum . And thanks to the wonderful tool rtl_power, i can get some dbm data over a very wide area of the frequency specturm.
and i read the source code in order to change it to get a certain frequency specturm.Sadly, i know little about digital signal processiong and getting a hard time solving it.
does anyone know how to get a certain fequencyspectrum using rtl_power or some other tool.
sincerely
Chen Zujie
If you are familiar with matlab, maybe you can try my matlab scanner.
It is easy to change frequency range, RBW, etc, and get spectrum picture.
Please google:
" rtl sdr matlab scanner"
Good luck!
393775602 <393775602(a)qq.com> wrote:
>Hi,
>
> i am doing a project to get a certain fequencyspectrum . And thanks to the wonderful tool rtl_power, i can get some dbm data over a very wide area of the frequency specturm.
>
> and i read the source code in order to change it to get a certain frequency specturm.Sadly, i know little about digital signal processiong and getting a hard time solving it.
>
> does anyone know how to get a certain fequencyspectrum using rtl_power or some other tool.
>
>
>
> sincerely
>
> Chen Zujie
>
After playing around with the E4000 tuner gain settings, I will
summarize my results.
LNA Gain Enhancement
--------------------
LNA Gain Enhancement is working in automatic mode but not in manual mode.
To enable LNA enhancement, write 0x05 to register AGC11. This can be
left unchanged even when enabling manual gain mode.
Required updates for tuner_e4k.c:
Function e4k_enable_manual_gain():
Remove or comment the line that disables LNA Enhancement for auto mode
e4k_reg_set_mask(e4k, E4K_REG_AGC11, 0x7, 0);
Function e4k_init():
Pull line out of null condition to enable LNA Enhancement
e4k_reg_set_mask(e4k, E4K_REG_AGC11, 0x7, E4K_AGC11_LNA_GAIN_ENH |
(2 << 1));
Automatic Mode
--------------
The mixer control register AGC7 defines a threshold value. When
automatic mixer control is enabled and the LNA gain index reaches the
threshold value, the high mixer gain of 12 dB will be used. Upon reset,
the AGC7 register is cleared and the threshold value is never set by the
RTLSDR library. This results in always using the high mixer gain
(threshold value 0 corresponds to the lowest LNA gain).
The datasheet recommends writing 0x15 to AGC7. This corresponds to a
threshold of 15 dB (0x15 >> 1 = 0x0A LNA gain index). A value of 0x1D
would set the threshold to max. LNA gain.
NOTE:
When LNA Enhancement is enabled, setting the threshold to max. gain is
not useful. There will be a strong gain increasement step from 25 + 4 =
29 dB to 25 + 5 + 12 = 42 dB.
Required updates for tuner_e4k.c:
Function e4k_init():
Replace the line
e4k_reg_set_mask(e4k, E4K_REG_AGC7, E4K_AGC7_MIX_GAIN_AUTO, 0);
with this
e4k_reg_write(e4k, E4K_REG_AGC7, 0x14);
The above modification will set the threshold value and disable auto
mixer gain control. e4k_enable_manual_gain() is called later and will
modify only bit 0 of AGC7.
Manual Mode
-----------
In manual mode LNA enhancement is not used. So the list of gains must be
changed because the last two values assume that it is used.
The actually used gains are based on Table 6 and the register map of the
E4000 data sheet. The gain table contains those values plus the mixer
gain of 12 db for the last value and 4 db for all others. But the LNA
gain of 30 dB specified in the data sheet is only valid when LNA gain
enhancement is enabled.
Cite from data sheet section 1.16 LNA Gain enhancement referring
register AGC7:
"The LNA gain numbers quoted throughout this document assume that this
register is programmed to the recommended value."
Even when LNA Enhancement would work with manual mode, the second to
last value is wrong because LNA enhancement requires that the mixer gain
is at 12 dB.
Required updates for librtlsdr.c:
Change int e4k_gains[] from
const int e4k_gains[] = {
-10, 15, 40, 65, 90, 115, 140, 165, 190, 215, 240, 290, 340, 420
};
to
const int e4k_gains[] = {
-50 + 40, -25 + 40, 0 + 40, 25 + 40, 50 + 40, 75 + 40,
100 + 40, 125 + 40, 150 + 40, 175 + 40, 200 + 40, 250 + 40,
200 + 120, // 320, optional additional entry
250 + 120
};
Change top of e4000_set_gain() function from
int e4000_set_gain(void *dev, int gain) {
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
int mixgain = (gain > 340) ? 12 : 4;
if(e4k_set_lna_gain(&devt->e4k_s, min(300, gain - mixgain * 10)) ==
-EINVAL)
to
int e4000_set_gain(void *dev, int gain) {
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
int mixgain = (0 == (gain - 120) % 25) ? 12 : 4;
if(e4k_set_lna_gain(&devt->e4k_s, gain - mixgain * 10) == -EINVAL)
The above extraction of the mixer gain from the combined LNA and mixer
gain can be used for all possible valid LNA/mixer gain combinations.
Required updates for tuner_e4k.c:
Change last value of static const int32_t lnagain[] from 300 to 250
Optionally change second to last value from 250 to 249 to force
selection of the highest possible LNA gain index.
The 2-dim array may be also replaced by a smaller 1-dim array
when updating also e4k_set_lna_gain():
static const int32_t lna_gain[16] = {
-50, -25, -50, -25, 0, 25, 50, 75,
100, 125, 150, 175, 200, 249, 250, 250
};
int e4k_set_lna_gain(struct e4k_state *e4k, int32_t gain)
{
uint32_t i;
for(i = 0; i < ARRAY_SIZE(lnagain); ++i) {
if(lnagain[i] == gain) {
e4k_reg_set_mask(e4k, E4K_REG_GAIN1, 0xf, i);
return gain;
}
}
return -EINVAL;
}
Detecting Signal Strength
-------------------------
The signal strength can be calculated by determining the relative
strength of a signal (e.g. using a FFT) and subtracting the total gain.
To get the total gain in automatic mode, read the registers 0x14 to 0x17
(E4K_REG_GAIN1 to E4K_REG_GAIN4) and calculate the gains. Note again
that the max. LNA gain of 30 dB is only valid when LNA enhancement is
enabled and the mixer gain is at 12 dB. Otherwise, the max. LNA gain is
25 dB.
For signals in the range of -50 to -10 dBm, the RSSI indicator can be
also read from register 0x1C (E4K_REG_AGC3) in automatic mode to
calculate the input power in dBm:
double InputPower = 10 * log10(RSSI)) - 28.5 - LNA_Gain;
The above calculation can be used when the RSSI value is in the range
from 5 to 24. Higher RSSI values occur with strong signals at min. LNA
gain and give too low results due to clipped signals.
Jochen Arndt
Hello everyone,
For your informaqtion. My "SVEON 27" start working just adding it to
librtlsdr.c:
{ 0x1b80, 0xd3af, "SVEON STV27 DVB-T USB & FM" },
Aparently it has a F00013 tuner. It is reported by lsusb as:
Bus 002 Device 004: ID 1b80:d3af Afatech
Cheers
Nacho Mas
Hi,
i am studying the rtl-sdr code recently and get it start and receive some data,
and i want to analysis the data by myself, does anyone have a RTL2832U datasheet.
can anyone send me one? or tell me where i can download it or buy it!
Thanks all the same
Chen Zujie
Guys,
As you know, our sample rate is not good enough to decode UAT's FSK in
a conventional way, so I thought to try something else: use 2 samples
per bit to detect the frequency shift. This is obviously unreliable,
but I hoped to see something at least. But it didn't work: seems like
decoding noise.
The code is here:
https://github.com/zaitcev/ruat
Anyone is willing to critique? Where did I go wrong?
Thanks,
-- Pete
The rtl_fm program uses approx 1.8 MByte for it's stack. Mostly used
for 'stuct fm_state'. The default stack-size for a Windows program is
4kB (it can dynamically grow). I've compiled using MSVC v16 and option
'-GS'. Ref: http://support.microsoft.com/kb/100775
Adding '-stack:2000000' to the link stage works fine here. Or alloca() or malloc()
could be used? Or 'fm' could be made static?
--gv
Hi,
i have just transmited the rtl-sdr code into android using NDK,and i start the rtl-sdr and set the fequecny,samp_rate and so on.
Finally i get the output from rtl and write it into a txt file.
Then the problem came, i open the txt and find it a mess, does the output decode in utf-8 or something else,can anyone give me
a look to see what output is like
Thanks a lot
chenzujie
Hi,
As a "side product" of this thread: "How to get IQ samples from multiple
rtl-sdr dongles in a synchronized manner",A scanning tool is released for
identifying all available/detectable GSM broadcasting carrier around you
quickly.
You can find it here:
http://www.mathworks.com/matlabcentral/fileexchange/45152-rtl-sdr-multi-don…
or
https://github.com/JiaoXianjun/multi-rtl-sdr-calibration
By using 3 dongles, we can identify all available/detectable GSM
broadcasting carrier in the whole PGSM band downlink 935~960MHz in 30s (my
intel i7 12-core station) instead of 80s (only one dongles).
The original purpose of project multi-rtl-sdr-calibration is that
calibrating multiple dongles by the common GSM source.
So the first thing need to do is that finding out where is the strongest
GSM signal in the air.
This script (multi_rtl_sdr_gsm_FCCH_scanner.m) can identify GSM downlink
broadcasting carrier by detecting successive multiple FCCH bursts of all
possible carrier in a band you specify, such as PGSM downlink 935~960MHz.
I learn knowledge of GSM frame structure from here:
http://www.sharetechnote.com/html/FrameStructure_GSM.html
After the script is run, quality metrics of detected FCCH channel per
frequency will be displayed: SNR and number of detected FCCH burst (num of
hits).
Note: for speedup detection algorithm, a large decimation ratio is used,
thus shown SNR may be lower than actual SNR. But it is enough to help us
idendify which frequency is best.
README is also pasted here:
Multiple rtl-sdr(rtl_tcp) dongles based GSM FCCH scanner. (
putaoshu(a)gmail.com; putaoshu(a)msn.com)
multi_rtl_sdr_gsm_FCCH_scanner.m
Have multiple dongles run concurrently to speedup detecting FCCH(Frequency
correction channel) burst in wide GSM band by scanning different sub-band
with different dongle.
This is a sub script of project:
https://github.com/JiaoXianjun/multi-rtl-sdr-calibration
------------Purpose------------
The original purpose of project multi-rtl-sdr-calibration is that
calibrating multiple dongles by the common GSM source.
So the first thing need to do is that finding out where is the strongest
GSM signal in the air.
This script can identify GSM downlink broadcasting carrier by detecting
successive multiple FCCH burst.
I learn knowledge of GSM frame structure from here:
http://www.sharetechnote.com/html/FrameStructure_GSM.html
After the script is run, quality metrics of detected FCCH channel will be
displayed: SNR and number of detected FCCH burst (num of hits).
Note: for speedup detection algorithm, a large decimation ratio is used,
thus shown SNR may be lower than actual SNR. But it is enough to help us
idendify which frequency is best.
-------------Usage-------------
1. Assume that you have installed rtl-sdr
(http://sdr.osmocom.org/trac/wiki/rtl-sdr) and have those native utilities
run correctly already.
For example, you have multiple dongles, please run multiple rtl_tcp in
multiple shell respectively as:
rtl_tcp -p 1234 -d 0
rtl_tcp -p 1235 -d 1
rtl_tcp -p 1236 -d 2
...
2. Then run multi_rtl_sdr_gsm_FCCH_scanner.m in MATLAB.
ATTENTION! In some computer, each time before you run script, maybe you
need to terminate multiple rtl_tcp and re-launch them again.
ATTENTION! Please reduce number of inspected points by reducing frequency
range, if your computer hasn't enough memory installed. Because all sigals
are stored firstly before processing.
Change following parameters in the script as you need:
num_dongle = 1; % number of dongles you installed
start_freq = 935e6;
end_freq = 960e6;
freq_step = 0.2e6; % GSM channel spacing
gain = 0;
...
Some key parameters:
% how long signal we try to find multiple FCCH bursts in
num_frame = 64; % roughly speaking, there are 1 FCCH burst per 10 frames,
but 50 frames plus 1 idle frame construct one multiframe
FCCH_coarse_position.m
th = 10; % Peak to average threshold of detecting FCCH in moving averaging
SNR(estimated by FFT) stream.
max_offset = 5; % +/- range of predicted next postion of FCCH burst.
------------Algorithm------------
Because FCCH actually is a period of CW signal, we can use FFT to see if
there is sharp peak in frequency domain.
For the first FCCH detection, a continuous moving FFT is performed. After
the first FCCH is hit, the following FCCH will be only detected at
predicted position (+/- small range) according to GSM frame structure.
At least 3 successive FCCH need to be detected for we to ensure one
donwlink broadcasting carrier is there. See details in
FCCH_coarse_position.m.
Dear all,
with the permission of the original poster, I hereby forward a message
from Omri regarding his use of rtl-sdr to sniff and decode NRF24L01+ and
Bluetooth LE packets.
I have no involvement in the project, I'm just passing on the mail,
thats' all ;)
Regards,
--
- 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)
I have been trying to install pyrtlsdr from https://github.com/roger-/pyrtlsdr using the librtlsdr shared libraries from https://github.com/keesj/android-rtlsdr . So far the python code installed under /mnt/sdcard/sl4a/scripts is unable to find the librtlsdr shared libraries installed in /data/data/local with that location appended to sys.path.
My objective is to access and control the USB SDR tuner directly from my python code without relying on the TCP server. Any help or hints welcome.
Hi,
I would like to use my E4k dongle for wider spectrum analysis. Currently
the tuner is very specific to a frequency. Is there a way to widen its
bandpass filter?
I have noticed some filters in src/tuner_e4k.c: Mixer filter, IF RC filter
and IF channel filter. Are they of any use?
Is there a librtlsdr API?
TIA,
Nikos
I need to manipulate the tuners bandpass behavior. I have exported 2 more
functions from librtlsdr, rtlsdr_set_filter_bw and rtlsdr_get_filter_bw and
change the channel filter. However, when I use them I get libusb error(-22)
**UNKNOWN ERROR**.
I have tried bracketing the call with start/stop i2c repeater and
disable/enable channel to no avail :-(
It errs both when setting filter to 5.5 Mhz (max) and to 2.1 Mhz (min).
What is going on? What other context should I provide for it to work?
TIA,
Nikos
This is a Mailman mailing list bounce action notice:
List: osmocom-sdr
Member: benjamin(a)southpole.se
Action: Subscription disabled.
Reason: Excessive or fatal bounces.
The triggering bounce notice is attached below.
Questions? Contact the Mailman site administrator at
mailman(a)lists.osmocom.org.
Hi,
As a "side product" of this thread: "How to get IQ samples from multiple
rtl-sdr dongles in a synchronized manner",A Matlab script is released.
http://www.mathworks.com/matlabcentral/fileexchange/45024-rtl-sdr-multi-don…
or
https://github.com/JiaoXianjun/multi-rtl-sdr-calibration
The script can use multiple dongles to do scanning, and get significant
speedup compared to single dongle. (You can check reported time cost by
running the script with different number of dongles)
Another script uses multiple dongles to scan the same band, and combine
those results together incoherently.
I admit that before calibrating multiple dongles, the significant is
limited.
Just for FUN.
README is also pasted here:
Multiple rtl-sdr(rtl_tcp) dongles based Matlab frequency scanner.
1. multi_rtl_sdr_split_scanner.m
Have multiple dongles run concurrently to speedup scanning wide band by
scanning different sub-band with different dongle.
2. multi_rtl_sdr_diversity_scanner.m
All dongles scan the same band, and then results from different dongles are
combined incoherently.
------------Usage------------
1. Assume that you have installed rtl-sdr
(http://sdr.osmocom.org/trac/wiki/rtl-sdr) and have those native utilities
run correctly already.
For example, you have multiple dongles, please run multiple rtl_tcp in
multiple shell respectively as:
rtl_tcp -p 1234 -d 0
rtl_tcp -p 1235 -d 1
rtl_tcp -p 1236 -d 3
...
2. Then run script multi_rtl_sdr_split_scanner.m or
multi_rtl_sdr_diversity_scanner.m in MATLAB.
ATTENTION! In some computer, each time before you run script, maybe you
need to terminate multiple rtl_tcp and re-launch them again.
Change following parameters in the script as you need:
num_dongle = 2;
start_freq = 935e6;
end_freq = 960e6;
freq_step = 0.05e6;
observe_time = 0.1;
gain = 0;
sample_rate = 2.048e6;
...
------------Algorithm------------
Use high sampling rate for each frequency point. Then Auto generated narrow
FIR is used to suppress noise and extract signal.
At last, power of signal at each frequency is estimated and spectrum of all
frequencies is generated.
BR
Jiao Xianjun
Hi Vasiliy,
It identifies itself as a Hermes FW version 2.4
I was hoping it may be useful for skimmer use. I don't
know a lot about it though.
-Rick
===================
Hi Rich
This is great! What Board ID and fw version does rtl_hpsdr send to the
discovery request? your solution can be used potentially with the skimmer
server and HermesIntf.dll for multichannel decoding. (I don't have a dongle
yet to give this a try)
73
Vasiliy
I am releasing to the public via GPL an RTL to HPSDR software
translation server.
Hosted on https://github.com/n1gp/rtl_hpsdr
Screenshots listed and end.
README:
It currently builds and runs on Linux. It identifies and uses up to
seven (theoretically eight) USB RTL2832U-based DVB-T dongles. The
dongles can be set up with an up converter or use RTL direct-mode
for HF receive. Or direct input to provide it's native > HF receive
range.
The program can be passed in a variety of command line options.
One of which is a frequency offset not only for up converter use
but also to allow a full range of frequency options to HPSDR programs
that are coded to only allow the real HPSDR radio's (i.e. Hermes)
frequency range which is from 10KHz to 55MHz.
The main purpose of this program is to provide a mechanism that
allows RTL Dongle owners the ability to use them on HPSDR specific
software programs.
One such program, cuSDR64 has the ability to control and display
up to 7 rcvr slices simultaneously. With rtl_hpsdr, if your host
has the horsepower, you can run 7 RTL Dongles to emulate the HPSDR
rcvr. cuSDR64 also can be built and run on Linux.
Since the real HPSDR (i.e. Hermes) rcvr can do up to eight rcvr
slices, there is a concept of 'COPY' rcvrs in this server. This
would allow one to use HPSDR programs that expected more rcvrs
than were attached. Currently if a program request more rcvrs
than are actually attached the rtl_hpsdr server will make copies
of the last 'real' rcvr. This alows one to only have one RTL dongle
attached and run PowerSDR mRX which may expect up to four rcvr
slices.
Refer to: http://openhpsdr.org/softwareinfo.php for a list of
HPSDR supported applications.
I have tested this only on cuSDR64, cuSDR32, and PowerSDR mRX.
I was successful running 7 RTL dongles simultaneously on a
Quad core ARM Cortex A9 based mini-pc, model EKB311
running a version of Picuntu, http://ubuntu.g8.net/
This was using R820T based dongles on a USB 2.0 hub. I did
have to replace the USB hub power supply with one that
provided 5V @ 2A.
My 7 reveiver dongle setup:
http://home.comcast.net/~n1gp/RTL_HPSDR/7_usb_rcvr.jpg
Display of using 5 RTL dongle rcvrs with cuSDR64
http://home.comcast.net/~n1gp/RTL_HPSDR/5_rcvrs.jpg
This PCIE card provides 4 RTL Dongles (DigitalNow Quad DVB-T)
http://home.comcast.net/~n1gp/RTL_HPSDR/dn_quad.jpg
Display of using 2 RTL dongle rcvrs with PowerSDR mRX
http://home.comcast.net/~n1gp/RTL_HPSDR/powersdr.jpg
Hi,
Is there any information or hint on the settling time after new frequency
set to dongle?
Or is there any method to read information from dongle to see if all things
get stable?
Can I immediately read samples after new frequency is set by
rtlsdr_set_center_freq?
If so, will the samples quality be degraded?
Thanks!
BR
Jiao Xianjun
Hi All,
RTL-SDR support package for MATLAB and Simulink has been released:
http://www.mathworks.com/hardware-support/rtl-sdr.html
Using this support package, you can receive signals from your RTL-SDR dongle directly into MATLAB and Simulink. The package also contains several examples to get you started.
Have fun and let me know if you have any questions or comments.
Ethem Mutlu Sozer
Principal Engineer
Signal Processing and Communications Group
MathWorks, Inc.
Hi,
I need to get a few traffic data bytes ~ 16 B from my dongle. libusb's bulk
transfer and therefore rtlsdr_read_sync, will fail with -8 if used with
less than 1024 B. Can anyone think of another way to read them? (async also
uses libusb's fill_bulk_transfer :-()
I could possibly use rtlsdr_read_array, except that i don't know the block
and address that I need to use for traffic data :-(
Thanks,
Nikos
Does anyone know if you can check the crystal frequency from one of the RTL2832 registers?
Or, has anyone seen an early version E4000 dongle using a crystal other than 28.8 MHz?
I've been measuring the sample output rates of my E4000 and found the output rates differed from the expected rates that I'm setting using the rtlsdr library method.
https://groups.google.com/forum/#!topic/ultra-cheap-sdr/r_BLWQ5C4mw
Denny
Hello!
This is my first time using this mailing list, hope it's the right
place to post this.
I compiled rtl-sdr under Debian 7.2 (32 bits x86) it detects my ezcap
e4k properly but it's unable to read samples. When running rtl_sdr
like this, it just hangs:
---8<--------------------------------------------------------------------------------------------
% rtl_sdr -f 100000000 -
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN:
Using device 0: Generic RTL2832U OEM
Found Elonics E4000 tuner
Tuned to 100000000 Hz.
Reading samples in async mode...
---8<--------------------------------------------------------------------------------------------
Pressing Ctrl+C only makes rdl_sdr say "Signal caught, exiting!", but
it won't exit unless you kill it explicitly with SIGKILL. If I run it
in synchronous mode, I get this output instead:
---8<--------------------------------------------------------------------------------------------
% rtl_sdr -f 100000000 -S -
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN:
Using device 0: Generic RTL2832U OEM
Found Elonics E4000 tuner
Tuned to 100000000 Hz.
Reading samples in sync mode...
WARNING: sync read failed.
Library error -8, exiting...
rtlsdr_demod_write_reg failed with -1
---8<--------------------------------------------------------------------------------------------
I tried to reinstall libusb, recompiling it from a newer version (I'm
currently using 1.0-16rc10) and got the same output. As -8 means
overflow for libusb, I decided to increase the output block size. I
had to edit rtl_sdr.c to read as much as 30M, and that was the only
way I could get some output. Block sizes below 10M just won't do the
trick:
---8<--------------------------------------------------------------------------------------------
% rtl_sdr -b 30000000 -f 100000000 -S -
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN:
Using device 0: Generic RTL2832U OEM
Found Elonics E4000 tuner
Tuned to 100000000 Hz.
Reading samples in sync mode...
Short read, samples lost, exiting!
Library error 0, exiting...
(here be messy bytes of 64 bytes sampled by RTL)
---8<--------------------------------------------------------------------------------------------
That's why I recompiled libusb with logging, and I got this output
(now, with 3M blocks):
---8<--------------------------------------------------------------------------------------------
[...]
Reading samples in sync mode...
libusb: 1.079895 debug [submit_bulk_transfer] need 184 urbs for new
transfer with length 3000000
libusb: 1.080660 debug [libusb_handle_events_timeout_completed] doing
our own event handling
libusb: 1.080692 debug [handle_events] poll() 4 fds with timeout in 60000ms
libusb: 1.083056 debug [handle_events] poll() returned 1
libusb: 1.083082 debug [reap_for_handle] urb type=3 status=-75 transferred=64
libusb: 1.083104 debug [handle_bulk_completion] handling completion
status -75 of bulk urb 1/184
libusb: 1.083125 debug [handle_bulk_completion] overflow, actual_length=64
libusb: 1.083146 debug [disarm_timerfd]
libusb: 1.083161 debug [usbi_handle_transfer_completion] transfer
0x97a0424 has callback 0xb775c7f0
libusb: 1.083182 debug [bulk_transfer_cb] actual_length=64
WARNING: sync read failed.
Library error -8, exiting...
[...]
---8<--------------------------------------------------------------------------------------------
Status -75 (overflow) made me think about a limitation on the URB size
in my system, but it looks that in Linux that's a standard (16K), so I
ran out of ideas. I don't know where the problem is anymore, whether
in rtl-sdr, libusb, usbfs or even in my system; because I've compiled
it in two different systems already (my laptop - Ubuntu 12.04 - and my
home computer - Debian Sid -) and it works fine in both of them.
Regards,
--
>> Gonzalo José Carracedo Carballal
Hi Steve,
In regards to your post about the anti-aliasing filter
you referred to, it appears that it is getting set in
librtlsdr.c, rtlsdr_init_baseband()
If one wanted to change that to optimize the anti-aliasing
to a lower bandwidth, say 1500 Khz instead of the 2048 Khz
How would you change the fir_coeff[] table entries to achieve
this? The 8 bit entries and 12 bit entries are confusing to me.
==== orig post ====
> I have seen other reports on the mailing list, saying that sample rates
> between 300 kS/s and 900 kS/s don't work. If this applies to all RTL
> devices, then maybe it should be documented and the library can return
> an error code for such sample rates. Otherwise people will keep walking
> into this trap.
We could return some sort of error in those cases, but such low rates
(< 1MS/s) aren't recommended in general. First of all, the
anti-aliasing filter we're using has a fixed bandwidth of 2 MHz, and
although the coefficients can be changed, I doubt you can get a nice
filter for lower bandwidths with such a low order. And then the ADCs
only have 8 bits resolution, so you want to improve that by decimating,
and also profit from decimation gain.
Even Realtek uses 2.048 MS/s for FM reception in their original Windows
software.
Hi,
I am new to sdr and reading the site, I got an Elonics DVB-T dongle for it.
Does anyone know the initialization sequence that need to be send for it to
work correctly, or a reference for them?
I work with Linux and a lot of the rtl drivers are for windows. Therefore I
am developing my own drivers and would like to skip libsdr for now.
Thanks,
Nikos
Hey list, new guy here!
Got rtl-sdr built and it looks like my dongle (ezcap RTL2832U/FC0013) is
working. I have gnuradio v3.7.2.1-116-ge751e54a installed and working.
I'm confused about configuring gr-osmosdr. In particular this output from
cmake:
-- Configuring sysmocom OsmoSDR support...
-- Dependency LIBOSMOSDR_FOUND = FALSE
-- Disabling sysmocom OsmoSDR support.
-- Override with -DENABLE_OSMOSDR=ON/OFF
Isn't libosmosdr part of gr-osmosdr? How can it have itself as a dependency?
I tried overriding, but it didn't have any effect.
I went ahead and built and installed anyway and a bunch of osmosdr stuff did
get installed in my gnuradio dir (see below).
Before I try to get my dongle working in gnuradio, I just wanted to check
that there aren't any important pieces missing due to "Disabling sysmocom
OsmoSDR support". It sounds scary.
Thanks, Johan
foo:~/local/gnuradio> find . -name \*osmo\*
./lib/libgnuradio-osmosdr-0.1.1git.so.0
./lib/pkgconfig/gnuradio-osmosdr.pc
./lib/libgnuradio-osmosdr-0.1.1git.so.0.0.0
./lib/libgnuradio-osmosdr.so
./lib/libgnuradio-osmosdr-0.1.1git.so
./include/osmosdr
./include/osmosdr/swig/osmosdr_swig.i
./include/osmosdr/swig/osmosdr_swig_doc.i
./share/gnuradio/grc/blocks/osmosdr_source.xml
./share/gnuradio/grc/blocks/osmosdr_sink.xml
./lib64/python2.7/site-packages/osmosdr
./lib64/python2.7/site-packages/osmosdr/osmosdr_swig.pyc
./lib64/python2.7/site-packages/osmosdr/osmocom_siggen_base.pyo
./lib64/python2.7/site-packages/osmosdr/osmosdr_swig.py
./lib64/python2.7/site-packages/osmosdr/osmocom_siggen_base.py
./lib64/python2.7/site-packages/osmosdr/_osmosdr_swig.so
./lib64/python2.7/site-packages/osmosdr/osmocom_siggen_base.pyc
./lib64/python2.7/site-packages/osmosdr/osmosdr_swig.pyo
./bin/osmocom_siggen_nogui
./bin/osmocom_fft
./bin/osmocom_siggen
./bin/osmocom_spectrum_sense
foo:~/local/gnuradio>
I found that librtlsdr in github 003bd51167d9680e9721c7296323fdffe4be5a09
can't work with
LTE-Cell-Scanner<https://github.com/Evrytania/LTE-Cell-Scanner>5fa3df8a5d915c73cacea843021ce0c5b317522f
in github.
But librtlsdr release 0.5.2
2d0eaa898d2d4e271aed87ae3849a80ac12cf76c is OK.
The 'can't work' means:
LTE-Cell-Scanner show seg-fault/core-dump when it checks the second
frequency point after finishes the first frequency point.
A debug tracing shows that the crash is at rtlsdr_set_center_freq().
BR
Ryan.
Hi,
I have questions on usage of rtlsdr_read_sync(dev, buffer, out_block_size,
&n_read):
For example, if sampling rate is 1Msps, and out_block_size is 1000000,
question is:
1. the rtlsdr_read_sync() will cost 1s exactly? Or is there any lower level
device/driver buffer, which perhaps feed rtlsdr_read_sync() with history
data quickly and makes rtlsdr_read_sync() return in a time shorter than 1s?
2. in this infinite processing loop:
while(1)
{
rtlsdr_read_sync(dev, buffer, out_block_size, &n_read);
processing_function(buffer); // let's assume that this cost 0.001s
}
Those samples during the 0.001s processing period will be losted or not? Is
there any method to not lost them?
Thanks very much!
BR
Jiao Xianjun
On Thu, Jan 2, 2014 at 9:25 PM, Jiao Xianjun <putaoshu(a)gmail.com> wrote:
> I see some UDP packet performance issues in my laptop (but not in my
> desktop computer). Will the common (interleave multiple receives) UDP link
> helps?
>
> The issue is that fread for the second dongle in matlab get less data than
> expectation sometimes. Seem that fread for the first dongle works well.
> ------------------------------
> From: Sdr Guru <sdrguru1(a)gmail.com>
> Sent: 2014/1/2 5:39
> To: osmocom-sdr(a)lists.osmocom.org
> Subject: Re: How to get IQ samples from multiple rtl-sdr dongles in
> asynchronized manner?
>
> Hi
>
> rtl-sdr-relay
> Some of the recommendations.
> Please add PPM error calculation, exactly like new rtl_test -p
> but multiple receivers simultaneously.
> It provides immediate information if something is wrong with USB or
> dongles.
>
> https://github.com/keenerd/rtl-sdr/commit/b5f89dcf40463130e717b6c9bb3a39a3c…
> https://github.com/keenerd/rtl-sdr/blob/master/src/rtl_test.c
>
> Please add automatic eeprom PPM calibration
>
> https://github.com/keenerd/rtl-sdr/commit/ecf267737ca52f5005b7a12a352307e8c…
>
> default sample rate 2.4M (28.8/12) or 1.2M (28.8/24), probably lower jitter
> MAX_NUM_DEV 4->16 :)
>
> Some nice to have features.
> ip binding
> multicast support
> one common (interleaved) stream of all the receivers
> timestamped stream
>
> I'm trying to convert MATLAB script to Ocatve.
>
> SG
>
> On Mon, Dec 30, 2013 at 9:38 AM, Jiao Xianjun <putaoshu(a)gmail.com> wrote:
>
>> Hi guys,
>>
>> For the multiple dongles synchronization in signal level instead of
>> bits/packets level, I setup a working repo in github, and write a initial
>> demo framework. See below:
>>
>> https://github.com/JiaoXianjun/multi-rtl-sdr-udp-relay.git
>>
>> You may find information and instruction of demo quickly by reading the
>> README.
>>
>> My initial purpose is performing in-fly calibration for multiple dongles
>> according to some pre-known signal (GSM, ADS-B?) to let them work together
>> coherently.
>>
>> An ideal scheme may be that we should generate a very narrow band and
>> very week signal in (or just located at the edge of) target working band of
>> dongles, and perform the software in-fly calibration in background (or
>> driver level). This would be user friendly.
>>
>> I know it is far from final state currently, and many things are not
>> clear yet (See TODO). But please join me if you also think this is a good
>> idea. Just check out the demo and run it to have a look.
>>
>> Currently I just test the demo in Ubuntu-Linux.
>>
>> BR
>>
>> Jiao Xianjun
>>
>>
Hi,
Let me first say that librtlsdr is great. It is a fantastic way for me
to learn about SDR. Also, the library seems very well designed, easy to
use, and at a convenient level of abstraction. Many thanks for putting
this together!
I'm using librtlsdr to make a wideband FM receiver in C++. Perhaps more
about that later.
I noticed the following problem:
When I configure a sample rate lower than 1 MS/s, I often get a very
different sample rate then what I ask for. The library reports back the
same sample rate that I asked (via rtlsdr_get_sample_rate), but the
actual sample rate does not match at all.
For example, asking 900 kS/s results in ~ 290 kS/s.
Asking 800 kS/s gives ~ 285 kS/s.
Asking 600 kS/s gives ~ 255 kS/s.
Asking 400 kS/s gives ~ 1700 kS/s.
Asking 300 kS/s gives 300 kS/s.
I know the real samplerate from looking at the amount of data I get out
of the library in a given amount of time. I have also looked at the
FFT spectrum of the data and this confirms my estimate of the actual
sample rate (this eliminates the hypothesis that RTL is sampling at
configured rate but losing some of the data packets).
After diving into librtlsdr.c, I found that the pattern of configured
vs real sample rate can be explained by assuming a specific bit error in
the configuration word rsamp_ratio. Bit 28 of the word is forced equal
to bit 27.
It is as if somebody is doing
rsamp_ratio = (rsamp_ratio & 0x0fffffff) |
((rsamp_ratio & 0x08000000) << 1);
after the configuration is sent out via USB but before it is applied by
the RTL chip.
I have a Terratec Cinergy Tstick RC rev3, USB ID 0ccd:00d3.
The RTL-SDR library reports:
Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Terratec Cinergy T Stick RC (Rev.3)
Found Elonics E4000 tuner
Does this ring any bells for people who understand the RTL chip?
Is it caused by the difference between RTL2832 vs RTL2838?
I have seen other reports on the mailing list, saying that sample rates
between 300 kS/s and 900 kS/s don't work. If this applies to all RTL
devices, then maybe it should be documented and the library can return
an error code for such sample rates. Otherwise people will keep walking
into this trap.
Kind regards,
Joris van Rantwijk.
Hi,
I don't use the method of hardware modification. That can do synchronization promisingly, sure. I know this scheme couple of months ago, and good to know it works pretty well from you.
My thought is doing the compensation by software according to a common source over the air instead of over the hardware.
Do you think it is doable? And what would be the bottleneck according to your experience? Any possibility to tune the hardware by software after we estimate the synchronization error in frequency and timing?
BR
Jiao xianjun
-----Original Message-----
From: "Sdr Guru" <sdrguru1(a)gmail.com>
Sent: 2013/12/30 19:01
To: "Jiao Xianjun" <putaoshu(a)gmail.com>
Cc: "osmocom-sdr(a)lists.osmocom.org" <osmocom-sdr(a)lists.osmocom.org>
Subject: Re: How to get IQ samples from multiple rtl-sdr dongles in asynchronized manner?
Hi
Are you using a common clock?
http://kaira.sgo.fi/2013/09/16-dual-channel-coherent-digital.html
I've modified some of the RTL dongles, played with GNURadio and Octave.
The results are promising, sample level correlation (2.4M/10, FM radio signal).
On Mon, Dec 30, 2013 at 9:38 AM, Jiao Xianjun <putaoshu(a)gmail.com> wrote:
Hi guys,
For the multiple dongles synchronization in signal level instead of bits/packets level, I setup a working repo in github, and write a initial demo framework. See below:
https://github.com/JiaoXianjun/multi-rtl-sdr-udp-relay.git
You may find information and instruction of demo quickly by reading the README.
My initial purpose is performing in-fly calibration for multiple dongles according to some pre-known signal (GSM, ADS-B?) to let them work together coherently.
An ideal scheme may be that we should generate a very narrow band and very week signal in (or just located at the edge of) target working band of dongles, and perform the software in-fly calibration in background (or driver level). This would be user friendly.
Cheap (8USD+PP), simple, computer-controlled and legal FM band "marker"
http://blog.palosaari.fi/2013/08/naked-hardware-12-usb-audio-transmitter.ht…
I know it is far from final state currently, and many things are not clear yet (See TODO). But please join me if you also think this is a good idea. Just check out the demo and run it to have a look.
Testing it and I'll let you know.
Currently I just test the demo in Ubuntu-Linux.
BR
Jiao Xianjun
On Mon, Sep 2, 2013 at 8:23 PM, Sylvain AZARIAN <sylvain.azarian(a)gmail.com> wrote:
Thanks.
sylvain
2013/9/2 Sdr Guru <sdrguru1(a)gmail.com>
The second way, use MLAT enabled dump1090
https://github.com/antirez/dump1090/pull/23http://www.satsignal.eu/raspberry-pi/dump1090.html
On Sun, Aug 25, 2013 at 4:13 PM, Jiao Xianjun <putaoshu(a)gmail.com> wrote:
Hi,
I want to use multiple rtl-sdr dongles to do some multi-antenna experiments.
Is it possible to read IQ samples from multiple rtl-sdr dongles in a synchronized manner?
I already have a glance at dump1090 codes, which is a project using rtl-sdr to decode aircraft broadcasting ADS-B messages in 1090MHz.
Seems that I should use rtlsdr_read_async() instead of rtlsdr_read_sync(), because that if rtlsdr_read_sync() is used, I have to call it multiple times sequentially. That looks not synchronized.
But rtlsdr_read_async() function only accept one rtl-sdr device as input parameter, and it will be blocked after it is called. So seems that it also can't be used for my purpose directly.
Also welcome any opinion on how to improve rtl-sdr lib/driver to support this feature.
Thank you.
BR
Jiao Xianjun
I see some UDP packet performance issues in my laptop (but not in my desktop computer). Will the common (interleave multiple receives) UDP link helps?
The issue is that fread for the second dongle in matlab get less data than expectation sometimes. Seem that fread for the first dongle works well.
-----Original Message-----
From: "Sdr Guru" <sdrguru1(a)gmail.com>
Sent: 2014/1/2 5:39
To: "osmocom-sdr(a)lists.osmocom.org" <osmocom-sdr(a)lists.osmocom.org>
Subject: Re: How to get IQ samples from multiple rtl-sdr dongles in asynchronized manner?
Hi
rtl-sdr-relay
Some of the recommendations.
Please add PPM error calculation, exactly like new rtl_test -p but multiple receivers simultaneously.
It provides immediate information if something is wrong with USB or dongles.
https://github.com/keenerd/rtl-sdr/commit/b5f89dcf40463130e717b6c9bb3a39a3c…https://github.com/keenerd/rtl-sdr/blob/master/src/rtl_test.c
Please add automatic eeprom PPM calibration
https://github.com/keenerd/rtl-sdr/commit/ecf267737ca52f5005b7a12a352307e8c…
default sample rate 2.4M (28.8/12) or 1.2M (28.8/24), probably lower jitter
MAX_NUM_DEV 4->16 :)
Some nice to have features.
ip binding
multicast support
one common (interleaved) stream of all the receivers
timestamped stream
I'm trying to convert MATLAB script to Ocatve.
SG
On Mon, Dec 30, 2013 at 9:38 AM, Jiao Xianjun <putaoshu(a)gmail.com> wrote:
Hi guys,
For the multiple dongles synchronization in signal level instead of bits/packets level, I setup a working repo in github, and write a initial demo framework. See below:
https://github.com/JiaoXianjun/multi-rtl-sdr-udp-relay.git
You may find information and instruction of demo quickly by reading the README.
My initial purpose is performing in-fly calibration for multiple dongles according to some pre-known signal (GSM, ADS-B?) to let them work together coherently.
An ideal scheme may be that we should generate a very narrow band and very week signal in (or just located at the edge of) target working band of dongles, and perform the software in-fly calibration in background (or driver level). This would be user friendly.
I know it is far from final state currently, and many things are not clear yet (See TODO). But please join me if you also think this is a good idea. Just check out the demo and run it to have a look.
Currently I just test the demo in Ubuntu-Linux.
BR
Jiao Xianjun
Hi,
I want to use multiple rtl-sdr dongles to do some multi-antenna experiments.
Is it possible to read IQ samples from multiple rtl-sdr dongles in a
synchronized manner?
I already have a glance at dump1090 codes, which is a project using rtl-sdr
to decode aircraft broadcasting ADS-B messages in 1090MHz.
Seems that I should use rtlsdr_read_async() instead of rtlsdr_read_sync(),
because that if rtlsdr_read_sync() is used, I have to call it multiple
times sequentially. That looks not synchronized.
But rtlsdr_read_async() function only accept one rtl-sdr device as input
parameter, and it will be blocked after it is called. So seems that it also
can't be used for my purpose directly.
Also welcome any opinion on how to improve rtl-sdr lib/driver to support
this feature.
Thank you.
BR
Jiao Xianjun
Hi all,
time is moving fast, and I want to start some initial discussion and
planning for OsmoDevCon 2014.
There are basically four questions which I'm raising below. Please
provide your feedback to the osmocom-event-orga mailing list only, to
avoid cross-posting over all the project lists.
= Who? =
My intention is to keep it an 'active developer/contributer only' event,
like we had it before. I would also want to keep the group relatively
small, to keep the 'Osmocom family' atmosphere.
If desired, we could have one half or full day of public prsentations in
a larger auditorium, but the developer meeting should be a close group,
as known so far.
= Where? =
If we keep the number of attendees within the same range as this year,
then I'm sure we could again hold it at the same venue. I know it is
not perfect, but it is a place that we have access to, 24 hours per day,
and free of cost for community projects like osmocom.org.
If the community wants a larger event, then this is something that would
require more funds and much more time organizing. And that is something
that I personally could not offer to take care of, sorry. I'm happy to
attend and support any larger events, but I'm unable to take care of
fundraising and venue research.
= When? =
Q1/2014. In January, I'm not aware of any 'blocker' events. February,
there is Fosdem (Feb 1 + Feb 2), and MWC from Feb 24 through Feb 27. In
March there is CeBIT (March 10-14) and Easter holidays (with EasterHegg
March 17-21). Did I miss any other FOSS / mobile event that might clash
in Q1?
So my preference woudl be to do it either late January (23-26) or in
February (6-9 or 13-16). Any preferences regarding preferred schedule?
Once we have some concencus here on the list [and we want to do it in
the same size / venue], I'll talk to IN-Berlin.
= What? =
I think that question is easy to answer, if we have the above three
figured out... There's no shortage of topics, I suppose.
You can start adding your suggestions to
http://openbsc.osmocom.org/trac/wiki/OsmoDevCon2014
Regards,
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)