GNU Radio World

AX.25 AFSK loopback using gr-satellites

AX.25 over AFSK, transmitted and received in one flowgraph

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
MultiplyGNU Radio2
QT GUI Time SinkGNU Radio2
Signal SourceGNU Radio2
Binary SlicerGNU Radio1
Char To FloatGNU Radio1
Complex To RealGNU Radio1
Decimating FIR FilterGNU Radio1
Frequency ModGNU Radio1
HDLC Deframergr-satellites1
HDLC Framergr-satellites1
HilbertGNU Radio1
Message DebugGNU Radio1
NRZI Decodegr-satellites1
NRZI Encodegr-satellites1
PDU To StreamGNU Radio1
Quadrature DemodGNU Radio1
RepeatGNU Radio1
Stream to Tagged StreamGNU Radio1
Symbol SyncGNU Radio1
Tagged Stream to PDUGNU Radio1
ThrottleGNU Radio1
Vector SourceGNU Radio1

Flowgraph source

gr-satellites/satellites_ax25_afsk.grc
options:
    parameters:
        author: Daniel Estevez
        copyright: ''
        description: AX.25 over AFSK, transmitted and received in one flowgraph
        generate_options: qt_gui
        id: AX_25_AFSK_loopback_using_gr_satellites
        title: AX.25 AFSK loopback using gr-satellites
    states:
        coordinate: [10, 10]
        rotation: 0
        state: enabled
blocks:
-   name: baudrate
    id: variable
    parameters:
        comment: ''
        value: samp_rate/samp_per_sym
    states:
        coordinate: [600, 10]
        rotation: 0
        state: enabled
-   name: samp_per_sym
    id: variable
    parameters:
        comment: ''
        value: '40'
    states:
        coordinate: [770, 10]
        rotation: 0
        state: enabled
-   name: samp_rate
    id: variable
    parameters:
        comment: ''
        value: '48000'
    states:
        coordinate: [970, 10]
        rotation: 0
        state: enabled
-   name: af_carrier
    id: analog_sig_source_x
    parameters:
        affinity: ''
        alias: ''
        amplitude: '1'
        comment: ''
        frequency: '1200'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_rate: samp_rate
        type: complex
        waveform: analog.GR_SIN_WAVE
    states:
        coordinate: [1200, 350]
        rotation: 0
        state: enabled
-   name: analytic
    id: hilbert_fc
    parameters:
        affinity: ''
        alias: ''
        beta: '6.76'
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        num_taps: '65'
        win: window.WIN_HAMMING
    states:
        coordinate: [610, 750]
        rotation: 0
        state: enabled
-   name: audio_scope
    id: qtgui_time_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha2: '1'
        autoscale: 'False'
        axislabels: 'True'
        color1: blue
        color2: red
        comment: ''
        ctrlpanel: 'False'
        grid: 'False'
        label1: Signal 1
        label2: Signal 2
        legend: 'True'
        marker1: '0'
        marker2: '0'
        name: Transmitted AFSK audio
        samp_rate: samp_rate
        size: '1024'
        stemplot: 'False'
        style1: '1'
        style2: '1'
        tr_chan: '0'
        tr_delay: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_slope: qtgui.TRIG_SLOPE_POS
        tr_tag: ''
        type: float
        update_time: '0.1'
        width1: '1'
        width2: '1'
        ylabel: Amplitude
        ymax: '1.5'
        ymin: '-1.5'
        yunit: ''
    states:
        coordinate: [610, 850]
        rotation: 0
        state: enabled
-   name: bits_to_float
    id: blocks_char_to_float
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        scale: '1'
        vlen: '1'
    states:
        coordinate: [950, 350]
        rotation: 0
        state: enabled
-   name: downmix
    id: blocks_multiply_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        num_inputs: '2'
        type: complex
        vlen: '1'
    states:
        coordinate: [980, 630]
        rotation: 0
        state: enabled
-   name: fm_modulator
    id: analog_frequency_modulator_fc
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        sensitivity: 2*math.pi*1000/samp_rate
    states:
        coordinate: [1200, 490]
        rotation: 0
        state: enabled
-   name: frame_tagger
    id: blocks_stream_to_tagged_stream
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        len_tag_key: packet_len
        maxoutbuf: '0'
        minoutbuf: '0'
        packet_len: '32'
        type: byte
        vlen: '1'
    states:
        coordinate: [690, 210]
        rotation: 0
        state: enabled
-   name: framed_bits
    id: pdu_pdu_to_stream_x
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        depth: '4096'
        early_behavior: pdu.EARLY_BURST_APPEND
        maxoutbuf: '0'
        minoutbuf: '0'
        type: byte
    states:
        coordinate: [100, 350]
        rotation: 0
        state: enabled
-   name: frames
    id: blocks_message_debug
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        en_uvec: 'True'
        log_level: info
    states:
        coordinate: [570, 1320]
        rotation: 0
        state: enabled
-   name: hdlc_deframer
    id: satellites_hdlc_deframer
    parameters:
        affinity: ''
        alias: ''
        check_fcs: 'True'
        comment: ''
        max_length: '10000'
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [80, 1410]
        rotation: 0
        state: enabled
-   name: hdlc_framer
    id: satellites_hdlc_framer
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        postamble_bytes: '7'
        preamble_bytes: '50'
    states:
        coordinate: [1450, 210]
        rotation: 0
        state: enabled
-   name: lo
    id: analog_sig_source_x
    parameters:
        affinity: ''
        alias: ''
        amplitude: '1'
        comment: ''
        frequency: '-1700'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_rate: samp_rate
        type: complex
        waveform: analog.GR_COS_WAVE
    states:
        coordinate: [610, 610]
        rotation: 0
        state: enabled
