Gr-fosphor : New RTSA-like visualization block for GNURadio using GPU acceleration

Hi,

As some of you know, beginning of this month I presented a new
GNURadio block I wrote that implements a RTSA like spectrum
visualization of the spectrum similar to those found on R&S / Agilent
/ Tek equipement.

I’ve just pushed the latest version of it on git and this includes a
proper integration with either the WX or QT GUI of gnuradio. And I
thought this would be a good occasion to also make the announce on
this mailing list for those who didn’t attend GRC and are not
following the IRC channel.

The home page of the project can be found at

There isn’t much information there, but you’ll find a few screen shot
of what the display looks like which will hopefully convince you to
try it out for yourself. Believe me it’s even better when it moves :slight_smile:

As the title says, the block relies on GPU acceleration. The
computations are pretty heavy since every single input sample will be
processed (as opposed to the current FFT sinks that just do periodic
snaptshots), thereforce GPU acceleration is pretty much a must to
support the very wideband devices like hackrf/bladerf/b200 …

More precisely it uses OpenCL and OpenGL and the data sharing
extension between the two (known as CL/GL interop). That means that to
use it, you’ll need hardware that supports those and the appropriate
drivers. For OSX that shouldn’t be much of an issue if the machine has
a decent GPU. For Linux, you’ll need the binary drivers for either AMD
or NVidia. Intel cards on linux most likely won’t work. Although the
more recent hardware can handle it, Intel decided to limit OpenCL
support to Windows (and possibly OSX, not sure).

It would be very helpful if you could report success / failure so we
can try to list what hardware is out there and which works / which
doesn’t.

For the installation you can grab the sources from git :
git://git.osmocom.org/gr-fosphor
It’s only compatible with Gnuradio 3.7 and I’m not planning to
backport it, it’s about time people update.
You will also needs a few dependencies such as freetype2 and glfw3.
For the latter, make sure to use version 3.x and to build it wit
-DBUILD_SHARED_LIBS=true

A MacPort port and a PyBOMB recipe are also in the works and should
soon be available.

Also, you should make sure to use a very recent version of Gnuradio
since some of the required fixes were just merged today. To take
advantage of gr-fosphor from inside osmocom_fft, you’ll also want to
update your gr-osmosdr source block and use the -F option when
starting osmocom_fft to enable the WX fosphor widget.

Finally, I’d like to say a big thanks to my fellow osmocom members and
the people on IRC who did a lot of testing on various hardware and
platforms to try to make this release work “out of the box” for as
many people as possible.

Cheers,

Sylvain

On Sat, Oct 26, 2013 at 10:23 PM, Sylvain M. [email protected]
wrote:

It would be very helpful if you could report success / failure so we
can try to list what hardware is out there and which works / which
doesn’t.

Hi Sylvain,

I gave it a try this morning but didn’t work on my acer laptop with
NVIDIA GeForce GT 330M
Driver version: 319.32 on 64 bit Xubuntu 13.10

It’s not quite clear to me how to get opencl installed… I installed
a package called nvidia-opencl-dev and opencl-headers but didn’t see
anything else in the package manager.

alc@vega:~$ osmocom_fft -a rtl=0 -s 1500000 -F
linux; GNU C++ version 4.8.1; Boost_105300;
UHD_003.005.004-140-gfb32ed16

gr-osmosdr v0.1.0-35-gc21b09ae (0.1.1git) gnuradio
3.7.2git-123-g0ded5889
built-in source types: file osmosdr fcd rtl rtl_tcp uhd hackrf netsdr
Using device #0 Realtek RTL2838UHIDIR SN: 00000013
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 1500000.014901 Hz
Traceback (most recent call last):
File “/home/alc/sdr/pybombs/runtime/bin/osmocom_fft”, line 512, in

