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:  +- Asegurarse también de seguir los pasos de post-instalación en  + ### 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