RTLSDR Scanner

Download

Install

Manual (EN) (FR)

Frequently Asked Questions

Screenshot 1

Screenshot 2

Screenshot 3

Screenshot 4

Screenshot 5

Screenshot 6

A cross platform Python frequency scanning GUI for USB TV dongles, using the OsmoSDR rtl-sdr library.

In other words a cheap, simple Spectrum Analyser.

The scanner attempts to overcome the tuner's frequency response by averaging scans from both the positive and negative frequency offsets of the baseband data.

Tested on:

  • Windows 7 (x86 and x64)
  • Ubuntu 12.04 (x86), 12.10 (x64), 13.04 (x64) and 14.04 (x64)
  • OS X Snow Leopard (10.6) and Mountain Lion (10.8)

Download

Download the installer or stand-alone Windows executables from GitHub.

Download the latest source from GitHub.

Installation

Installation instructions are here.

The following dependencies are needed:

Linux and Mac users will need to manually install these,  Windows users can use the installer.

Manual

A basic manual is available in Portable Document Format.

Quick start

Run 'python -m rtlsdr_scanner'.

To start a scan simple enter the range at the bottom of the window and click 'Start', after a while a plot of signal strengths should be displayed.

'Dwell' controls how long each step is sampled for, longer times will result in more averaging of the signal.

'Continuous update' updates the display on each step. Caution only use this with small scans and low dwell times, otherwise it will become unresponsive.

'Grid' displays a grid on the scan plot.

Auto Calibration

Scans around the frequency specified for the strongest signal and then calculates the error correction of the dongle.

To get the best out of it you really need a continuous signal peak that stands out from the background noise.  If you live near an airport RADAR signals are great for this. Mobile phone signals also work well but you need to know the channel frequencies, making it tricky.  I have had some luck with commercial FM radio but you'll have to set the dwell time to the highest setting to get a usable offset.

Main Window

  • Start - Scan start frequency
  • Stop - Scan stop frequency
  • Mode - Sing or continuous scanning
  • Dwell - Sampling time spent on each step
  • FFT Size - FFT size, greater values result in higher analysis precision (with higher sizes dwell should be increased)
  • Live update - Update the display on each step (caution this can be slow and unpredictable)
  • Grid - Show a grid on the scan
  • Display - Change the plot type

File Menu

  • Open... - Open a saved scan
  • Save As... - Save a scan
  • Export... - Export a scan to a CSV file
  • Properties ... - Scan information

Edit Menu

  • Preferences - Set dongle gain, calibration, Local Oscillator (positive offset for upconverters) and sample bands (see below)

Scan Menu

  • Start - Start a scan
  • Stop - Stop the scan
  • Stop at end - Stop the scan when the current sweep is finished (only in continuous mode)

Tools Menu

  • Compare - Compare two previously saved scans
  • Auto Calibration - Perform a crude calibration of the dongle to a known signal (this should be a continuous, unwavering signal)

Tweaking

Dongles will differ depending on the tuner and circuit that's used, the software allows you to pick the best range that is sampled to give improved results.

Click on View -> Preferences and select the 'Band Offset' for you tuner, next detach the aerial or even better terminate it with a 50 ohm load.  Now click refresh to show the noise floor of the tuner, adjust the offset so the marked bands overlay the flattest areas of the plot and click OK.

I find the following offsets work well (click the offsets for images):

Tuner Offset (kHz)
Elonics E4000 250
Fitipower FC0012 140
Rafael Micro R820T 100

Note the large peak in the middle, this is at 0Hz (i.e. its the DC offset).  On the R820T it is much narrower, this is because it uses an intermediate frequency away from the low frequencies.  In this case the resulting spike is due to the sample length not being infinitely long (imagine taking a complete cycle of a sine wave then chopping the end off, this leaves it unbalanced and its average value is no longer 0, in other words it looks like it has a DC offset), the sample is windowed to reduce this but it's a trade-off between accuracy and frequency response.

Troubleshooting

Run 'rtlsdr_scan_diag.py', this tests if the correct modules are installed.

Categories: 

Comments

400

Click to view comments

Al's picture

