Read the mailing list of the GNU project right here! The information here is regarding the GNU radio project for USRP radios.
Wednesday, November 30, 2022
Help Needed for Differentiation Implementaion
Re: BW(Sample Rate) Issue
I've not experienced this problem with Gnuradio you describe, but
in another context, spacecraft communication, we had a simple test setup
that transmitted a fixed pattern of alternating ones and zeros.
However the way error coding was done the lock was always poor.
For testing purposes you might have much better luck by sending a "sudo-random"
noise sequence that you define and write into the transmit code. Then
test that this code arrives correctly on the receive side.
We found the lock was very reliable, for the noise-like sequence.
Hope this helps, but just a guess
Glen
> On Nov 30, 2022, at 3:54 PM, Cinaed Simson <cinaed.simson@gmail.com> wrote:
>
> Hi Rohith - Ihe minim sampling rate for the Pluto is in the ball park of 500 KHz.
>
> See
>
> https://ez.analog.com/adieducation/university-program/f/q-a/557730/pluto-sdr-sampling-rate
>
> -- Cinaed
>
>
> On 11/30/22 05:54, Rohith Rajan wrote:
>> I am asking a doubt regarding receiver using an Adalm Pluto SDR
>> In the receiver section we are using Polyphase Clock Sync, Linear Equalizer and Costas Loop.
>> My doubt is that is the configuration parameters of these blocks are dependent on the BW of the signal(Sample Rate)
>>
>> Keeping the parameters as Normal (In Polyphase Clock Sync block- No of filters(nfilts) as 32, Loop Bw .0628, RRC filter as
>>
>> firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), 0.35, 11*sps*nfilts), sps as 4
>>
>> ; In Linear Equalizer No of Taps as 15 ;In CostasLoop Loop BW as .0628) when I set the BW(sample Rate around)1MHz I can receive the datas.
>>
>> But when I set the BW(Sample Rate) as 125KHz I cannot receive the datas.
>>
>> Anyone plese tell me what modification I have to make ?
>>
>
Re: BW(Sample Rate) Issue
See
https://ez.analog.com/adieducation/university-program/f/q-a/557730/pluto-sdr-sampling-rate
-- Cinaed
I am asking a doubt regarding receiver using an Adalm Pluto SDR
In the receiver section we are using Polyphase Clock Sync, Linear Equalizer and Costas Loop.
My doubt is that is the configuration parameters of these blocks are dependent on the BW of the signal(Sample Rate)Keeping the parameters as Normal (In Polyphase Clock Sync block- No of filters(nfilts) as 32, Loop Bw .0628, RRC filter as
firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), 0.35, 11*sps*nfilts), sps as 4
; In Linear Equalizer No of Taps as 15 ;In CostasLoop Loop BW as .0628) when I set the BW(sample Rate around)1MHz I can receive the datas.
But when I set the BW(Sample Rate) as 125KHz I cannot receive the datas.
Anyone plese tell me what modification I have to make ?
BW(Sample Rate) Issue
I am asking a doubt regarding receiver using an Adalm Pluto SDR
In the receiver section we are using Polyphase Clock Sync, Linear Equalizer and Costas Loop.
My doubt is that is the configuration parameters of these blocks are dependent on the BW of the signal(Sample Rate)
Keeping the parameters as Normal (In Polyphase Clock Sync block- No of filters(nfilts) as 32, Loop Bw .0628, RRC filter as
firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), 0.35, 11*sps*nfilts), sps as 4
; In Linear Equalizer No of Taps as 15 ;In CostasLoop Loop BW as .0628) when I set the BW(sample Rate around)1MHz I can receive the datas.
But when I set the BW(Sample Rate) as 125KHz I cannot receive the datas.
Anyone plese tell me what modification I have to make ?
Tuesday, November 29, 2022
New HDL Co-Simulation with GNURadio and Riviera-PRO
Hi All –
Nice to meet most of you at GRCon22. We showcased our new HDL co-simulation interface between GNURadio and Riviera-PRO.
https://www.aldec.com/en/products/functional_verification/riviera-pro
You are now able to co-simulate and debug your HDL IPs within GNURadio flowgraphs.
Let me know if anyone is interested to do a free evaluation. We're very much looking forward to your feedback.
Simply reply to my email (louied@aldec.com) with the following information and we will process your request.
Company Name:
Address:
Contact Name:
Title:
Email:
MACID of your machine:
Thanks and good day!
Louie De Luna
Aldec Inc.
Monday, November 28, 2022
Re: QT GUI Label error in v 3.10.1.1
export QT_QPA_PLATFORM=wayland
to your
$HOME/.bash_profile
file or your
$HOME/.bashrc
file - if you feel comfortable editing files on Linux.
I prefer the .bashrc since this were I place all my exports and group them all together.
However, the .bashrc isn't as tolerant to errors as the .bash_profile file.
In either case make a backup of the file before you edit the file.
You can check the results after you login again by typing
echo $QT_QPA_PLATFORM
-- Cinaed
HI Cinaed and Jeff,
Sorry for the late reply. I checked if I had the qt-6 wayland and xwayland installed. Turns out I didn't have the qt6-wayland installed so I installed it. The issue still remained so I disabled wayland and it seemed to work. Just like what you guys saw, I stopped seeing the issue on my flowgraph.
However, I attempted another flowgraph that used QT GUI Label and the issue came back. I have added the new flowgraph I created along with its generated code.
I am working from a WIndows machine that has a Virtual Machine with Ubuntu 22.04. One quick question though: Where would I set the export QT_QPA_PLATFORM
Thanks,Jose Ruvalcaba
On Thu, Nov 24, 2022 at 5:25 PM Cinaed Simson <cinaed.simson@gmail.com> wrote:
Hi Jose - I can run your script for hours without any issues on both GR 3.8 and 3.10.
Have you tried setting
export QT_QPA_PLATFORM=wayland
as indicated in the first error message - to see if the script runs longer then 10 minutes?
My guess is if you eliminate the first exception the other exceptions will disappear.
Are you working from the console of a linux machine - or are you working from the console of a Windows machine - and then connecting to the a Linux machine by some method?
-- Cinaed
On Tue, Nov 22, 2022 at 10:23 PM Jose Ruvalcaba <joruvalc@gmail.com> wrote:
Hello,
I've been noticing an issue popping out everytime I stop running my flowgraph and I was wondering if someone had some insight on it. I have a flowgraph where a signal source is connected to a probe signal block. This block is constantly updating values and are being displayed using the QT GUI Label block. However, after running my flowgraph for about 10 minutes I get the following error:
Executing: /usr/bin/python3 -u /home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Exception in thread Thread-1 (_amp_probe):
Traceback (most recent call last):
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 150, in _amp_probe
self.doc.add_next_tick_callback(functools.partial(self.set_amp,val))
File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line 88, in __getattr__
return getattr(self._impl, name)
AttributeError: 'gnuradio.gr.gr_python.top_block_pb' object has no attribute 'doc'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 152, in _amp_probe
self.set_amp(val)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 182, in set_amp
self.set_variable_qtgui_label_0(self.amp)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 189, in set_variable_qtgui_label_0
Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_0_label, "setText", Qt.Q_ARG("QString", str(self._variable_qtgui_label_0_formatter(self.variable_qtgui_label_0))))
RuntimeError: wrapped C/C++ object of type QLabel has been deleted
It seems that my issue is related to the QT GUI Label block because when I remove it and add say QT GUI Number sink, this issue doesn't appear.
Has anyone experienced this issue? If so, would anyone be able to steer me in the direction to fix it? I am currently running on Ubuntu 22.04 and am running GNU RADIO 3.10.1.1 which I installed using sudo apt-get install. I've also attached the flowgraph I am talking about.
Thanks,
Jose Ruvalcaba
Re: QT GUI Label error in v 3.10.1.1
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: GPL-3.0
#
# GNU Radio Python Flow Graph
# Title: Pyephem FSPL v1.0
# Author: spacerfvm
# GNU Radio version: 3.10.1.1
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 eng_notation
from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import analog
from gnuradio import blocks
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
import pyephemfspltest_epy_block_0 as epy_block_0 # embedded python block
import time
import threading
from gnuradio import qtgui
class pyephemfspltest(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Pyephem FSPL v1.0", catch_exceptions=True)
Qt.QWidget.__init__(self)
self.setWindowTitle("Pyephem FSPL v1.0")
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", "pyephemfspltest")
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.fspl_test = fspl_test = 0
self.variable_qtgui_label_1 = variable_qtgui_label_1 = fspl_test
self.samp_rate = samp_rate = 32000
self.atten_test = atten_test = -1.0/(10.0**(fspl_test/20.0))
self.TLE_LINE_2 = TLE_LINE_2 = "2 25544 51.6433 79.0852 0005185 353.3514 119.8705 15.49577743364510"
self.TLE_LINE_1 = TLE_LINE_1 = "1 25544U 98067A 22292.82819656 .00008231 00000-0 15426-3 0 9997"
self.Radio_1 = Radio_1 = 100e6
self.Name_of_satellite = Name_of_satellite = "ISS (ZARYA)"
##################################################
# Blocks
##################################################
self.fspl = blocks.probe_signal_f()
self._variable_qtgui_label_1_tool_bar = Qt.QToolBar(self)
if None:
self._variable_qtgui_label_1_formatter = None
else:
self._variable_qtgui_label_1_formatter = lambda x: eng_notation.num_to_str(x)
self._variable_qtgui_label_1_tool_bar.addWidget(Qt.QLabel("Uplink FSPL (dB) = "))
self._variable_qtgui_label_1_label = Qt.QLabel(str(self._variable_qtgui_label_1_formatter(self.variable_qtgui_label_1)))
self._variable_qtgui_label_1_tool_bar.addWidget(self._variable_qtgui_label_1_label)
self.top_grid_layout.addWidget(self._variable_qtgui_label_1_tool_bar, 3, 0, 1, 1)
for r in range(3, 4):
self.top_grid_layout.setRowStretch(r, 1)
for c in range(0, 1):
self.top_grid_layout.setColumnStretch(c, 1)
self.qtgui_freq_sink_x_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_x_0.set_update_time(0.10)
self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB')
self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
self.qtgui_freq_sink_x_0.enable_autoscale(True)
self.qtgui_freq_sink_x_0.enable_grid(True)
self.qtgui_freq_sink_x_0.set_fft_average(1.0)
self.qtgui_freq_sink_x_0.enable_axis_labels(True)
self.qtgui_freq_sink_x_0.enable_control_panel(False)
self.qtgui_freq_sink_x_0.set_fft_window_normalized(False)
labels = ['Source', 'Source with Atten', '', '', '',
'', '', '', '', '']
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_x_0.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])
self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.qwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win)
def _fspl_test_probe():
while True:
val = self.fspl.level()
try:
try:
self.doc.add_next_tick_callback(functools.partial(self.set_fspl_test,val))
except AttributeError:
self.set_fspl_test(val)
except AttributeError:
pass
time.sleep(1.0 / (10))
_fspl_test_thread = threading.Thread(target=_fspl_test_probe)
_fspl_test_thread.daemon = True
_fspl_test_thread.start()
self.epy_block_0 = epy_block_0.blk(Event='None', frequency=Radio_1, tle_line_1=Name_of_satellite, tle_line_2=TLE_LINE_1, tle_line_3=TLE_LINE_2)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True)
self.blocks_multiply_const_vxx_0 = blocks.multiply_const_cc(atten_test)
self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 1000, 1, 0, 0)
##################################################
# Connections
##################################################
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_0, 0))
self.connect((self.blocks_multiply_const_vxx_0, 0), (self.qtgui_freq_sink_x_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.blocks_multiply_const_vxx_0, 0))
self.connect((self.epy_block_0, 0), (self.fspl, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "pyephemfspltest")
self.settings.setValue("geometry", self.saveGeometry())
self.stop()
self.wait()
event.accept()
def get_fspl_test(self):
return self.fspl_test
def set_fspl_test(self, fspl_test):
self.fspl_test = fspl_test
self.set_atten_test(-1.0/(10.0**(self.fspl_test/20.0)))
self.set_variable_qtgui_label_1(self.fspl_test)
def get_variable_qtgui_label_1(self):
return self.variable_qtgui_label_1
def set_variable_qtgui_label_1(self, variable_qtgui_label_1):
self.variable_qtgui_label_1 = variable_qtgui_label_1
Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_1_label, "setText", Qt.Q_ARG("QString", str(self._variable_qtgui_label_1_formatter(self.variable_qtgui_label_1))))
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_x_0.set_sampling_freq(self.samp_rate)
self.blocks_throttle_0.set_sample_rate(self.samp_rate)
self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate)
def get_atten_test(self):
return self.atten_test
def set_atten_test(self, atten_test):
self.atten_test = atten_test
self.blocks_multiply_const_vxx_0.set_k(self.atten_test)
def get_TLE_LINE_2(self):
return self.TLE_LINE_2
def set_TLE_LINE_2(self, TLE_LINE_2):
self.TLE_LINE_2 = TLE_LINE_2
self.epy_block_0.tle_line_3 = self.TLE_LINE_2
def get_TLE_LINE_1(self):
return self.TLE_LINE_1
def set_TLE_LINE_1(self, TLE_LINE_1):
self.TLE_LINE_1 = TLE_LINE_1
self.epy_block_0.tle_line_2 = self.TLE_LINE_1
def get_Radio_1(self):
return self.Radio_1
def set_Radio_1(self, Radio_1):
self.Radio_1 = Radio_1
self.epy_block_0.frequency = self.Radio_1
def get_Name_of_satellite(self):
return self.Name_of_satellite
def set_Name_of_satellite(self, Name_of_satellite):
self.Name_of_satellite = Name_of_satellite
self.epy_block_0.tle_line_1 = self.Name_of_satellite
def main(top_block_cls=pyephemfspltest, options=None):
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()
Hi Jose - I can run your script for hours without any issues on both GR 3.8 and 3.10.
Have you tried setting
export QT_QPA_PLATFORM=wayland
as indicated in the first error message - to see if the script runs longer then 10 minutes?
My guess is if you eliminate the first exception the other exceptions will disappear.
Are you working from the console of a linux machine - or are you working from the console of a Windows machine - and then connecting to the a Linux machine by some method?
-- Cinaed
On Tue, Nov 22, 2022 at 10:23 PM Jose Ruvalcaba <joruvalc@gmail.com> wrote:
Hello,
I've been noticing an issue popping out everytime I stop running my flowgraph and I was wondering if someone had some insight on it. I have a flowgraph where a signal source is connected to a probe signal block. This block is constantly updating values and are being displayed using the QT GUI Label block. However, after running my flowgraph for about 10 minutes I get the following error:
Executing: /usr/bin/python3 -u /home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Exception in thread Thread-1 (_amp_probe):
Traceback (most recent call last):
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 150, in _amp_probe
self.doc.add_next_tick_callback(functools.partial(self.set_amp,val))
File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line 88, in __getattr__
return getattr(self._impl, name)
AttributeError: 'gnuradio.gr.gr_python.top_block_pb' object has no attribute 'doc'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 152, in _amp_probe
self.set_amp(val)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 182, in set_amp
self.set_variable_qtgui_label_0(self.amp)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 189, in set_variable_qtgui_label_0
Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_0_label, "setText", Qt.Q_ARG("QString", str(self._variable_qtgui_label_0_formatter(self.variable_qtgui_label_0))))
RuntimeError: wrapped C/C++ object of type QLabel has been deleted
It seems that my issue is related to the QT GUI Label block because when I remove it and add say QT GUI Number sink, this issue doesn't appear.
Has anyone experienced this issue? If so, would anyone be able to steer me in the direction to fix it? I am currently running on Ubuntu 22.04 and am running GNU RADIO 3.10.1.1 which I installed using sudo apt-get install. I've also attached the flowgraph I am talking about.
Thanks,
Jose Ruvalcaba
Sunday, November 27, 2022
Re: Implementation of OFDM TX and RX using GNURadio and USRP
> On 27/11/2022 17:23, Marcus D. Leech wrote:
>> On 27/11/2022 05:26, Daniel Estévez wrote:
>>>
>>> Hi,
>>>
>>> Another option for extracting one or a range of items from a vector
>>> is to use Vector to Stream followed by Keep 1 in N or Keep M in N.
>>> See near the bottom of this flowgraph for an example:
>>>
>>> https://github.com/daniestevez/reu-2022/blob/main/polyphase/polyphase_filter.grc
>>>
>>>
>>> Best,
>>> Daniel.
>>>
>> That would only allow the first or first-N of the streams to be
>> captured, rather than some arbitrary single stream, no?
>
> No, because these blocks have an initial offset parameter (and if they
> didn't, we could use "Skip Head"). As an example, say that we have
> 1024-point FFTs given as vectors and we only want the FFT bin number 42.
>
> We do vector to stream, then Keep 1 in N with N = 1024 and initial
> offset = 42. This would give us a stream where only the FFT bin number
> 42 appears.
>
> Now say that w want FFT bin numbers 42, 43, 44, 45. We do vector to
> stream, then Keep M in N with N = 1024, M = 4, initial offset = 42.
> This would give us a stream that contains:
>
> bin_42(t0), bin_43(t0), bin_44(t0), bin_45(t0), bin_42(t1),
> bin_43(t1), bin_44(t1), bin_45(t1)...
>
> If desired, we can turn this into vectors of 4 elements using stream
> to vector or use a deinterleave block to separate each of the bins in
> its own stream.
>
> Best,
> Daniel.
>
Hah! I've used "Keep One in N" and "Keep M in N" for *years*, and never
noticed that! Color me chagrined.....
Re: Implementation of OFDM TX and RX using GNURadio and USRP
> On 27/11/2022 05:26, Daniel Estévez wrote:
>>
>> Hi,
>>
>> Another option for extracting one or a range of items from a vector is
>> to use Vector to Stream followed by Keep 1 in N or Keep M in N. See
>> near the bottom of this flowgraph for an example:
>>
>> https://github.com/daniestevez/reu-2022/blob/main/polyphase/polyphase_filter.grc
>>
>> Best,
>> Daniel.
>>
> That would only allow the first or first-N of the streams to be
> captured, rather than some arbitrary single stream, no?
No, because these blocks have an initial offset parameter (and if they
didn't, we could use "Skip Head"). As an example, say that we have
1024-point FFTs given as vectors and we only want the FFT bin number 42.
We do vector to stream, then Keep 1 in N with N = 1024 and initial
offset = 42. This would give us a stream where only the FFT bin number
42 appears.
Now say that w want FFT bin numbers 42, 43, 44, 45. We do vector to
stream, then Keep M in N with N = 1024, M = 4, initial offset = 42. This
would give us a stream that contains:
bin_42(t0), bin_43(t0), bin_44(t0), bin_45(t0), bin_42(t1), bin_43(t1),
bin_44(t1), bin_45(t1)...
If desired, we can turn this into vectors of 4 elements using stream to
vector or use a deinterleave block to separate each of the bins in its
own stream.
Best,
Daniel.
Re: Implementation of OFDM TX and RX using GNURadio and USRP
>
> Hi,
>
> Another option for extracting one or a range of items from a vector is
> to use Vector to Stream followed by Keep 1 in N or Keep M in N. See
> near the bottom of this flowgraph for an example:
>
> https://github.com/daniestevez/reu-2022/blob/main/polyphase/polyphase_filter.grc
>
>
> Best,
> Daniel.
>
That would only allow the first or first-N of the streams to be
captured, rather than some arbitrary single stream, no?
Re: Implementation of OFDM TX and RX using GNURadio and USRP
>>>
>>> Could anyone please give me advice how to extract certain carriers
>>> from the FFT bins of the demodulator?
>
> I just thought of this little "idiom" for picking a single item from a
> vector, that doesn't require that you write your own block.
> It takes advantage of "busports" (as a notational convenience).
Hi,
Another option for extracting one or a range of items from a vector is
to use Vector to Stream followed by Keep 1 in N or Keep M in N. See near
the bottom of this flowgraph for an example:
https://github.com/daniestevez/reu-2022/blob/main/polyphase/polyphase_filter.grc
Best,
Daniel.
Saturday, November 26, 2022
Re: Implementation of OFDM TX and RX using GNURadio and USRP
I just thought of this little "idiom" for picking a single item from a vector, that doesn't require that you write your own block.Thanks for your reply, Mr. Leech!
This is what I am trying to do in this stage, but my embedded python block causes the flowgraph to freeze when I run it.
I will try to figure out how to fix that!
Regards,Wesam
From: discuss-gnuradio-bounces+waalamiri42=tntech.edu@gnu.org <discuss-gnuradio-bounces+waalamiri42=tntech.edu@gnu.org> on behalf of Marcus D. Leech <patchvonbraun@gmail.com>
Sent: Saturday, November 26, 2022 6:44 PM
To: discuss-gnuradio@gnu.org <discuss-gnuradio@gnu.org>
Subject: Re: Implementation of OFDM TX and RX using GNURadio and USRPExternal Email Warning
This email originated from outside the university. Please use caution when opening attachments, clicking links, or responding to requests.
On 26/11/2022 15:19, Al Amiri, Wesam (waalamiri42) wrote:
Without completely dissecting your flow-graph, if this were MY problem, I might make an embedded Python block that allows meDears,
I am working on the implementation of OFDM TX and RX using GNURadio 3.10.3 and USRP N210 (with UHD_4.2.0). In the implementation, I followed the GRC flow graph provided by GNU Radio Workshop (Slides 259 - 260) with changing the carrier frequency to 2 GHz, Sampling rate 1MHz at TX, and 10 MHz for Rx.
The Tx USRP is connected to a Log Periodic antenna and similarly for the Rx USRP. There is no LOS between the TX and Rx antennas. They directed toward a reflective board so that the transmitted signal will be reflected by the board and received by the receiver. The implementation works fine, and I was able to receive the OFDM signal by the RX USRP.
What I am trying to do is to extract some carriers from the FFT bins at the demodulator to do phase measurements on each one of the extracted carriers.
I tried to create my own block to do that, but that didn't work and caused the GRC graph to freeze. Then, I tried to do that offline using Matlab, where I attached the FFT block to a file sink.
In Matlab, I plotted the absolute of I/Q samples of the file sink as shown in the attached figure. But still, I am not able to distinguish between the subcarriers.
Could anyone please give me advice how to extract certain carriers from the FFT bins of the demodulator?
Regards,
Wesam Al Amiri
to select a single FFT bin and pass that along to an analysis function. The FFT output is a vector, so it should be straightforward
to implement a "pick a single carrier" function in Python, since your sample-rate is only 1Msps, and your FFT size is (I think) 64,
that means your function has to deal with a new vector at 15kHz, which is achievable for a Python embedded block.
That's a quick thought based on an only superficial analysis of the problem, and others here might have better ways of
doing it.
It takes advantage of "busports" (as a notational convenience).
The key here is the multiply-const, where you set the constant to a vector with a "1" in the position that you want to
"pick", and 0s elsewhere. Convert that to a set of streams, and then add the streams--in this case we use a bus-port
on the output of the vector-to-streams and the input of the 'add'. Since only one of those streams will contain
non-zero data after the multiply-const, you can see that this has the effect of picking only a single FFT "bin" as a
sample stream, and doesn't require that you navigate the intricacies of writing your own embedded Python block.
It's likely much faster, too.
This is a common need, I suspect, and I wonder if there's another block that does this, but with some other,
clever, domain-specific name.
There are probably other idiomatic ways to do this, but this is what I thought of just a few minutes ago...
Re: Implementation of OFDM TX and RX using GNURadio and USRP
Without completely dissecting your flow-graph, if this were MY problem, I might make an embedded Python block that allows meDears,
I am working on the implementation of OFDM TX and RX using GNURadio 3.10.3 and USRP N210 (with UHD_4.2.0). In the implementation, I followed the GRC flow graph provided by GNU Radio Workshop (Slides 259 - 260) with changing the carrier frequency to 2 GHz, Sampling rate 1MHz at TX, and 10 MHz for Rx.
The Tx USRP is connected to a Log Periodic antenna and similarly for the Rx USRP. There is no LOS between the TX and Rx antennas. They directed toward a reflective board so that the transmitted signal will be reflected by the board and received by the receiver. The implementation works fine, and I was able to receive the OFDM signal by the RX USRP.
What I am trying to do is to extract some carriers from the FFT bins at the demodulator to do phase measurements on each one of the extracted carriers.
I tried to create my own block to do that, but that didn't work and caused the GRC graph to freeze. Then, I tried to do that offline using Matlab, where I attached the FFT block to a file sink.
In Matlab, I plotted the absolute of I/Q samples of the file sink as shown in the attached figure. But still, I am not able to distinguish between the subcarriers.
Could anyone please give me advice how to extract certain carriers from the FFT bins of the demodulator?
Regards,
Wesam Al Amiri
to select a single FFT bin and pass that along to an analysis function. The FFT output is a vector, so it should be straightforward
to implement a "pick a single carrier" function in Python, since your sample-rate is only 1Msps, and your FFT size is (I think) 64,
that means your function has to deal with a new vector at 15kHz, which is achievable for a Python embedded block.
That's a quick thought based on an only superficial analysis of the problem, and others here might have better ways of
doing it.
Thursday, November 24, 2022
Re: QT GUI Label error in v 3.10.1.1
Have you tried setting
export QT_QPA_PLATFORM=wayland
as indicated in the first error message - to see if the script runs longer then 10 minutes?
My guess is if you eliminate the first exception the other exceptions will disappear.
Are you working from the console of a linux machine - or are you working from the console of a Windows machine - and then connecting to the a Linux machine by some method?
-- Cinaed
On Tue, Nov 22, 2022 at 10:23 PM Jose Ruvalcaba <joruvalc@gmail.com> wrote:
Hello,
I've been noticing an issue popping out everytime I stop running my flowgraph and I was wondering if someone had some insight on it. I have a flowgraph where a signal source is connected to a probe signal block. This block is constantly updating values and are being displayed using the QT GUI Label block. However, after running my flowgraph for about 10 minutes I get the following error:
Executing: /usr/bin/python3 -u /home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Exception in thread Thread-1 (_amp_probe):
Traceback (most recent call last):
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 150, in _amp_probe
self.doc.add_next_tick_callback(functools.partial(self.set_amp,val))
File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line 88, in __getattr__
return getattr(self._impl, name)
AttributeError: 'gnuradio.gr.gr_python.top_block_pb' object has no attribute 'doc'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 152, in _amp_probe
self.set_amp(val)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 182, in set_amp
self.set_variable_qtgui_label_0(self.amp)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 189, in set_variable_qtgui_label_0
Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_0_label, "setText", Qt.Q_ARG("QString", str(self._variable_qtgui_label_0_formatter(self.variable_qtgui_label_0))))
RuntimeError: wrapped C/C++ object of type QLabel has been deleted
It seems that my issue is related to the QT GUI Label block because when I remove it and add say QT GUI Number sink, this issue doesn't appear.
Has anyone experienced this issue? If so, would anyone be able to steer me in the direction to fix it? I am currently running on Ubuntu 22.04 and am running GNU RADIO 3.10.1.1 which I installed using sudo apt-get install. I've also attached the flowgraph I am talking about.
Thanks,
Jose Ruvalcaba
European GNU Radio Days 2023: March 29-30 in Paris, France
the 2023 edition of the European GNU Radio Days will be held in
France, hosted by the SYRTE laboratory of the Paris Observatory,
March 29 & 30, 2023.
The call for participation is hosted at
https://gnuradio-eu-23.sciencesconf.org
with some preliminary program by organizers.
The call for contribution is open under the keyword "Synchronization"
applied to all layers of the GNU Radio framework, from radiofrequency
signal sampling (MIMO) to symbol or OFDM synchronization, to packet
transfer. Of course GNU Radio is the common framework we wish to share
our experience with during this conference.
If unable to attend, the presentations will be shared after the
conference on the European GNU Radio YouTube channel
https://www.youtube.com/channel/UCFzddPoztcHLuwFWRPJTNrQ
but will *not* be live streamed so please join us to participate to
the discussions or the Q&A sessions.
Best wishes, hoping to see you at the meeting,
for the European GNU Radio Days committee, JM
--
JM Friedt, FEMTO-ST Time & Frequency, 26 rue de l'Epitaphe, 25000
Besancon, France
OFDM Subcarrier Parsing
This should be done after the demodulation. As depicted in the attached figure, it should be after the FFT of the payload and before the OFDM frame equalizer.
The problem that I am facing now, is how to extract these subcarriers?
I found something called Subcarrier Parser in Matlab Simulink (https://www.mathworks.com/help/wireless-hdl/ug/hdlofdmreceiver.html), but I could not find a description about its implementation.
Wesam
Wednesday, November 23, 2022
Help is needed to connect the RFNoc block to the gnuradio blocks.
Hello,
RFNoc block is built, and the FPGA image is flashed without errors. But, when I use the same RFNoc blocks in any designs and try to connect them with the gnuradio blocks, I am getting the connection error. Then, I tried to run example designs from the gr-ettus folder and faced the same problem. The grc image is attached for reference. All the block datatypes in the design (attached below) show a matching color, but still, there is a connection error. So, when I opened the blocks and checked, the datatype for the RFNoc block is "complex32 float and complex16 float," and the datatype for the "Throttle" and "QT GUI Time Sink" blocks is complex. Would that be a problem? If so, how do I correct this? Help is very much appreciated.
Help with understanding message pair to var
Nik
Tuesday, November 22, 2022
Re: QT GUI Label error in v 3.10.1.1
qt6-wayland
xwayland
On debian systems, type
apt list --installed | grep wayland
to see what's installed.
wayland is efficient way to connect to your desktop.
-- Cinaed
Hello,
I've been noticing an issue popping out everytime I stop running my flowgraph and I was wondering if someone had some insight on it. I have a flowgraph where a signal source is connected to a probe signal block. This block is constantly updating values and are being displayed using the QT GUI Label block. However, after running my flowgraph for about 10 minutes I get the following error:
Executing: /usr/bin/python3 -u /home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Exception in thread Thread-1 (_amp_probe):
Traceback (most recent call last):
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 150, in _amp_probe
self.doc.add_next_tick_callback(functools.partial(self.set_amp,val))
File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line 88, in __getattr__
return getattr(self._impl, name)
AttributeError: 'gnuradio.gr.gr_python.top_block_pb' object has no attribute 'doc'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 152, in _amp_probe
self.set_amp(val)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 182, in set_amp
self.set_variable_qtgui_label_0(self.amp)
File "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", line 189, in set_variable_qtgui_label_0
Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_0_label, "setText", Qt.Q_ARG("QString", str(self._variable_qtgui_label_0_formatter(self.variable_qtgui_label_0))))
RuntimeError: wrapped C/C++ object of type QLabel has been deleted
It seems that my issue is related to the QT GUI Label block because when I remove it and add say QT GUI Number sink, this issue doesn't appear.
Has anyone experienced this issue? If so, would anyone be able to steer me in the direction to fix it? I am currently running on Ubuntu 22.04 and am running GNU RADIO 3.10.1.1 which I installed using sudo apt-get install. I've also attached the flowgraph I am talking about.
Thanks,
Jose Ruvalcaba