diff --git a/Dockerfile b/Dockerfile
index d7784c848f75d49dc46bf136fd7adc04b45b2e18..dd6fb579fe2099eb9ecb1792e4fc89d7a85fc194 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -26,7 +26,7 @@ RUN echo 'gnuradio:gnuradio' | chpasswd
 # I create a dir at home which I'll use to persist after the container is closed (need to change it's ownership)
 RUN mkdir /home/gnuradio/persistent  && chown gnuradio /home/gnuradio/persistent
 
-RUN sudo apt-get install -y cmake libusb-1.0 libusb-1.0-0-dev swig
+RUN apt-get install -y cmake libusb-1.0 libusb-1.0-0-dev swig
 
 #RUN sudo apt-get install -y rtl-sdr
 
@@ -41,12 +41,12 @@ RUN apt-get install -y git
 
 
 # Install rtl-sdr
-RUN sudo apt-get install -y git cmake libusb-1.0 libusb-1.0-0-dev swig pkg-config
+RUN apt-get install -y git cmake libusb-1.0 libusb-1.0-0-dev swig pkg-config
 RUN git clone git://git.osmocom.org/rtl-sdr.git /home/gnuradio/rtl-sdr/ && cd /home/gnuradio/rtl-sdr/ && mkdir build && cd build && cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON && make && sudo make install && sudo ldconfig 
 
 
 # Install hackrf
-RUN sudo apt-get install -y libhackrf-dev
+RUN apt-get install -y libhackrf-dev
 
 # Install bladerf
 
@@ -57,10 +57,9 @@ RUN apt-get install -y libbladerf-dev
 RUN apt-get install -y python3.9 gnuradio
 
 # Install gr-osmosdr
-RUN sudo apt install liborc-0.4-0 liborc-0.4-dev
-RUN git clone https://github.com/osmocom/gr-osmosdr.git /home/gnuradio/gr-osmosdr/
-RUN cd /home/gnuradio/gr-osmosdr/ && git checkout gr3.8 && mkdir build && cd build/ && cmake -DCMAKE_INSTALL_PREFIX=/usr ../ && make && sudo make install && sudo ldconfig
-
+RUN apt install liborc-0.4-0 liborc-0.4-dev
+RUN git clone --branch gr3.8 https://github.com/osmocom/gr-osmosdr.git /home/gnuradio/gr-osmosdr/
+RUN cd /home/gnuradio/gr-osmosdr/ && mkdir build && cd build/ && cmake -DCMAKE_INSTALL_PREFIX=/usr ../ && make && make install && sudo ldconfig
 
 # installing other packages needed for downloading and installing OOT modules
 RUN apt-get install -y gnuradio-dev cmake git libboost-all-dev libcppunit-dev liblog4cpp5-dev swig liborc-dev libgsl-dev
@@ -81,7 +80,7 @@ RUN apt remove -y soapysdr0.7-module-remote
 RUN apt-get install -y libxml2 libxml2-dev bison flex libaio-dev libavahi-common-dev libavahi-client-dev liborc-dev
     
 RUN git clone https://github.com/analogdevicesinc/libiio.git /home/gnuradio/libiio
-RUN cd /home/gnuradio/libiio && mkdir build && cd build && cmake .. -DPYTHON_BINDINGS=ON && make && sudo make install
+RUN cd /home/gnuradio/libiio && git checkout v0.24 && mkdir build && cd build && cmake .. -DPYTHON_BINDINGS=ON && make && sudo make install
 
 RUN git clone https://github.com/analogdevicesinc/libad9361-iio.git /home/gnuradio/libad9361-iio
 RUN cd /home/gnuradio/libad9361-iio && mkdir build && cd build && cmake .. -DPYTHON_BINDINGS=ON && make && sudo make install
diff --git a/README.md b/README.md
index d6e40f074910206ec8949889637865f0795d3082..42d66d7498c7fb23bb69cc020d00ec397909dcbd 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,10 @@
 
 El contenedor Docker nos da un entorno Ubuntu 20.04 con GnuRadio 3.8 y los drivers instalados de RTL-SDR, PLUTO-SDR y NUAND BLADE-RF.
 