main ()
File “/home/alc/sdr/pybombs/runtime/bin/osmocom_fft”, line 508, in
main
app = stdgui2.stdapp(app_top_block, “osmocom Spectrum Browser”,
nstatus=1)
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 47, in init
wx.App.init (self, redirect=False)
File
“/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py”,
line 7981, in init
self._BootstrapApp()
File
“/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py”,
line 7555, in _BootstrapApp
return core.PyApp__BootstrapApp(*args, **kwargs)
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 51, in OnInit
self._max_noutput_items)
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 73, in init
self.panel = stdpanel (self, self, top_block_maker, max_nouts)
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 96, in init
self.top_block = top_block_maker (frame, self, vbox, sys.argv)
File “/home/alc/sdr/pybombs/runtime/bin/osmocom_fft”, line 178, in
init
from gnuradio import fosphor
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/fosphor/init.py”,
line 45, in
from fosphor_swig import *
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/fosphor/fosphor_swig.py”,
line 26, in
_fosphor_swig = swig_import_helper()
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/fosphor/fosphor_swig.py”,
line 22, in swig_import_helper
_mod = imp.load_module(‘_fosphor_swig’, fp, pathname, description)
ImportError:
/home/alc/sdr/pybombs/runtime/lib/libgnuradio-fosphor-3.7.0git.so.0.0.0:
undefined symbol: clCreateFromGLTexture
alc@vega:~$

You will also needs a few dependencies such as freetype2 and glfw3.
For the latter, make sure to use version 3.x and to build it wit
-DBUILD_SHARED_LIBS=true

I have not installed glfw3 as it appears to be an optional component,
is that true?

Alex

On Sun, Oct 27, 2013 at 10:39 AM, Alexandru C. [email protected]
wrote:

Using device #0 Realtek RTL2838UHIDIR SN: 00000013
wx.App.init (self, redirect=False)
line 73, in init
line 26, in
_fosphor_swig = swig_import_helper()
File
“/home/alc/sdr/pybombs/runtime/lib/python2.7/dist-packages/gnuradio/fosphor/fosphor_swig.py”,
line 22, in swig_import_helper
_mod = imp.load_module(‘_fosphor_swig’, fp, pathname, description)
ImportError:
/home/alc/sdr/pybombs/runtime/lib/libgnuradio-fosphor-3.7.0git.so.0.0.0:
undefined symbol: clCreateFromGLTexture
alc@vega:~$

By the way, osmocom_fft with the standard wxgl sink works - I can even
use the “persistence” mode.

On Sun, Oct 27, 2013 at 10:49 AM, Sylvain M. [email protected]
wrote:

installs some standard headers from Khronos that define the OPENCL_1_2
symbol and so fosphor compiles for a OpenCL 1.2 API …

Edit gr-fosphor/lib/fosphor/cl_platform.h and remove the #define
clCreateFromGLTexture2D clCreateFromGLTexture

Thanks for the info - this workaround resolved my issue. Now it works
and looks great.

I have not installed glfw3 as it appears to be an optional component,
is that true?

Technically yes, it’s now optional for the GR block, you just don’t
get the GLFW version of the block installed.

Does it mean that the glfw version can be used without gr-qtgui or
gr-wxgui?

But without it you also can’t run the benchmark and small test program
to debug issues if it doesn’t work out of the box.

Ok, I’ll try with glfw3 installed. I’m curious about the benchmark too.

Alex

Thanks for the info - this workaround resolved my issue. Now it works
and looks great.

Ok, great :slight_smile:

Does it mean that the glfw version can be used without gr-qtgui or gr-wxgui?

Yes. There is a standalone block that will just create it’s own
separate window for display.

Also, I didn’t mention it but all 3 versions have keyboard control
with the arrow to change the db/div and the reference level. (for the
Qt / Wx version, the widget needs the focus so you might need to click
on it first).

Cheers,

Sylvain

Hi,

ImportError:
/home/alc/sdr/pybombs/runtime/lib/libgnuradio-fosphor-3.7.0git.so.0.0.0:
undefined symbol: clCreateFromGLTexture

Yes, I’ve been made aware of the issue but don’t really know what to
do about it …

Basically Ubuntu installs the OpenCL ICD from NVidia which is OpenCL
1.1 compliant. But instead of using the NVidia supplied headers, it
installs some standard headers from Khronos that define the OPENCL_1_2
symbol and so fosphor compiles for a OpenCL 1.2 API …

Edit gr-fosphor/lib/fosphor/cl_platform.h and remove the #define
clCreateFromGLTexture2D clCreateFromGLTexture

I have not installed glfw3 as it appears to be an optional component,
is that true?

Technically yes, it’s now optional for the GR block, you just don’t
get the GLFW version of the block installed.

But without it you also can’t run the benchmark and small test program
to debug issues if it doesn’t work out of the box.

