GNU Radio World

FM Receiver from RTL SDR

Broadcast FM receiver using RTL SDR

Press Load to open this flowgraph in an editor embedded above, then ▶ to run it. Nothing is downloaded until you do.

Open in the full editor ▶ Download the .grc

Blocks used

BlockModuleUsed
VariableGNU Radio3
QT GUI Frequency SinkGNU Radio2
QT GUI RangeGNU Radio2
👂 RTL-SDR SourceGNU Radio1
Audio SinkGNU Radio1
GUI LayoutGNU Radio1
Multiply ConstGNU Radio1
Rational ResamplerGNU Radio1
WBFM ReceiveGNU Radio1

Flowgraph source

audio/fm_receiver_rtlsdr.grc
options:
    parameters:
        author: Marc
        comment: ''
        copyright: ''
        description: Broadcast FM receiver using RTL SDR
        generate_options: qt_gui
        id: FM_Receiver_from_RTL_SDR
        title: FM Receiver from RTL SDR
    states:
        coordinate: [10, 10]
        rotation: 0
        state: enabled
blocks:
-   name: audio_rate
    id: variable
    parameters:
        comment: ''
        value: '48000'
    states:
        coordinate: [590, 10]
        rotation: 0
        state: enabled
-   name: center_freq
    id: variable_qtgui_range
    parameters:
        comment: ''
        label: Center Frequency
        min_len: '240'
        orient: QtCore.Qt.Horizontal
        rangeType: float
        start: int(85*1e6)
        step: int(0.5e6)
        stop: int(108*1e6)
        value: int(99.5*1e6)
        widget: counter_slider
    states:
        coordinate: [1340, 10]
        rotation: 0
        state: enabled
-   name: quad_rate
    id: variable
    parameters:
        comment: ''
        value: '240000'
    states:
        coordinate: [760, 10]
        rotation: 0
        state: enabled
-   name: samp_rate
    id: variable
    parameters:
        comment: ''
        value: '250000'
    states:
        coordinate: [930, 10]
        rotation: 0
        state: enabled
-   name: volume
    id: variable_qtgui_range
    parameters:
        comment: ''
        label: Volume
        min_len: '240'
        orient: QtCore.Qt.Horizontal
        rangeType: float
        start: '0'
        step: '0.01'
        stop: '1'
        value: '0.3'
        widget: counter_slider
    states:
        coordinate: [1100, 10]
        rotation: 0
        state: enabled
-   name: audio_spectrum
    id: qtgui_freq_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha10: '1'
        alpha2: '1'
        alpha3: '1'
        alpha4: '1'
        alpha5: '1'
        alpha6: '1'
        alpha7: '1'
        alpha8: '1'
        alpha9: '1'
        autoscale: 'False'
        average: '1.0'
        axislabels: 'True'
        color1: '"blue"'
        color10: '"dark blue"'
        color2: '"red"'
        color3: '"green"'
        color4: '"black"'
        color5: '"cyan"'
        color6: '"magenta"'
        color7: '"yellow"'
        color8: '"dark red"'
        color9: '"dark green"'
        comment: ''
        ctrlpanel: 'False'
        fc: '0'
        fftsize: '1024'
        freqhalf: 'False'
        grid: 'True'
        label1: Audio
        label10: ''
        label2: ''
        label3: ''
        label4: ''
        label5: ''
        label6: ''
        label7: ''
        label8: ''
        label9: ''
        legend: 'False'
        marker1: '-1'
        marker10: '-1'
        marker2: '-1'
        marker3: '-1'
        marker4: '-1'
        marker5: '-1'
        marker6: '-1'
        marker7: '-1'
        marker8: '-1'
        marker9: '-1'
        maxoutbuf: '0'
        minoutbuf: '0'
        name: Demodulated audio (19 kHz stereo pilot visible)
        nconnections: '1'
        samp_rate: audio_rate
        style1: '1'
        style10: '1'
        style2: '1'
        style3: '1'
        style4: '1'
        style5: '1'
        style6: '1'
        style7: '1'
        style8: '1'
        style9: '1'
        tr_chan: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_tag: ''
        type: float
        update_time: '0.1'
        width1: '1'
        width10: '1'
        width2: '1'
        width3: '1'
        width4: '1'
        width5: '1'
        width6: '1'
        width7: '1'
        width8: '1'
        width9: '1'
        ymax: '-20'
        ymin: '-120'
    states:
        coordinate: [1410, 210]
        rotation: 0
        state: enabled