Once you've installed the driver the dongles should be recognised automatically. There are some instructions for Ubuntu on this page.

Thank you for the great software.
Unfortunately, I have met the following Xwindow errors just after completion of scan.
The GUI is gone then.
(After running rtlsdr_scan.py, GUI screen comes and click start button can start scanning.)

"rtlsdr_scan_diag.py" works fine and "pyrtlsdr/test.py" describes good figure.

I would really appreciate any suggestions. Tks. Ark from Japan
----------------------------------Console---------------------------------------------------
~/work/sdr/RTLSDR-Scanner/src$ python rtlsdr_scan.py

RTLSDR Scanner

Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Exact sample rate is: 2000000.052982 Hz

The program 'python' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadPixmap (invalid Pixmap parameter)'.
(Details: serial 12883 error_code 4 request_code 54 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
------------------------------------------------------------------------------------------------------
There are different errors from time to time such as
The error was 'BadRequest (invalid request code or no such operation)'.
The error was 'BadIDChoice (invalid resource ID chosen for this connection)'.

Al's picture

Hi Ark,

Unfortunately Ubuntu uses an old version of matplotlib (1.1.1~rc1) which causes this bug with certain graphics cards.

The only solution is to uninstall the Ubuntu version and install an up to date version from the matplotlib website (currently version 1.3.1).
On Ubuntu the installation is fairly simple, there are some instructions here, which I followed.  Please note that you should uninstall the previous version first by running:

sudo apt-get remove matplotlib

Hello AI,
Thank you very much for your kind feedback.
I have installed the latest matplotlib, but it did not improve the error.....
I did not have enough time today and I will try again later.
Ark

Al's picture

I've found a few bugs which result in this, I'm currently working on this so an update should appear soon.

Thank you AI.
I have tried the new installation on clean Ubuntu 12.04 on Virtual BOX.
But the error was reproduced.
Looking forward to the new version.

One comment for the FFT option.
I think less FFT number would be useful. Even with 16 FFT, the resolution is still 125kHz.

Al's picture

Hi Ark,
I committed some updates last night which seem to have helped, I could only reproduce the error occasionally on OS X so I'm interested to know if this helps.

I'll be pushing another update soon which will extend the FFT size range down to 16.

Slackware 14 32 bit on a Dell Latitude notebook
Had to rebuild matplotlib, ( which still produces an error ) and the code requires a python 2.6 lib, solved by ln -s the 2.7 version ( ln -s libpython2.7.so.1.0 libpython2.6.so.1.0 )
Appears to scan, but hangs as blue bar reaches end.
STOP button changes status to "stopping" but there it hangs indefinitely.

Latitude ~$/usr/src/SoftwareDefinedRadio/Scanner/rtl-sdr-src/RTLSDR-Scanner-master/src/rtlsdr_scan.py
/usr/lib/python2.7/site-packages/matplotlib/__init__.py:1005: UserWarning: This call to matplotlib.use() has no effect
because the the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

warnings.warn(_use_error_msg)
RTLSDR Scanner

Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Exact sample rate is: 2000000.052982 Hz
Latitude ~$

Al's picture

Hi Kurt,

You can safely ignore the warning, it's found in older versions of matplotlib.

I've managed to replicate the hang and hope to fix in in the next week or so.

Narrowed scan, turned on Live Update, and much, much better, but still challenges.
Latitude ~$/usr/src/SoftwareDefinedRadio/Scanner/rtl-sdr-src/RTLSDR-Scanner-master/src/rtlsdr_scan.py
/usr/lib/python2.7/site-packages/matplotlib/__init__.py:1005: UserWarning: This call to matplotlib.use() has no effect
because the the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

warnings.warn(_use_error_msg)
RTLSDR Scanner

Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Exact sample rate is: 2000000.052982 Hz
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 369, in _handle_results
cache[job]._set(i, obj)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 533, in _set
self._callback(self._value)
File "/usr/src/SoftwareDefinedRadio/Scanner/rtl-sdr-src/RTLSDR-Scanner-master/src/main_window.py", line 525, in on_process_done
self.update_plot()
File "/usr/src/SoftwareDefinedRadio/Scanner/rtl-sdr-src/RTLSDR-Scanner-master/src/main_window.py", line 700, in update_plot
scale_plot(self.graph, self.settings, updateScale)
File "/usr/src/SoftwareDefinedRadio/Scanner/rtl-sdr-src/RTLSDR-Scanner-master/src/plot.py", line 198, in scale_plot
axes.set_ylim(auto=True)
File "/usr/lib/python2.7/site-packages/matplotlib/axes.py", line 2762, in set_ylim
self.viewLim.intervaly = (bottom, top)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 937, in _set_intervaly
self.invalidate()
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 131, in invalidate
return self._invalidate_internal(value, invalidating_node=self)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 155, in _invalidate_internal
invalidating_node=self)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 155, in _invalidate_internal
invalidating_node=self)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 155, in _invalidate_internal
invalidating_node=self)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 2141, in _invalidate_internal
invalidating_node=invalidating_node)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 155, in _invalidate_internal
invalidating_node=self)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 2141, in _invalidate_internal
invalidating_node=invalidating_node)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 155, in _invalidate_internal
invalidating_node=self)
File "/usr/lib/python2.7/site-packages/matplotlib/transforms.py", line 153, in _invalidate_internal
for parent in self._parents.itervalues():
File "/usr/lib/python2.7/weakref.py", line 147, in itervalues
for wr in self.data.itervalues():
RuntimeError: dictionary changed size during iteration