Cheers,

Sylvain

Very nice. I’ve only just changed to using the gqrx repository instead
of building everything from source, but I couldn’t resist having a go at
getting this working. I’ve managed to get the demo program running, but
I’ve not been able to do anything else yet. Hopefully Alex will be able
to add this to his repo.

I have some scores for you from some pretty modern hardware:

CPU: Intel® Core™ i7-4770K CPU @ 3.50GHz
GeForce GTX 760

100 Frames time: 227558 us
BW estimated: 230.397520 Msps

That’s the best figure I saw. I think that puts me at the top of the
chart :slight_smile:
There’s more output below.

Cheers,

Darren

BW estimated: 227.594064 Msps
100 Frames time: 232501 us
BW estimated: 225.499248 Msps
100 Frames time: 232839 us
BW estimated: 225.171904 Msps
100 Frames time: 229223 us
BW estimated: 228.724000 Msps
100 Frames time: 229405 us
BW estimated: 228.542528 Msps
100 Frames time: 229270 us
BW estimated: 228.677104 Msps
100 Frames time: 230000 us
BW estimated: 227.951312 Msps
100 Frames time: 228716 us
BW estimated: 229.231024 Msps
100 Frames time: 231187 us
BW estimated: 226.780912 Msps
100 Frames time: 230105 us
BW estimated: 227.847280 Msps
100 Frames time: 229035 us
BW estimated: 228.911728 Msps
100 Frames time: 229381 us
BW estimated: 228.566448 Msps
100 Frames time: 234282 us
BW estimated: 223.785008 Msps
100 Frames time: 234854 us
BW estimated: 223.239968 Msps
100 Frames time: 242539 us
BW estimated: 216.166480 Msps
100 Frames time: 270473 us
BW estimated: 193.841168 Msps
100 Frames time: 231250 us
BW estimated: 226.719136 Msps
100 Frames time: 228782 us
BW estimated: 229.164880 Msps
100 Frames time: 229060 us
BW estimated: 228.886752 Msps
100 Frames time: 237378 us
BW estimated: 220.866288 Msps
100 Frames time: 274509 us
BW estimated: 190.991184 Msps
100 Frames time: 237262 us
BW estimated: 220.974272 Msps
100 Frames time: 229115 us
BW estimated: 228.831824 Msps
100 Frames time: 230812 us
BW estimated: 227.149360 Msps
100 Frames time: 229306 us
BW estimated: 228.641200 Msps
100 Frames time: 229414 us
BW estimated: 228.533584 Msps
100 Frames time: 229513 us
BW estimated: 228.435008 Msps
100 Frames time: 233862 us
BW estimated: 224.186896 Msps
100 Frames time: 232496 us
BW estimated: 225.504096 Msps
100 Frames time: 229579 us
BW estimated: 228.369312 Msps
100 Frames time: 228273 us
BW estimated: 229.675872 Msps
100 Frames time: 229214 us
BW estimated: 228.732992 Msps
100 Frames time: 230658 us
BW estimated: 227.301024 Msps
100 Frames time: 230274 us
BW estimated: 227.680064 Msps
100 Frames time: 242634 us
BW estimated: 216.081824 Msps
100 Frames time: 268012 us
BW estimated: 195.621088 Msps
100 Frames time: 231125 us
BW estimated: 226.841760 Msps
100 Frames time: 228356 us
BW estimated: 229.592384 Msps
100 Frames time: 228372 us
BW estimated: 229.576304 Msps
100 Frames time: 229648 us
BW estimated: 228.300704 Msps
100 Frames time: 229693 us
BW estimated: 228.255984 Msps
100 Frames time: 227860 us
BW estimated: 230.092144 Msps
100 Frames time: 228298 us
BW estimated: 229.650720 Msps
100 Frames time: 228683 us
BW estimated: 229.264080 Msps
100 Frames time: 229944 us
BW estimated: 228.006832 Msps
100 Frames time: 228245 us
BW estimated: 229.704048 Msps
100 Frames time: 230125 us
BW estimated: 227.827488 Msps
100 Frames time: 228555 us
BW estimated: 229.392480 Msps
100 Frames time: 228161 us
BW estimated: 229.788608 Msps
100 Frames time: 229833 us
BW estimated: 228.116928 Msps
100 Frames time: 227558 us
BW estimated: 230.397520 Msps
100 Frames time: 228776 us
BW estimated: 229.170896 Msps
100 Frames time: 242487 us
BW estimated: 216.212816 Msps
100 Frames time: 259483 us
BW estimated: 202.050992 Msps
100 Frames time: 236207 us
BW estimated: 221.961232 Msps
100 Frames time: 251341 us
BW estimated: 208.596304 Msps
100 Frames time: 246232 us
BW estimated: 212.924384 Msps
100 Frames time: 254159 us
BW estimated: 206.283456 Msps
100 Frames time: 240016 us
BW estimated: 218.438784 Msps
100 Frames time: 245845 us
BW estimated: 213.259584 Msps
100 Frames time: 258373 us
BW estimated: 202.919040 Msps
100 Frames time: 238460 us
BW estimated: 219.864112 Msps
100 Frames time: 231817 us
BW estimated: 226.164608 Msps
100 Frames time: 229923 us
BW estimated: 228.027648 Msps
100 Frames time: 229264 us
BW estimated: 228.683104 Msps
100 Frames time: 231963 us
BW estimated: 226.022272 Msps
100 Frames time: 229228 us
BW estimated: 228.719008 Msps
100 Frames time: 228258 us
BW estimated: 229.690960 Msps
100 Frames time: 229043 us
BW estimated: 228.903744 Msps
100 Frames time: 229686 us
BW estimated: 228.262928 Msps
100 Frames time: 230051 us
BW estimated: 227.900768 Msps
100 Frames time: 231663 us
BW estimated: 226.314960 Msps
100 Frames time: 230079 us
BW estimated: 227.873024 Msps
100 Frames time: 229936 us
BW estimated: 228.014736 Msps
100 Frames time: 231120 us
BW estimated: 226.846672 Msps
100 Frames time: 229336 us
BW estimated: 228.611280 Msps
100 Frames time: 229634 us
BW estimated: 228.314608 Msps
100 Frames time: 230096 us
BW estimated: 227.856208 Msps
100 Frames time: 232240 us
BW estimated: 225.752672 Msps