-   name: matched_filter
    id: fir_filter_xxx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        decim: '1'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_delay: '0'
        taps: '[1/samp_per_sym] * samp_per_sym'
        type: fff
    states:
        coordinate: [80, 1100]
        rotation: 0
        state: enabled
-   name: nrzi_decode
    id: satellites_nrzi_decode
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [1480, 1060]
        rotation: 0
        state: enabled
-   name: nrzi_encode
    id: satellites_nrzi_encode
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [430, 350]
        rotation: 0
        state: enabled
-   name: payload
    id: blocks_vector_source_x
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        repeat: 'True'
        tags: '[]'
        type: byte
        vector: '[130, 160, 144, 100, 96, 100, 96, 154, 96, 168, 144, 152, 64, 97, 3, 240, 72, 101, 108, 108, 111, 32, 102, 114, 111, 109, 32, 65, 88, 46, 50, 53]'
        vlen: '1'
    states:
        coordinate: [10, 200]
        rotation: 0
        state: enabled
-   name: payload_throttle
    id: blocks_throttle2
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        ignoretag: 'True'
        limit: auto
        maximum: '0.1'
        maxoutbuf: '0'
        minoutbuf: '0'
        samples_per_second: samp_rate
        type: byte
        vlen: '1'
    states:
        coordinate: [360, 190]
        rotation: 0
        state: enabled
-   name: quad_demod
    id: analog_quadrature_demod_cf
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        gain: samp_rate/(2*math.pi*500)
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [1220, 640]
        rotation: 0
        state: enabled
-   name: repeat
    id: blocks_repeat
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        interp: samp_per_sym
        maxoutbuf: '0'
        minoutbuf: '0'
        type: byte
        vlen: '1'
    states:
        coordinate: [680, 350]
        rotation: 0
        state: enabled
-   name: slicer
    id: digital_binary_slicer_fb
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [1120, 1060]
        rotation: 0
        state: enabled
-   name: symbol_scope
    id: qtgui_time_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        alpha2: '1'
        autoscale: 'True'
        axislabels: 'True'
        color1: blue
        color2: red
        comment: ''
        ctrlpanel: 'False'
        grid: 'False'
        label1: Signal 1
        label2: Signal 2
        legend: 'True'
        marker1: '0'
        marker2: '0'
        name: Recovered soft symbols
        samp_rate: baudrate
        size: '256'
        stemplot: 'False'
        style1: '1'
        style2: '1'
        tr_chan: '0'
        tr_delay: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_slope: qtgui.TRIG_SLOPE_POS
        tr_tag: ''
        type: float
        update_time: '0.1'
        width1: '1'
        width2: '1'
        ylabel: Amplitude
        ymax: '2'
        ymin: '-2'
        yunit: ''
    states:
        coordinate: [1120, 1160]
        rotation: 0
        state: enabled
-   name: symbol_sync
    id: digital_symbol_sync_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        constellation: digital.constellation_bpsk().base()
        damping: '1'
        loop_bw: '0.03'
        max_dev: '0.1'
        maxoutbuf: '0'
        minoutbuf: '0'
        nfilters: '128'
        osps: '1'
        pfb_mf_taps: '[]'
        resamp_type: digital.IR_MMSE_8TAP
        sps: samp_per_sym
        ted_gain: '1'
        ted_type: digital.TED_GARDNER
        type: ff
    states:
        coordinate: [460, 1010]
        rotation: 0
        state: enabled
-   name: to_audio
    id: blocks_complex_to_real
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        vlen: '1'
    states:
        coordinate: [330, 620]
        rotation: 0
        state: enabled
-   name: to_pdu
    id: pdu_tagged_stream_to_pdu
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        tag: packet_len
        type: byte
    states:
        coordinate: [1070, 210]
        rotation: 0
        state: enabled
-   name: upmix
    id: blocks_multiply_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        num_inputs: '2'
        type: complex
        vlen: '1'
    states:
        coordinate: [90, 610]
        rotation: 0
        state: enabled
connections:
- [af_carrier, '0', upmix, '1']
- [analytic, '0', downmix, '1']
- [bits_to_float, '0', fm_modulator, '0']
- [downmix, '0', quad_demod, '0']
- [fm_modulator, '0', upmix, '0']
- [frame_tagger, '0', to_pdu, '0']
- [framed_bits, '0', nrzi_encode, '0']
-   src_blk_id: hdlc_deframer
    src_port_id: out
    snk_blk_id: frames
    snk_port_id: print_pdu
-   src_blk_id: hdlc_framer
    src_port_id: out
    snk_blk_id: framed_bits
    snk_port_id: pdus
- [lo, '0', downmix, '0']
- [matched_filter, '0', symbol_sync, '0']
- [nrzi_decode, '0', hdlc_deframer, '0']
- [nrzi_encode, '0', repeat, '0']
- [payload, '0', payload_throttle, '0']
- [payload_throttle, '0', frame_tagger, '0']
- [quad_demod, '0', matched_filter, '0']
- [repeat, '0', bits_to_float, '0']
- [slicer, '0', nrzi_decode, '0']
- [symbol_sync, '0', slicer, '0']
- [symbol_sync, '0', symbol_scope, '0']
- [to_audio, '0', analytic, '0']
- [to_audio, '0', audio_scope, '0']
-   src_blk_id: to_pdu
    src_port_id: pdus
    snk_blk_id: hdlc_framer
    snk_port_id: in
- [upmix, '0', to_audio, '0']
metadata:
    file_format: 2
    grc_version: 3.11.0.0