^CProcess PoolWorker-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 99, in worker
put((job, i, result))
File "/usr/lib/python2.7/multiprocessing/queues.py", line 390, in put
return send(obj)
KeyboardInterrupt

Latitude ~$

Found .rtlsdr-scanner in my home directory, though no mention of it anywhere.

saveWarn=0
file1=
file2=
file3=
file4=
file5=
annotate=1
retainScans=0
fadeScans=1
maxScans=5
start=97
stop=98
mode=0
dwell=0.032
nfft=1024
liveUpdate=1
calFreq=1575.42
autoScale=1
yMax=-44
yMin=-50
index=0
[Devices]
[Devices/Server]
serial=
isDevice=0
server=localhost
port=1234
gain=0
lo=0
calibration=0
offset=250000
[Devices/Generic\ RTL2832U]
serial=77771111153705700
isDevice=1
server=localhost
port=1234
gain=0
lo=0
calibration=0
offset=100000

Al's picture

The synchronisation of threads and processes seems to bit a broken, it improves if you install a more recent version of matplotlib. This is currently at the top of the list and I'll fix it as soon as I have time.

I do have the R820T dongle.
Changed the offset to the default 250 from your recommended 100, and now it works.
Why does the offset khz cause the program to hang at end of scan ?

Hope this helps...

Al's picture

It shouldn't! Thanks for the info, it all helps.

Hi,
In order to get the Noise floor more close to reality, I modified line 1448 in rtlsdr_scan.py.
I'm guessing it should be around -110 dBm in a 2 MHz BW (Sample Rate of 2,000,000 samples/sec).
By default I was seeing a noise floor of around -50 dB as indicated in plots, so I subtracted 60.
power = 10 * math.log10(scan[freq]) - 60
Then used only enough gain so as not to increase the noise floor upon scans..
Does this sound reasonable?

Al's picture

Hi Bill,
I'm not sure this is the right approach, the dongles are very susceptible to external interference and the tuners perform quite differently from each other. It's also not always possible to fully disable the AGC on some tuners. The ADC on these chips is 8-bit so it will give a SNR of 48.2dB at best.
I am wondering about adding a user definable offset in the future though, probably after the next round of fixes.

Sorry, I forgot to add links to some example plots with line 1448 modified per above
Let me know what you think..
VHF-Hi - ATSC Signals
https://db.tt/KQKE9LMK
UHF - ATSC Signals
https://db.tt/PQZnrq8c

Hello Bill,
I think the noise floor of -110dBm/2MHz is the equivalent input thermal noise level.
I think this software uses FFT to have the power spectrum density and the Y axis is just the relative value.
You need to calibrate with the known level signal, if you want to have the absolute value.
Ark

Al's picture