Hi Darren,

I’ve managed to get the demo program running, but
I’ve not been able to do anything else yet.

Mmm, really ? What issue did you have ? Did it build at all ?

100 Frames time: 227558 us
BW estimated: 230.397520 Msps

That’s the best figure I saw. I think that puts me at the top of the chart
:slight_smile:

Yes :slight_smile:

At this point the time is mostly dominated by the data copy from
memory to device and faster GPU don’t help much.

Cheers,

Sylvain

Hi Alex,

The benchmark utility source is in gr-fosphor/lib/fosphor

I had to run make manually, but in order to get it to build I had to
bodge it. The changes I made are in the diff below.

=======================
diff --git a/lib/fosphor/Makefile b/lib/fosphor/Makefile
index a1ea187…3500d64 100644
— a/lib/fosphor/Makefile
+++ b/lib/fosphor/Makefile
@@ -1,6 +1,7 @@
UNAME=$(shell uname)
CC=gcc
-CFLAGS=-Wall -Werror -O2 pkg-config freetype2 glfw3 --cflags -g
+#CFLAGS=-Wall -Werror -O2 pkg-config freetype2 glfw3 --cflags -g
+CFLAGS=-Wall -O2 pkg-config freetype2 glfw3 --cflags -g
LDLIBS=pkg-config freetype2 glfw3 --libs -lm
ifneq ($(AMDAPPSDKROOT), )
CFLAGS+=-I$(AMDAPPSDKROOT)/include
diff --git a/lib/fosphor/cl_platform.h b/lib/fosphor/cl_platform.h
index cf3376d…cd2dc29 100644
— a/lib/fosphor/cl_platform.h
+++ b/lib/fosphor/cl_platform.h
@@ -39,7 +39,7 @@
#endif

#ifdef CL_VERSION_1_2
-# define clCreateFromGLTexture2D clCreateFromGLTexture
+// DML Hack # define clCreateFromGLTexture2D clCreateFromGLTexture
#endif

#ifndef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV

=========================

I then ran make in gr-fosphor/lib/fosphor. Then I recorded some stuff
with grc and then invoked the benchamrk utility:

darren@betty:~/src/gr-fosphor/lib/fosphor$ ./main
~/grdata2013.10.27.12.10.20.dat

