KCC's Quizzes AQQ304 - A pure logic
1. Quote of the month: "I am not lazy, I'm just in energy-saving mode" - unknown
2. Quiz AQQ304 about finding a pure logic puzzle
Mike is looking at Anne, but Anne is looking at Paul.
Mike is married, but Paul is not.
Question:
Is a married
View All
August Monthly Blog Quiz! Read the blog, take the quiz, and you could win a gift card
Important: Read the blog first . The quiz questions are all based on the content of the blog:
Stay in the loop and win! Read the blog Current Output Driving Industrial Loops , then take our quick five-question quiz for a chance to win a gift card
View All
I HAVE TRIED ALL POSSIBLE INSTALLATION PROCEDURES BUT STILL GETTING THE IIO ERROR CONSISTENTLY. I HAVE USED THE FOLLOWING LINK TO INSTALL DEPENDENCIES AND THEN INSTALLED GNU RADIO 3.10.5.
https://wiki.analog.com/resources/tools-software/linux-software/gnuradio#download_and_build_libiio
AFTER THE INSTALLATION I AM FACING THE FOLLOWING ERROR:
<<< Welcome to GNU Radio Companion 3.10.5.0 >>>
Block paths:
/usr/share/gnuradio/grc/blocks
Loading: "/home/cipl/tyest1.grc"
>>> Done
Generating: '/home/cipl/tyest1.py'
Executing: /usr/bin/python3 -u /home/cipl/tyest1.py
Traceback (most recent call last):
File "/home/cipl/tyest1.py", line 169, in <module>
main()
File "/home/cipl/tyest1.py", line 147, in main
tb = top_block_cls()
File "/home/cipl/tyest1.py", line 99, in __init__
self.iio_fmcomms2_source_0 = iio.fmcomms2_source_fc32('ip:192.168.1.173', [True, True, False, False], 32768)
AttributeError: module 'gnuradio.iio' has no attribute 'fmcomms2_source_fc32'
>>> Done (return code 1)
PLEASE HELP WITH THE INSTALLATION PROCESS .
THANK YOU
How did you install gnuradio ? Did you build it from source or via package manager ? What OS are you using ? Did you have an older version of gnuradio prior to 3.10.5 installed on this PC ?
Moved to Virtual Classroom for ADI University Program section.
Thanks,
Dragos
Hi,
I installed my GNURadio from this link ( https://wiki.gnuradio.org/index.php/InstallingGR ) for windows with Radioconda installer.
I use Windows 10 64-bit version.
I had previous version. I uninstalled it first than installed 3.10.5 version.
My error is something like this:
line 199, in __init__
self.iio_pluto_source_0 = iio.fmcomms2_source_fc32('local:' if 'local:' else iio.get_pluto_uri(), [True, True], 32768)
AttributeError: module 'gnuradio.iio' has no attribute 'fmcomms2_source_fc32'
Thanks for support.
Best Regards,
Bora Kilerci
Hi again,
I deleted anything related about GNURadio and installed 3.10.4 again via Radioconda.
It works, however TX and RX doesn't work simultaneously.
I created a fm receiver, works fine.
Then created and transmitter, works fine.
However, not at the same time. Error code under below
File "D:\Yazilim\Amator_telsiz\SDR\GNU_Radio\Radar.py", line 212, in __init__
self.iio_pluto_sink_0 = iio.fmcomms2_sink_fc32('' if '' else iio.get_pluto_uri(), [True, True], 32768, False) # I tried any methode, ip:192.168.2.1.local etc. nothing works when
both tx and rx need to be work
RuntimeError: No Pluto device found =============>>>>>>>> # I can work with other SDR softwares, like SDR Angel, SDR Console etc.
OOOOOOOOOOOOO =============>>>>>>>> # The "counter" i would say when the code started by me it starts printing "O" 's in this line.
QT GUI doesn't show up but code looks started
I'm trying to make a basic Radar project.
Thx for now.
Best Regards,
Bora Kilerci
Can you provide the full python code?
-Travis
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: GPL-3.0
#
# GNU Radio Python Flow Graph
# Title: Adalm-Pluto Radar
# GNU Radio version: 3.10.4.0
from packaging.version import Version as StrictVersion
if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print("Warning: failed to XInitThreads()")
from PyQt5 import Qt
from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import analog
from gnuradio import filter
from gnuradio import gr
from gnuradio.fft import window
import sys
import signal
from argparse import ArgumentParser
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation
from gnuradio import iio
from gnuradio.qtgui import Range, GrRangeWidget
from PyQt5 import QtCore
from gnuradio import qtgui
class Radar(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Adalm-Pluto Radar", catch_exceptions=True)
Qt.QWidget.__init__(self)
self.setWindowTitle("Adalm-Pluto Radar")
qtgui.util.check_set_qss()
try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except:
pass
self.top_scroll_layout = Qt.QVBoxLayout()
self.setLayout(self.top_scroll_layout)
self.top_scroll = Qt.QScrollArea()
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
self.top_scroll_layout.addWidget(self.top_scroll)
self.top_scroll.setWidgetResizable(True)
self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout)
self.settings = Qt.QSettings("GNU Radio", "Radar")
try:
if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
self.restoreGeometry(self.settings.value("geometry").toByteArray())
else:
self.restoreGeometry(self.settings.value("geometry"))
except:
pass
##################################################
# Variables
##################################################
self.tx_att = tx_att = 70
self.tone_freq = tone_freq = 500
self.samp_rate = samp_rate = 2.304e6
self.rx_gain = rx_gain = 20
##################################################
# Blocks
##################################################
self._tx_att_range = Range(0, 100, 1, 70, 200)
self._tx_att_win = GrRangeWidget(self._tx_att_range, self.set_tx_att, "'tx_att'", "counter_slider", float, QtCore.Qt.Horizontal, "value")
self.top_layout.addWidget(self._tx_att_win)
self._tone_freq_range = Range(1, 1000, 1, 500, 200)
self._tone_freq_win = GrRangeWidget(self._tone_freq_range, self.set_tone_freq, "'tone_freq'", "counter_slider", float, QtCore.Qt.Horizontal, "value")
self.top_layout.addWidget(self._tone_freq_win)
self._rx_gain_range = Range(0, 73, 1, 20, 200)
self._rx_gain_win = GrRangeWidget(self._rx_gain_range, self.set_rx_gain, "'rx_gain'", "counter_slider", float, QtCore.Qt.Horizontal, "value")
self.top_layout.addWidget(self._rx_gain_win)
self.qtgui_time_sink_0 = qtgui.time_sink_c(
1024, #size
samp_rate, #samp_rate
"", #name
1, #number of inputs
None # parent
)
self.qtgui_time_sink_0.set_update_time(0.10)
self.qtgui_time_sink_0.set_y_axis(-1, 1)
self.qtgui_time_sink_0.set_y_label('Amplitude', "")
self.qtgui_time_sink_0.enable_tags(True)
self.qtgui_time_sink_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
self.qtgui_time_sink_0.enable_autoscale(False)
self.qtgui_time_sink_0.enable_grid(False)
self.qtgui_time_sink_0.enable_axis_labels(True)
self.qtgui_time_sink_0.enable_control_panel(False)
self.qtgui_time_sink_0.enable_stem_plot(False)
labels = ['', '', '', '', '',
'', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ['blue', 'red', 'green', 'black', 'cyan',
'magenta', 'yellow', 'dark red', 'dark green', 'dark blue']
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
styles = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
markers = [-1, -1, -1, -1, -1,
-1, -1, -1, -1, -1]
for i in range(2):
if len(labels[i]) == 0:
if (i % 2 == 0):
self.qtgui_time_sink_0.set_line_label(i, "Re{{Data {0}}}".format(i/2))
else:
self.qtgui_time_sink_0.set_line_label(i, "Im{{Data {0}}}".format(i/2))
else:
self.qtgui_time_sink_0.set_line_label(i, labels[i])
self.qtgui_time_sink_0.set_line_width(i, widths[i])
self.qtgui_time_sink_0.set_line_color(i, colors[i])
self.qtgui_time_sink_0.set_line_style(i, styles[i])
self.qtgui_time_sink_0.set_line_marker(i, markers[i])
self.qtgui_time_sink_0.set_line_alpha(i, alphas[i])
self._qtgui_time_sink_0_win = sip.wrapinstance(self.qtgui_time_sink_0.qwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_time_sink_0_win)
self.qtgui_freq_sink_0 = qtgui.freq_sink_c(
1024, #size
window.WIN_BLACKMAN_hARRIS, #wintype
0, #fc
samp_rate, #bw
"", #name
1,
None # parent
)
self.qtgui_freq_sink_0.set_update_time(0.10)
self.qtgui_freq_sink_0.set_y_axis((-140), 10)
self.qtgui_freq_sink_0.set_y_label('Relative Gain', 'dB')
self.qtgui_freq_sink_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
self.qtgui_freq_sink_0.enable_autoscale(False)
self.qtgui_freq_sink_0.enable_grid(False)
self.qtgui_freq_sink_0.set_fft_average(1.0)
self.qtgui_freq_sink_0.enable_axis_labels(True)
self.qtgui_freq_sink_0.enable_control_panel(False)
self.qtgui_freq_sink_0.set_fft_window_normalized(False)
labels = ['', '', '', '', '',
'', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ["blue", "red", "green", "black", "cyan",
"magenta", "yellow", "dark red", "dark green", "dark blue"]
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
for i in range(1):
if len(labels[i]) == 0:
self.qtgui_freq_sink_0.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_freq_sink_0.set_line_label(i, labels[i])
self.qtgui_freq_sink_0.set_line_width(i, widths[i])
self.qtgui_freq_sink_0.set_line_color(i, colors[i])
self.qtgui_freq_sink_0.set_line_alpha(i, alphas[i])
self._qtgui_freq_sink_0_win = sip.wrapinstance(self.qtgui_freq_sink_0.qwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_freq_sink_0_win)
self.low_pass_filter_0 = filter.fir_filter_ccf(
50,
firdes.low_pass(
1,
samp_rate,
(tone_freq*2),
250,
window.WIN_HAMMING,
6.76))
self.iio_pluto_source_0 = iio.fmcomms2_source_fc32('' if '' else iio.get_pluto_uri(), [True, True], 32768)
self.iio_pluto_source_0.set_len_tag_key('packet_len')
self.iio_pluto_source_0.set_frequency(3500000000)
self.iio_pluto_source_0.set_samplerate(int(samp_rate))
self.iio_pluto_source_0.set_gain_mode(0, 'manual')
self.iio_pluto_source_0.set_gain(0, rx_gain)
self.iio_pluto_source_0.set_quadrature(True)
self.iio_pluto_source_0.set_rfdc(True)
self.iio_pluto_source_0.set_bbdc(True)
self.iio_pluto_source_0.set_filter_params('Auto', '', 0, 0)
self.iio_pluto_sink_0 = iio.fmcomms2_sink_fc32('' if '' else iio.get_pluto_uri(), [True, True], 32768, False)
self.iio_pluto_sink_0.set_len_tag_key('')
self.iio_pluto_sink_0.set_bandwidth((int(samp_rate/2)))
self.iio_pluto_sink_0.set_frequency(3500000000)
self.iio_pluto_sink_0.set_samplerate(int(samp_rate))
self.iio_pluto_sink_0.set_attenuation(0, tx_att)
self.iio_pluto_sink_0.set_filter_params('Auto', '', 0, 0)
self.analog_sig_source_0 = analog.sig_source_c(samp_rate, analog.GR_SIN_WAVE, tone_freq, 1, 0, 0)
##################################################
# Connections
##################################################
self.connect((self.analog_sig_source_0, 0), (self.iio_pluto_sink_0, 0))
self.connect((self.iio_pluto_source_0, 0), (self.low_pass_filter_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.qtgui_freq_sink_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.qtgui_time_sink_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "Radar")
self.settings.setValue("geometry", self.saveGeometry())
self.stop()
self.wait()
event.accept()
def get_tx_att(self):
return self.tx_att
def set_tx_att(self, tx_att):
self.tx_att = tx_att
self.iio_pluto_sink_0.set_attenuation(0,self.tx_att)
def get_tone_freq(self):
return self.tone_freq
def set_tone_freq(self, tone_freq):
self.tone_freq = tone_freq
self.analog_sig_source_0.set_frequency(self.tone_freq)
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, (self.tone_freq*2), 250, window.WIN_HAMMING, 6.76))
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.analog_sig_source_0.set_sampling_freq(self.samp_rate)
self.iio_pluto_sink_0.set_bandwidth((int(self.samp_rate/2)))
self.iio_pluto_sink_0.set_samplerate(int(self.samp_rate))
self.iio_pluto_source_0.set_samplerate(int(self.samp_rate))
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, (self.tone_freq*2), 250, window.WIN_HAMMING, 6.76))
self.qtgui_freq_sink_0.set_frequency_range(0, self.samp_rate)
self.qtgui_time_sink_0.set_samp_rate(self.samp_rate)
def get_rx_gain(self):
return self.rx_gain
def set_rx_gain(self, rx_gain):
self.rx_gain = rx_gain
self.iio_pluto_source_0.set_gain(0, self.rx_gain)
def main(top_block_cls=Radar, options=None):
if gr.enable_realtime_scheduling() != gr.RT_OK:
print("Error: failed to enable real-time scheduling.")
if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
style = gr.prefs().get_string('qtgui', 'style', 'raster')
Qt.QApplication.setGraphicsSystem(style)
qapp = Qt.QApplication(sys.argv)
tb = top_block_cls()
tb.start()
tb.show()
def sig_handler(sig=None, frame=None):
tb.stop()
tb.wait()
Qt.QApplication.quit()
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
timer = Qt.QTimer()
timer.start(500)
timer.timeout.connect(lambda: None)
qapp.exec_()
if __name__ == '__main__':
main()
Can you manually specify the context as the IP of your Pluto? Are you able to access Pluto through IP of other tools like IIO-Scope?
-Travis
Im getting the same error while just trying to rx in the FM demod tutorial
89echo can you create a separate thread with the flowgraph and the output of an "iio_info -S" scan from the terminal.
-Travos