There's some information on Wikipedia about Noise Power, it's a function of bandwidth and temperature.  In other words it doesn't take into account other noise sources such as the thermal and shot noise of components in the dongle, noise from the USB bus, external interference and so on (it's a long list).

The power spectral density analysis that this software uses gives relative values for it's input data and some tuners may skew the levels with automatic gain control. Also remember that the decibel (dB) is a ratio, not an absolute value like dBm which is referenced to 1 milliwatt.

yeap, that's exactly what I did. Using the old boat anchor comm. test set that I have, inject a signal
at various frequencies. Between the above mod and adjusting the rtl's manual gain control, I can keep it accurate from -40
to -100 dBm. For every 10 dB step of attenuation within that range, the graph in Al's python script changes by exactly 10 dB.
Close enough for me...

Al's picture

Thanks bill, useful info as I don't have any reliable means to test levels at the moment.

Hi, I have two scan files (.rfs). If I try to load the plots within "Tools"-"Compare..", nothing happens. It says in the console: "Traceback (most recent call last):
File "C:\Program Files\RTLSDR Scanner\windows.py", line 379, in on_load_plot
self.filename)
ValueError: need more than 2 values to unpack".

What is the problem?

73

Al's picture

Hi Dominik,

Thanks for the info, I've just fixed this in the latest version.

Do you intend to insert a spectrogram function as it is provided by rtl_power?

Al's picture

Hi Dominik,

Time permitting I hope to have spectrogram and maybe even a 3D display within the next few weeks.

Al's picture

I've added a spectrogram display as well as quite a few other updates, if you are using the Windows installer you'll have to download the new version from SourceForge.
In addition to the spectrogram all data is now saved (instead of just the last plot) and screen updates should be smoother.

Hi, I managed to install everything as stated on your doc but nothing will be plotted :(
it gave me this on console:

% ./rtlsdr_scan.py
/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1035: UserWarning: This call to matplotlib.use() has no effect
because the the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

warnings.warn(_use_error_msg)
RTLSDR Scanner

Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Found Rafael Micro R820T tuner
Exact sample rate is: 2000000.052982 Hz
Traceback (most recent call last):
File "/home/asbesto/Desktop/src/gnuradio/rtlsdrscanner/RTLSDR-Scanner-master/src/main_window.py", line 521, in on_event
self.progress()
File "/home/asbesto/Desktop/src/gnuradio/rtlsdrscanner/RTLSDR-Scanner-master/src/main_window.py", line 634, in progress
self.plot.annotate_plot()
File "/home/asbesto/Desktop/src/gnuradio/rtlsdrscanner/RTLSDR-Scanner-master/src/plot.py", line 175, in annotate_plot
y = max(data[1])
ValueError: max() arg is an empty sequence

here is a Linux Mint on a MSI U100 netbook :)

Any help? Thank you! :)

Al's picture

Hi Asbesto,
I've just pushed some updates to GitHub and that problem should be fixed now with any luck.

first allow me to wish you all the best for the new year, congratulations and thanks for all the effort to develop and improve this nice software.

1. – I try to update from sourceforge – but isn’t work …Windows XP
……………………………………………………………………………………………………
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ==========================
>>>
RTLSDR Scanner

Traceback (most recent call last):
File "C:\Program Files\RTLSDR Scanner\rtlsdr_scan.py", line 89, in
frame = FrameMain("RTLSDR Scanner", pool)
File "C:\Program Files\RTLSDR Scanner\main_window.py", line 145, in __init__
self.create_widgets()
File "C:\Program Files\RTLSDR Scanner\main_window.py", line 164, in create_widgets
self.graph = PanelGraph(panel, self)
File "C:\Program Files\RTLSDR Scanner\windows.py", line 185, in __init__
self.toolbar.Realize()
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line 3875, in Realize
return _controls_.ToolBarBase_Realize(*args, **kwargs)
PyAssertionError: C++ assertion "wxAssertFailure" failed at ..\..\src\msw\tbar95.cpp(726) in wxToolBar::Realize(): invalid tool button bitmap
>>>
I don’t know …is a problem with the installer , or on my laptop
………………………………………………………………………………………………
I have not knowledge in programming and OS …but for me…
I solve this by download und unzip your RTLSDR-Scanner from GitHub in a folder – (there was instaled all dependencies before) – run rtlsdr_scan.py – and no problem … it works fine .
…………………………………………………………………………………………..
maybe can you to solve it in case there are other with same problem.