Hope that helps.

Darren

On Sun, Oct 27, 2013 at 1:01 PM, Darren L. [email protected]
wrote:

100 Frames time: 227558 us
BW estimated: 230.397520 Msps

How do you run the benchmark or test? I have now rebuilt with glfw
support but I can’t find any programs.

Alex

Hi Darren,

I can’t get osmocom_fft to run, due to a problem inporting fosphor. It runs
OK without the -F argument. Not sure what is wrong yet. Everything seemed
to build and install OK. Please see the output below. Also, should there be
any new blocks in grc?

You need to install in the same prefix as gnuradio itself is installed
for it to work.

So if the PPA install GR in /usr you’ll need to use
-DCMAKE_INSTALL_PREFIX=/usr on the cmake line

Cheers,

Sylvain

Hi Sylvain,

I can’t get osmocom_fft to run, due to a problem inporting fosphor. It
runs OK without the -F argument. Not sure what is wrong yet.
Everything seemed to build and install OK. Please see the output below.
Also, should there be any new blocks in grc?

Cheers,

Darren

darren@betty:~$ osmocom_fft -F -a fcd=1 -f 7.1M
linux; GNU C++ version 4.8.1; Boost_105300; UHD_003.005.004-0-unknown

gr-osmosdr v0.1.x-xxx-xunknown (0.1.1git) gnuradio 3.7.1
built-in source types: file osmosdr fcd rtl rtl_tcp uhd hackrf bladerf
netsdr
Using FUNcube Dongle V2.0 (hw:3)
Opened: hw:3
Using Volk machine: sse4_2_64_orc
Dongle sucessfully initialized
Result of Action :+++++
FCDAPP 20.03
Lna gain enabled
Mixer gain enabled
If gain set to: 15
If gain set to: 15
Traceback (most recent call last):
File “/usr/bin/osmocom_fft”, line 512, in
main ()
File “/usr/bin/osmocom_fft”, line 508, in main
app = stdgui2.stdapp(app_top_block, “osmocom Spectrum Browser”,
nstatus=1)
File “/usr/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 38, in init
wx.App.init (self, redirect=False)
File
“/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py”, line
7981, in init
self._BootstrapApp()
File
“/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py”, line
7555, in _BootstrapApp
return core.PyApp__BootstrapApp(*args, **kwargs)
File “/usr/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 42, in OnInit
self._max_noutput_items)
File “/usr/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 64, in init
self.panel = stdpanel (self, self, top_block_maker, max_nouts)
File “/usr/lib/python2.7/dist-packages/gnuradio/wxgui/stdgui2.py”,
line 86, in init
self.top_block = top_block_maker (frame, self, vbox, sys.argv)
File “/usr/bin/osmocom_fft”, line 178, in init
from gnuradio import fosphor
ImportError: cannot import name fosphor

Good thinking. Next hurdle is an error:


darren@betty:~$ osmocom_fft -F -a fcd=1 -f 7.1M
linux; GNU C++ version 4.8.1; Boost_105300; UHD_003.005.004-0-unknown

gr-osmosdr v0.1.x-xxx-xunknown (0.1.1git) gnuradio 3.7.1
built-in source types: file osmosdr fcd rtl rtl_tcp uhd hackrf bladerf
netsdr
Using FUNcube Dongle V2.0 (hw:3)
Opened: hw:3
Using Volk machine: sse4_2_64_orc
Dongle sucessfully initialized
Result of Action :+++++
FCDAPP 20.03
Lna gain enabled
Mixer gain enabled
If gain set to: 15
If gain set to: 15
Set Frequency to: 7.1e+06 Hz, corrected to: 7100000 Hz
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has
not been called
[xcb] Aborting, sorry about that.
python2: …/…/src/xcb_io.c:179: dequeue_pending_request: Assertion
`!xcb_xlib_unknown_req_in_deq’ failed.
Aborted (core dumped)

Cheers,

Darren

Hi,

Set Frequency to: 7.1e+06 Hz, corrected to: 7100000 Hz
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not
been called
[xcb] Aborting, sorry about that.
python2: …/…/src/xcb_io.c:179: dequeue_pending_request: Assertion
`!xcb_xlib_unknown_req_in_deq’ failed.
Aborted (core dumped)

Your GNURadio is too old.