-   name: resample_to_quad
    id: rational_resampler_xxx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        decim: '25'
        fbw: '0'
        interp: '24'
        maxoutbuf: '0'
        minoutbuf: '0'
        taps: '[]'
        type: ccc
    states:
        coordinate: [390, 230]
        rotation: 0
        state: enabled
-   name: rf_spectrum
    id: qtgui_freq_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha10: '1'
        alpha2: '1'
        alpha3: '1'
        alpha4: '1'
        alpha5: '1'
        alpha6: '1'
        alpha7: '1'
        alpha8: '1'
        alpha9: '1'
        autoscale: 'False'
        average: '1.0'
        axislabels: 'True'
        color1: '"blue"'
        color10: '"dark blue"'
        color2: '"red"'
        color3: '"green"'
        color4: '"black"'
        color5: '"cyan"'
        color6: '"magenta"'
        color7: '"yellow"'
        color8: '"dark red"'
        color9: '"dark green"'
        comment: ''
        ctrlpanel: 'False'
        fc: '0'
        fftsize: '1024'
        freqhalf: 'True'
        grid: 'True'
        label1: FM station
        label10: ''
        label2: ''
        label3: ''
        label4: ''
        label5: ''
        label6: ''
        label7: ''
        label8: ''
        label9: ''
        legend: 'False'
        marker1: '-1'
        marker10: '-1'
        marker2: '-1'
        marker3: '-1'
        marker4: '-1'
        marker5: '-1'
        marker6: '-1'
        marker7: '-1'
        marker8: '-1'
        marker9: '-1'
        maxoutbuf: '0'
        minoutbuf: '0'
        name: RF spectrum
        nconnections: '1'
        samp_rate: samp_rate
        style1: '1'
        style10: '1'
        style2: '1'
        style3: '1'
        style4: '1'
        style5: '1'
        style6: '1'
        style7: '1'
        style8: '1'
        style9: '1'
        tr_chan: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_tag: ''
        type: complex
        update_time: '0.1'
        width1: '1'
        width10: '1'
        width2: '1'
        width3: '1'
        width4: '1'
        width5: '1'
        width6: '1'
        width7: '1'
        width8: '1'
        width9: '1'
        ymax: '10'
        ymin: '-100'
    states:
        coordinate: [390, 370]
        rotation: 0
        state: enabled
-   name: speakers
    id: audio_sink
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        device_name: ''
        num_inputs: '1'
        ok_to_block: 'True'
        samp_rate: audio_rate
    states:
        coordinate: [1410, 390]
        rotation: 0
        state: enabled
-   name: volume_gain
    id: blocks_multiply_const_vxx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        const: volume
        maxoutbuf: '0'
        minoutbuf: '0'
        mode: scalar
        type: float
        vlen: '1'
    states:
        coordinate: [1100, 250]
        rotation: 0
        state: enabled
-   name: wasm_gui_layout_0
    id: wasm_gui_layout
    parameters:
        affinity: ''
        alias: ''
        columns: '12'
        comment: ''
        layout: '{"audio_spectrum":[0,1,12,4],"center_freq":[0,0,6,1],"rf_spectrum":[0,5,12,4],"volume":[6,0,6,1]}'
        row_height: '60'
    states:
        coordinate: [300, 10]
        rotation: 0
        state: enabled
-   name: wasm_rtlsdr_source_0
    id: wasm_rtlsdr_source
    parameters:
        affinity: ''
        alias: ''
        bias_tee: 'False'
        bufflen: '262144'
        center_freq: center_freq
        comment: ''
        device: ''
        direct_samp: '0'
        freq_correction: '0'
        gain: '30'
        gain_mode: 'True'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_rate: samp_rate
        type: complex
    states:
        coordinate: [30, 230]
        rotation: 0
        state: enabled
-   name: wbfm_demod
    id: analog_wfm_rcv
    parameters:
        affinity: ''
        alias: ''
        audio_decimation: '5'
        comment: ''
        deemph_tau: '0.000075'
        maxoutbuf: '0'
        minoutbuf: '0'
        quad_rate: quad_rate
    states:
        coordinate: [740, 240]
        rotation: 0
        state: enabled
connections:
- [resample_to_quad, '0', wbfm_demod, '0']
- [volume_gain, '0', audio_spectrum, '0']
- [volume_gain, '0', speakers, '0']
- [wasm_rtlsdr_source_0, '0', resample_to_quad, '0']
- [wasm_rtlsdr_source_0, '0', rf_spectrum, '0']
- [wbfm_demod, '0', volume_gain, '0']
metadata:
    file_format: 1
    grc_version: 3.11.0.0