2. - allow myself a few observations – suggestions :
2.1.- at high frequencies, three decimal aren’t sufficient for the identification of some emitters
and zoom mod isn’t useful without a more acurate frequency on cursor displaying.

…I take a look at your module , try this empirically :
Windows.py
…..
205 text = "f = {0:.6f}MHz, p = {1:.2f}dB".format(x, y)
207 text = "f = {0:.6f}MHz".format(xpos)
........
And it work – cursor display is in Hz - for me is fine.

2.2 – at this moment, to be more useful, your soft need :
a max/(min)HOLD options correlate with -
a MARKER PEAK – function – (next peak left – next peak right)

3. – sorry for my English - I hope I was understandable

All the best,
Paul

Al's picture

Hi Paul, Thanks, and all the best to you to.

1) I've uploaded a new installer which seems to fix the Windows XP bug. You shouldn't have to manually copy files any more.

2.1) Frequencies are now shown with 6 decimal places. Beware that the frequency stability of the dongle isn't great, some use cheap crystals which can skew the results even if it is fully calibrated. Personally I ignore steps less than 100Hz although I'm going setup an experiment to test this at some point (when I've finished building my GPSDO).

2.2) I'm looking into a better peak detection system with hold, next and previous buttons.

3) No need to apologise at all.

Thanks for the feedback

hi Al,
yes, i tested it, works perfectly - Thanks!

paul

Hi AL ,
Thank you for this new version of your program. I just test it and I am pleased to discover all the new features added. I love the 3D spectrogram mode and surface mode over water color. This version brings a real plus compared to before and it also seems more stable on my pc with W7 64 bit. Nevertheless it requires a power machine because I note some slowdown display pad and refresh. I'm bluffing with your improvements to your software and I encourage you to continue in this direction. Thank you again for all this work we propose a new tool in our workroom in radiofrequency. Very Sincerely, Pascal F1MIJ, France.

Al's picture

Hi Pascal,
I've just added a 'Wireframe' mode to the surface plot, a bit faster but still very slow.

Thanks again for the feedback.

Al,

Thanks for the program and I'm looking forward to trying it out. Could I get your help to solve an issue with getting the dongle recognized and a first scan done?

I'm running Windows 7 and using a generic DVB-T+DAB+FM dongle. I've installed the scanner and support files, and have run rtlsdr_scan_diag.py and got the all clear (no missing libraries). When I run rtl_test.exe, the program finds my "Generic RTL2832U" dongle but then I get a *lot* of errors of the following type:
rtlsdr_write_reg failed with -2
rtlsdr_demod_write_reg failed with -2
rtlsdr_demod_read_reg failed with -2
I see an output line "Resetting the device...", then more errors of the type above, then "No supported device found" and a few more errors of the type above.

When running the main program, all scans fail with an error "No connection could be made because the target machine actively refused it". Under Preferences, the device present is listed as "localhost1234" with Tuner "unknown".

Any ideas what's causing the errors, and how I could get my system to scan?

Al - no need to reply to my post. I figured out I had not installed the SDR driver before running. All good now! For anyone with same problem: follow the quick start guide at http://www.rtl-sdr.com/category/rtl-sdr/page/17/.

Cheers!

Al's picture

Hi Michael
I'll add this link to the installation instructions, thanks

Awesome application!

I have a small wish that might be easy to implement for you.
Graph Average instead of x last plots.
Would that be possible to add in the next version?

That way I can have it running while I sleep and see next day what frequencies that has a lot of activities so I can listen to them when I am awake.

Have a good 2014!

Al's picture

Hi Tobby,
Thanks, averaging is on the wish list and I'll hopefully add it soon.

Enjoy your 2014 too.

Al's picture

Hi Tobby,

I've added two averaging functions.

Firstly a 'rolling' average found in the preferences, this just averages the previous data with the new scan.