At the very least you need those patches:
http://gnuradio.org/redmine/issues/596
And preferrably those as well : http://gnuradio.org/redmine/issues/601

Note that they’re only changin python files and text template files so
you can “monkey patch” manually your installation, no need to
recompile everything.

Cheers,

Sylvain

Good call. I applied the 4 patches and now I can run osmocom_fft with
the -F option succesfully.

$ osmocom_fft -F -a “fcd=1”
linux; GNU C++ version 4.8.1; Boost_105300; UHD_003.005.004-0-unknown

gr-osmosdr v0.1.x-xxx-xunknown (0.1.1git) gnuradio 3.7.1
built-in source types: file osmosdr fcd rtl rtl_tcp uhd hackrf bladerf
netsdr
Using FUNcube Dongle V2.0 (hw:3)
Opened: hw:3
Using Volk machine: sse4_2_64_orc
Dongle sucessfully initialized
Result of Action :+++++
FCDAPP 20.03
Lna gain enabled
Mixer gain enabled
If gain set to: 15
If gain set to: 15
[+] Selected device: GeForce GTX 760

However, it seems to be quite laggy, with ‘chunks’ of ‘water’ ‘falling’
at about 1 second intervals and not flowing smoothly.

Looks nice though :slight_smile:

Cheers,

Darren

Hi,

However, it seems to be quite laggy, with ‘chunks’ of ‘water’ ‘falling’ at
about 1 second intervals and not flowing smoothly.

Yes, the FCD will not quite provide enough data for it … It’s more
aimed at very wideband SDR :stuck_out_tongue:

It currently processes data in chunks of 128 * 1024 which for the FCD
is pretty big.

In lib/base_sink_c_impl.cc , look for "1281024", there should be 4
matches, and replace them all by 16
1024 (you can’t process less than
that).
It should improve the frame rate for very low sample rate.

Cheers,

Sylvain

Hi,

Can we control any options on the sink? For example frequency scale,
waterfall rate, etc. A callback would be nice too. I’d like to use the
fosphor sink in my gr-kx3 script that I use to control my HF transceiver.

For the moment not much. You have some basic key control of the power
scale with the keys.

But that’s the next item in the TODO list :

  • Proper frequency scale with set_center_freq / set_sample_rate
  • Click to tune call back
  • Cursors

Waterfall rate is probably going to be later. There is currently a 1:1
ration between each FFT computed and each line of the waterfall
texture.

Since the whole idea being fosphor is to never just “drop” data, to
slow down the waterfall, multiple FFT results must be “aggregated”
with either min/max/avg functions and that’s a bit more tricky to
implement.

Cheers,

Sylvain

On 27/10/13 17:46, Sylvain M. wrote:

Since the whole idea being fosphor is to never just “drop” data, to
slow down the waterfall, multiple FFT results must be “aggregated”
with either min/max/avg functions and that’s a bit more tricky to
implement. Cheers, Sylvain

Actually, with the chunk size hack, the waterfall is just about OK at
192kHz sample rate, but it is still a little jerky. Could we have a
buffering option to buffer the waterfall for some time before scrolling?

I’d like to be able to use this with my KX-3 perhaps as slowly as 48kHz
:slight_smile:

Cheers,

Darren

On Sun, Oct 27, 2013 at 8:45 PM, Darren L. [email protected]
wrote:

sample rate, but it is still a little jerky. Could we have a buffering
option to buffer the waterfall for some time before scrolling?

I’d like to be able to use this with my KX-3 perhaps as slowly as 48kHz :slight_smile:

Daren,

Do what exactly?
The purpose with gr-fosphor is to visualize more data that what is
possible with snapshot-type FFT. This ensures that no data is lost
between to screen updates. But for such low bandwidth you can just
plot everything without loosing any information. You could do some
history buffering and averaging to get the look and feel of gr-fosphor
but it will not give you the same real time effect. It will be the
plain old “FFT averaging” concept that we know and you don’t even
need a GPU to do that.

Alex

Yep, I concur. It is blazingly fast at rendering with the HackRF :slight_smile:

Can we control any options on the sink? For example frequency scale,
waterfall rate, etc. A callback would be nice too. I’d like to use the
fosphor sink in my gr-kx3 script that I use to control my HF
transceiver.

This is very cool. Thanks.

Darren