+Requisitos previos:
+- Docker: ![https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
+- Asegurarse también de seguir los pasos de post-instalación en ![https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/linux-postinstall/ )
+
 ### Build
 
 En el directorio raíz hacer:
diff --git a/gnuradio/transmisor_imagen_adalm_fec.grc b/gnuradio/transmisor_imagen_adalm_fec.grc
new file mode 100644
index 0000000000000000000000000000000000000000..11d02ff58ab7741e74a82a41ce0fddd2054e9322
--- /dev/null
+++ b/gnuradio/transmisor_imagen_adalm_fec.grc
@@ -0,0 +1,613 @@
+options:
+  parameters:
+    author: ''
+    category: Custom
+    cmake_opt: ''
+    comment: ''
+    copyright: ''
+    description: ''
+    gen_cmake: 'On'
+    gen_linking: dynamic
+    generate_options: qt_gui
+    hier_block_src_path: '.:'
+    id: top_block
+    max_nouts: '0'
+    output_language: python
+    placement: (0,0)
+    qt_qss_theme: ''
+    realtime_scheduling: ''
+    run: 'True'
+    run_command: '{python} -u {filename}'
+    run_options: prompt
+    sizing_mode: fixed
+    thread_safe_setters: ''
+    title: ''
+    window_size: 1280, 1024
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [10, 10]
+    rotation: 0
+    state: enabled
+
+blocks:
+- name: alfa
+  id: variable
+  parameters:
+    comment: ''
+    value: '0.350'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [424, 4]
+    rotation: 0
+    state: enabled
+- name: amp
+  id: variable_qtgui_range
+  parameters:
+    comment: ''
+    gui_hint: ''
+    label: ''
+    min_len: '200'
+    orient: Qt.Horizontal
+    rangeType: float
+    start: '.001'
+    step: '.1'
+    stop: '10'
+    value: '.15'
+    widget: counter_slider
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [288, 4]
+    rotation: 0
+    state: enabled
+- name: bits_per_sym
+  id: variable
+  parameters:
+    comment: ''
+    value: '1'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [536, 68]
+    rotation: 0
+    state: enabled
+- name: enc_ccsds
+  id: variable_ccsds_encoder_def
+  parameters:
+    comment: ''
+    dim1: '1'
+    dim2: '4'
+    framebits: frame_size*8
+    mode: fec.CC_STREAMING
+    ndim: '0'
+    state_start: '0'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1224, 4.0]
+    rotation: 0
+    state: enabled
+- name: len_sym_srrc
+  id: variable
+  parameters:
+    comment: ''
+    value: '11'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [512, 4]
+    rotation: 0
+    state: enabled
+- name: pulso
+  id: variable
+  parameters:
+    comment: ''
+    value: firdes.root_raised_cosine(samp_per_sym, sym_rate*samp_per_sym, sym_rate,
+      alfa, samp_per_sym*len_sym_srrc)
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [616, 4]
+    rotation: 0
+    state: enabled
+- name: samp_per_sym
+  id: variable
+  parameters:
+    comment: ''
+    value: '3'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [424, 68]
+    rotation: 0
+    state: enabled
+- name: samp_rate
+  id: variable
+  parameters:
+    comment: ''
+    value: sym_rate*samp_per_sym
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [728, 68]
+    rotation: 0
+    state: enabled
+- name: samp_rate_sdr
+  id: variable
+  parameters:
+    comment: ''
+    value: int(2.048e6)
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [896, 4]
+    rotation: 0
+    state: enabled
+- name: sym_rate
+  id: variable
+  parameters:
+    comment: ''
+    value: 300e03*2
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [640, 68]
+    rotation: 0
+    state: enabled
+- name: blocks_file_source_0
+  id: blocks_file_source
+  parameters:
+    affinity: ''
+    alias: ''
+    begin_tag: pmt.PMT_NIL
+    comment: Imagen
+    file: /home/gnuradio/persistent/dat/imagen_bin.dat
+    length: '0'
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    offset: '0'
+    repeat: 'True'
+    type: byte
+    vlen: '1'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [16, 316.0]
+    rotation: 0
+    state: enabled
+- name: blocks_multiply_const_vxx_1
+  id: blocks_multiply_const_vxx
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    const: amp
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    type: complex
+    vlen: '1'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1328, 364.0]
+    rotation: 0
+    state: enabled
+- name: blocks_unpack_k_bits_bb_0
+  id: blocks_unpack_k_bits_bb
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    k: '8'
+    maxoutbuf: '0'
+    minoutbuf: '0'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [264, 348.0]
+    rotation: 0
+    state: true
+- name: digital_chunks_to_symbols_xx_0
+  id: digital_chunks_to_symbols_xx
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    dimension: '1'
+    in_type: byte
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    num_ports: '1'
+    out_type: complex
+    symbol_table: '[-1,1]'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [936, 352.0]
+    rotation: 0
+    state: enabled
+- name: digital_diff_encoder_bb_0
+  id: digital_diff_encoder_bb
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    modulus: 2**bits_per_sym
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [632, 348.0]
+    rotation: 0
+    state: enabled
+- name: fec_extended_encoder_1
+  id: fec_extended_encoder
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    encoder_list: enc_ccsds
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    puncpat: puncpat
+    threadtype: ordinary
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [400, 236.0]
+    rotation: 0
+    state: enabled
+- name: frame_size
+  id: parameter
+  parameters:
+    alias: ''
+    comment: ''
+    hide: none
+    label: Frame Size
+    short_id: ''
+    type: intx
+    value: 830*549
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1112, 4.0]
+    rotation: 0
+    state: enabled
+- name: iio_pluto_sink_0
+  id: iio_pluto_sink
+  parameters:
+    affinity: ''
+    alias: ''
+    attenuation1: '10'
+    auto_filter: 'True'
+    bandwidth: '20000000'
+    buffer_size: '32768'
+    comment: ''
+    cyclic: 'False'
+    filter: ''
+    frequency: '258000000'
+    samplerate: samp_rate_sdr
+    uri: ip:192.168.2.1
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1800, 300.0]
+    rotation: 0
+    state: true
+- name: import_0
+  id: import
+  parameters:
+    alias: ''
+    comment: ''
+    imports: from gnuradio.filter import firdes
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [176, 60]
+    rotation: 0
+    state: enabled
+- name: import_1
+  id: import
+  parameters:
+    alias: ''
+    comment: ''
+    imports: import math
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [176, 12]
+    rotation: 0
+    state: enabled
+- name: pfb_interpolator_ccf_0
+  id: pfb_interpolator_ccf
+  parameters:
+    affinity: ''
+    alias: ''
+    atten: '100'
+    comment: ''
+    interp: samp_per_sym
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    samp_delay: '0'
+    taps: pulso
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1112, 268.0]
+    rotation: 0
+    state: enabled
+- name: puncpat
+  id: parameter
+  parameters:
+    alias: ''
+    comment: ''
+    hide: none
+    label: ''
+    short_id: ''
+    type: ''
+    value: '''11'''
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1024, 4.0]
+    rotation: 0
+    state: enabled
+- name: qtgui_freq_sink_x_0
+  id: qtgui_freq_sink_x
+  parameters:
+    affinity: ''
+    alias: ''
+    alpha1: '1.0'
+    alpha10: '1.0'
+    alpha2: '1.0'
+    alpha3: '1.0'
+    alpha4: '1.0'
+    alpha5: '1.0'
+    alpha6: '1.0'
+    alpha7: '1.0'
+    alpha8: '1.0'
+    alpha9: '1.0'
+    autoscale: 'False'
+    average: '1.0'
+    axislabels: 'True'
+    bw: samp_rate
+    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: 'False'
+    gui_hint: ''
+    label: Relative Gain
+    label1: ''
+    label10: ''
+    label2: ''
+    label3: ''
+    label4: ''
+    label5: ''
+    label6: ''
+    label7: ''
+    label8: ''
+    label9: ''
+    legend: 'True'
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    name: '""'
+    nconnections: '1'
+    showports: 'True'
+    tr_chan: '0'
+    tr_level: '0.0'
+    tr_mode: qtgui.TRIG_MODE_FREE
+    tr_tag: '""'
+    type: complex
+    units: dB
+    update_time: '0.10'
+    width1: '1'
+    width10: '1'
+    width2: '1'
+    width3: '1'
+    width4: '1'
+    width5: '1'
+    width6: '1'
+    width7: '1'
+    width8: '1'
+    width9: '1'
+    wintype: firdes.WIN_BLACKMAN_hARRIS
+    ymax: '10'
+    ymin: '-140'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1560, 144.0]
+    rotation: 0
+    state: enabled
+- name: qtgui_time_sink_x_0
+  id: qtgui_time_sink_x
+  parameters:
+    affinity: ''
+    alias: ''
+    alpha1: '1.0'
+    alpha10: '1.0'
+    alpha2: '1.0'
+    alpha3: '1.0'
+    alpha4: '1.0'
+    alpha5: '1.0'
+    alpha6: '1.0'
+    alpha7: '1.0'
+    alpha8: '1.0'
+    alpha9: '1.0'
+    autoscale: 'False'
+    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'
+    entags: 'True'
+    grid: 'False'
+    gui_hint: ''
+    label1: ''
+    label10: ''
+    label2: ''
+    label3: ''
+    label4: ''
+    label5: ''
+    label6: ''
+    label7: ''
+    label8: ''
+    label9: ''
+    legend: 'True'
+    marker1: '-1'
+    marker10: '-1'
+    marker2: '-1'
+    marker3: '-1'
+    marker4: '-1'
+    marker5: '-1'
+    marker6: '-1'
+    marker7: '-1'
+    marker8: '-1'
+    marker9: '-1'
+    name: '""'
+    nconnections: '1'
+    size: '1024'
+    srate: samp_rate
+    stemplot: 'False'
+    style1: '1'
+    style10: '1'
+    style2: '1'
+    style3: '1'
+    style4: '1'
+    style5: '1'
+    style6: '1'
+    style7: '1'
+    style8: '1'
+    style9: '1'
+    tr_chan: '0'
+    tr_delay: '0'
+    tr_level: '0.0'
+    tr_mode: qtgui.TRIG_MODE_FREE
+    tr_slope: qtgui.TRIG_SLOPE_POS
+    tr_tag: '""'
+    type: complex
+    update_time: '0.10'
+    width1: '1'
+    width10: '1'
+    width2: '1'
+    width3: '1'
+    width4: '1'
+    width5: '1'
+    width6: '1'
+    width7: '1'
+    width8: '1'
+    width9: '1'
+    ylabel: Amplitude
+    ymax: '1'
+    ymin: '-1'
+    yunit: '""'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1560, 252.0]
+    rotation: 0
+    state: enabled
+- name: rational_resampler_xxx_0
+  id: rational_resampler_xxx
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    decim: int(samp_rate)
+    fbw: '0.4'
+    interp: int(samp_rate_sdr)
+    maxoutbuf: '0'
+    minoutbuf: '0'
+    taps: ''
+    type: ccc
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [1560, 340.0]
+    rotation: 0
+    state: enabled
+- name: video_sdl_sink_0
+  id: video_sdl_sink
+  parameters:
+    affinity: ''
+    alias: ''
+    comment: ''
+    display_height: '549'
+    display_width: '830'
+    fps: '0'
+    height: '549'
+    num_channels: '1'
+    type: byte
+    width: '830'
+  states:
+    bus_sink: false
+    bus_source: false
+    bus_structure: null
+    coordinate: [208, 468.0]
+    rotation: 0
+    state: true
+
+connections:
+- [blocks_file_source_0, '0', blocks_unpack_k_bits_bb_0, '0']
+- [blocks_file_source_0, '0', video_sdl_sink_0, '0']
+- [blocks_multiply_const_vxx_1, '0', qtgui_freq_sink_x_0, '0']
+- [blocks_multiply_const_vxx_1, '0', qtgui_time_sink_x_0, '0']
+- [blocks_multiply_const_vxx_1, '0', rational_resampler_xxx_0, '0']
+- [blocks_unpack_k_bits_bb_0, '0', fec_extended_encoder_1, '0']
+- [digital_chunks_to_symbols_xx_0, '0', pfb_interpolator_ccf_0, '0']
+- [digital_diff_encoder_bb_0, '0', digital_chunks_to_symbols_xx_0, '0']
+- [fec_extended_encoder_1, '0', digital_diff_encoder_bb_0, '0']
+- [pfb_interpolator_ccf_0, '0', blocks_multiply_const_vxx_1, '0']
+- [rational_resampler_xxx_0, '0', iio_pluto_sink_0, '0']
+
+metadata:
+  file_format: 1
diff --git a/run.sh b/run.sh
index f0721579961ca05809b5a4bb3cc45889c0499aa4..703963ff051178837bf12f11239fec6681204529 100644
--- a/run.sh
+++ b/run.sh
@@ -1,2 +1,2 @@
-docker run --runtime=runc --net=host --env="DISPLAY" -v $HOME/:/opt/root --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --privileged --device /dev/snd --device /dev/dri -v /dev/bus/usb/:/dev/bus/usb/ -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket --privileged -v $PWD/:/home/gnuradio/persistent/ --group-add=audio -it ubuntu:comina bash 
+docker run --runtime=runc --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --privileged --device /dev/snd --device /dev/dri -v /dev/bus/usb/:/dev/bus/usb/ -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket --privileged -v $PWD/:/home/gnuradio/persistent/ --group-add=audio -it ubuntu:comina bash