The second is available in the plot display and will show the average of all the scans. In your case I'd set 'Max Scans' in preferences to it's maximum of 500 and set the dwell to 8 seconds.

At some point I'll add some information showing the time of the first and last sweep so you can see the recorded range.

Thank you sir!

Hello thank you for your great work!!
I love this software
I have request about software
If you can add Simultaneous scan mode (like using e4000*2 and scan at same time)

Sorry for my bad English
And thank you for your great work

Al's picture

Thanks K, glad you like it.

There's currently a few people looking at using two or more tuners to widen the bandwidth, I'm keeping a eye on their progress to see it's possible to implement it in the software.

Don't worry about your English, I had no trouble understanding it.

Hi Al
I tried to scan with two R820T.
I open two Scanner window and set different index nunber at preferences
But when I click Start Botton one will start scanning,and another show "Error : Error code -12 when opening SDR (device index = 0)" and couldnt start scanning
In Plonpt line it says (Plesase fix the device permissions, e.g. by installing the udev rules files rte-sc(~cant see~)
r.rules
usb_open error -12
I hope this feed back help to find way to solve this case

Al's picture

Hi K,
I was thinking you were wanting to use two dongles to speed up the scan rather than two simultaneous scans, sorry about that.

Are both your dongles the same? If so, the scanner can't reliably tell the difference between them. To fix this you'll have to change the serial number of one of the dongles using rtl_eeprom.

Something like:

rtl_eeprom -d 1 -s 00000013

Would change the serial number of the dongle at index 1 to '00000013'.

Warning
Please beware I don't have two similar dongles to test this out and changing the EEPROM can be risky! I haven't tried and I won't unless I get two more dongles, just in case the dongle is damaged in the process.

Thank you for your advice about device id
I success to rewrite ID and dongle is working well

But still not scann with multiple window
I know this Software is not designed for multi task

Thank you for your addvice until now,and thank you for your great work!!

Al's picture

Hi K,

Unfortunately I can't really fix this problem without reducing the functionality of the software.

You can get round this limitation by starting a scan in the first window, then in the second select the device you want to use then start the scan and you can use two windows.

Alternatively start a server for each device on a separate port:

rtl_tcp -d 0 -a 127.0.0.1 -p 1234
rtl_tcp -d 1 -a 127.0.0.1 -p 1235

The add them both in the preferences (I've just committed some new code for multiple servers support).

Is anyone else reporting this error? Am I missing something that was introduced?
The original branch I created upon original clone back in November still works.
But not this new git clone.

RTLSDR Scanner

Found Rafael Micro R820T tuner
Traceback (most recent call last):
File "rtlsdr_scan.py", line 105, in
frame = FrameMain("RTLSDR Scanner", pool)
File "/home/mrf/src2/RTLSDR-Scanner/src/main_window.py", line 125, in __init__
self.devices = get_devices(self.settings.devices)
File "/home/mrf/src2/RTLSDR-Scanner/src/devices.py", line 81, in get_devices
device.gains = sdr.valid_gains_db
AttributeError: 'RtlSdr' object has no attribute 'valid_gains_db'

Al's picture

Hello Bill,

Update to the latest pytrtlsdr to fix this error.

is there a way to scan with a dvt dongle modded for direct conversion mode?
I'm trying to find a way to scan from 16 to 30 mhz. I've modded one of my rtl's for direct conversion but I'd like to try it with your scanner.

BTW.... I Terrific scanner! I love it!

Direct sampling. not direct conversion! Doh!

Al's picture

Hi Kevin,

Thanks for the complement, it's turned into far more than the simple script I made to teach myself Python! It's also far more popular than I ever though it would be.

Unfortunately with direct sampling you only get the in-phase or quadrature signal, the software relies on both I & Q signals to perform a complex Fast Fourier Transform. With one signal only a real FFT can be performed which is symmetric about the tuned frequency an can't be used to create the swept spectrum.

To get the HF bands you'll need to use an up-converter, there a couple of reviews here and here.  I'd recommend a low pass filter on the input to stop the dongle input getting overloaded with higher frequency signals.

Pages

Click to add a comment