Saturday, 7 April 2012

Noise floor and frequency response evaluation

Frequency response of the fc0012:

Continuing from my last post, I've had some time to look at the frequency response and noise floor behaviour of my fc0012 tuner more closely.

To determine the frequency response of the fc0012 in finer steps a script was written in bash and matlab that changes the frequency of the signal generator and the tuning frequency of the fc0012 in sync. Matlab was used to control the signal generator using a USB->GPIB adatper and a bash script was used to set the tuning frequency using rtl-sdr.

The power of the CW from the signal generator was set to -50dBm and it was connected in a similar way as in the previous blog post but with a 30dB attenuator placed inline to deal with any possible reflections from the impedance mismatch. In 15MHz steps from 15-1800MHz the scripts were run and the spectrum displayed to look for the presence of the CW from the signal generator.

In the figure below the power spectrum is shown for the block of data recorded at 690MHz using a 100ms pwelch power spectrum estimate. The peak from the CW from the signal generator is visible. There are also two other spikes which are due to the internal noise of the tuner:

At some frequencies in the previous estimated coarse frequency response the fc0012 was deaf. This is evident at 225MHz for example. There is also a lot of ripple visible in the power spectrum which could be due to the shape of a front-end filter:

There were also frequencies where the CW appeared much stronger and began to oversaturate the ADC in the front-end. This was most evident in the 90-135MHz band. The frequency response is strongest here and attenuation may be need for best performance. In the figure below the power spectrum is shown around the peak of the CW for the data block taken at 120MHz. There are a number of harmonics visible which is due to the power of the CW being too strong to be captured smoothly by the limited dynamic range of the 8-bit ADC.

From this data it can be assumed that the frequency response of the fc0012 covers the following bands: 30-60 MHz, 90-135 MHz, 180-210 MHz, 240-285 MHz, 345-435 MHz, 465-585 MHz, 690-945 MHz.

Noise floor estimation for the fc0012:

To estimate the noise floor of the fc0012 the antenna input was connected to a 50ohm load and data recorded at a number of different tuning frequencies using rtl-sdr and a bash script.

Above about 240MHz spectral leakage becomes visible which only occurs at the centre frequency when tuning. To compensate for this when measuring the overall noise-floor only a select frequency range of each power spectrum is used for the overall plot ignoring the parts with the leakage. This process was completed in 770kHz steps from 1 to 1800 MHz. An overview of this process for noise-floor measurements at three frequencies is shown in the figure below:

In the figure below the combined power spectrums are shown between 1 to 1GHz with the tuner passbands found above shown in red. There are a number of spurs visible across the entire spectrum. The spurs are multiples of either 14.4MHz or 28.8MHz. As the local oscillator on the board used is 28.8MHz it can be assumed that harmonics of the local oscillator are leaking in.

Below is the noise floor over the 45-60MHz band. At some points in these plots the spectrum will appear to jump around, this is an artifact of the way the noise floor spectrum jumps around at different frequencies due to either sampling or the AGC. In reality the noise part should be essentially flat. In the plot below there are a couple of spikes but a nice clean band between 45-51MHz is visible:

Below is the noise floor over the 90-135MHz band:

Below is the noise floor over the 180-210MHz band. This band is relatively clean except for one spike, the jumps every 770kHz are artifacts of the way I'm measuring the noise floor:

Below is the noise floor over the 345-435MHz band. The leakage from the local oscillator can be seen here with harmonics with 28.8MHz separation visible:

Below is the noise floor over the 465-585MHz band. This band like the 180-210MHz is relatively clean as well:

Below is the noise floor over the 690-945MHz band. Again leakage from the local oscillator is visible here, but this time the harmonics are separated by 14.4MHz (half the clock frequency).

In conclusion, the fc0012 comes across as a tuner especially designed for DVB and not much else in mind. The e4000 based ones are probably more general purpose, but I won't know for sure until I or someone else can test their frequency and noise floor behaviour. For DVB purposes the kinds of peaks visible wont present that much of a problem as long as the television station signals come in relatively strong. For AM and FM signals they will be more of a problem. Fortunately most of the harmonics appear to be from clock harmonics and will be relatively constant in amplitude over time so they can be notch filtered effectively.

If you want to look at the noise floor behaviour in a particular band in more detail I have put the data on-line in .csv format. The first column is the frequency and the second column is the power spectral density at that frequency.


  1. Nice work. Hopefully someone can repeat these tests on the e4000 based board.

  2. > 465-585 MHz, 690-945 MHz

    This can't be right, because I have a stick with
    RTL2832U/FC0012, and I can receive DVB-T at channel 37, which means 602MHz.
    So either your measurement is wrong, or the driver is not able to tune to all frequencies.
    Generally, I would expect that a DVB-T Tuner is able to cover all specified channels.

    The stick is a Terratec Cinergy T Stick Black.
    Picture can be seen in Michele Bavaro's Blog:

    What I observed while playing around with HDSDR, is that the tuner seems to lock sometimes. I then have to restart the driver.
    Seems that some of your gaps are just driver problems. Looks like the PLL settings are not correct in that ranges.

    1. I had the same feeling too since I can get TV stations (with the dongles supplied Windows software) that are just outside the frequency ranges I found using rtl-sdr. I'm using one of the original versions of librtlsdr which are still quite beta, when the drivers are improved some more I will run the scripts again and see how it goes.

  3. Hi Nice Work
    I have a Twintech UT30 DVBT/FM/DAB stick.
    It uses RTL2832 and FC0012 chips.
    With the VivaRadio software supplied it does cover
    Japanese and european FM bands 76 to 108 Mhz
    For DAB I can scan band 3 and band L but i never
    received anything due to lack of antenna and
    transmiters in my location (North of France BTW)
    DVBT is OK from 474 to 864 Mhz as far as i tested it.
    I have not yet succeded in using it for SDR.

  4. F1BJB,

    I'd be interested to have a look at the software for the UT30,
    and make a log of the USB transfer, to extract the settings for
    the FC0012.

    I couldn't find the software on Twintech's website, so would you mind uploading it somewhere?


  5. Hi
    Try this :
    I included another software I found witch works with my card
    Hope the link works because i don't use this service often.

  6. --->From this data it can be assumed that the frequency response of the fc0012 covers the following bands: 30-60 MHz, 90-135 MHz, 180-210 MHz, 240-285 MHz, 345-435 MHz, 465-585 MHz, 690-945 MHz.<---

    This can't be true. With my Lifeview NOT ONLY TV LV5T Deluxe FC0012 stick i am receiving without any problem UHF amateur band, Marine band, VHF amateur band and PPR. Something is wrong....

  7. Thanks for such valuable information. I have a fc0012 tuner and put it down to luck, can't find a datasheet anywhere! I've used it to decode pager traffic:, thanks for the've made things so much easier.