GNU Radio, One Step at a Time
Read the mailing list of the GNU project right here! The information here is regarding the GNU radio project for USRP radios.
Saturday, March 14, 2026
gnuradio-digital build failure, newly appearing
seems to be the latest, even though it's from February 2025.
Sometime after December 2025, the gnuradio-digital package started
having build errors - except perhaps on aarch64.
The problem is a compiler objection to casting pointers:
cannot convert from pointer to base class 'gr::basic_block' to pointer to derived class 'gr::digital::ofdm_carrier_allocator_cvc' via virtual base 'gr::tagged_stream_block'
I have pybind11 3.0.2 installed. After downgrading to 3.0.1, it builds
ok. (I am not running it; this is just building.)
I wonder:
- is 3.10.12.0 really the latest release?
- might this be fixed already?
- is anyone else running into this?
=> Bootstrap dependency digest>=20211023: found digest-20220214
===> Checking for vulnerabilities in gnuradio-digital-3.10.12.0nb9
===> Building for gnuradio-digital-3.10.12.0nb9
[1/2] Building CXX object gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o
FAILED: [code=1] gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o
/tmp/work/ham/gnuradio-digital/work/.cwrapper/bin/c++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_CHRONO_NO_LIB -DBOOST_CONTAINER_DYN_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_PROGRAM_OPTIONS_NO_LIB -DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_THREAD_NO_LIB -DBOOST_UNIT_TEST_FRAMEWORK_DYN_LINK -DBOOST_UNIT_TEST_FRAMEWORK_NO_LIB -DHAVE_BUILTIN_PARITYL -Ddigital_python_EXPORTS -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/cmake-pkgsrc-build/gr-digital/python/digital/bindings -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/../../../lib -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/../../../include -I/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/lib/../include -isystem /usr/pkg/lib/python3.13/site-packages/pybind11/include -isystem /usr/pkg/include/python3.13 -isystem /tmp/work/ham/gnuradio-digital/work/.buildlink/include -isystem /tmp/work/ham/gnuradio-digital/work/.buildlink/include/python3.13 -isystem /usr/pkg/lib/python3.13/site-packages/numpy/_core/include -O2 -pthread -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/portaudio2 -I/usr/pkg/include/cppunit -DSPDLOG_FMT_EXTERNAL -I/usr/pkg/include/python3.13 -I/usr/X11R7/include -I/usr/pkg/include/glib-2.0 -I/usr/pkg/include/gio-unix-2.0 -I/usr/pkg/lib/glib-2.0/include -Dz_off_t=long -I/usr/pkg/include/freetype2 -I/usr/pkg/include/harfbuzz -I/usr/X11R7/include/libdrm -pthread -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized -Wignored-qualifiers -Wcast-qual -fcx-limited-range -Wno-unused-command-line-argument -DNDEBUG -std=c++17 -fPIC -fvisibility=hidden -Wno-unused-variable -flto=auto -fno-fat-lto-objects -MD -MT gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o -MF gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o.d -o gr-digital/python/digital/bindings/CMakeFiles/digital_python.dir/ofdm_serializer_vcc_python.cc.o -c /tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/ofdm_serializer_vcc_python.cc
In file included from /usr/include/g++/memory:84,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/common.h:225,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/attr.h:13,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/class.h:12,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:12,
from /usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/complex.h:12,
from /tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/ofdm_serializer_vcc_python.cc:20:
/usr/include/g++/bits/shared_ptr.h: In instantiation of 'std::shared_ptr<_Tp> std::static_pointer_cast(const std::shared_ptr<_Tp>&) [with _Tp = gr::digital::ofdm_carrier_allocator_cvc; _Up = gr::basic_block]':
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/holder_caster_foreign_helpers.h:40:57: required from 'static decltype ((value->shared_from_this(), bool())) pybind11::detail::holder_caster_foreign_helpers::set_via_shared_from_this(type*, std::shared_ptr<_Tp>*) [with type = gr::digital::ofdm_carrier_allocator_cvc; decltype ((value->shared_from_this(), bool())) = bool]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/holder_caster_foreign_helpers.h:60:37: required from 'static bool pybind11::detail::holder_caster_foreign_helpers::set_foreign_holder(pybind11::handle, type*, std::shared_ptr<_Tp>*) [with type = gr::digital::ofdm_carrier_allocator_cvc]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/cast.h:1051:65: required from 'bool pybind11::detail::copyable_holder_caster<type, std::shared_ptr<_Tp>, typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type>::set_foreign_holder(pybind11::handle) [with type = gr::digital::ofdm_carrier_allocator_cvc; typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type = void]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/type_caster_base.h:1207:82: required from 'bool pybind11::detail::type_caster_generic::load_impl(pybind11::handle, bool) [with ThisT = pybind11::detail::copyable_holder_caster<gr::digital::ofdm_carrier_allocator_cvc, std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>, void>]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/cast.h:980:90: required from 'bool pybind11::detail::copyable_holder_caster<type, std::shared_ptr<_Tp>, typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type>::load(pybind11::handle, bool) [with type = gr::digital::ofdm_carrier_allocator_cvc; typename std::enable_if<pybind11::detail::copyable_holder_caster_shared_ptr_with_smart_holder_support_enabled<type>::value, void>::type = void]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/cast.h:2171:51: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:454:42: required from 'void pybind11::cpp_function::initialize(Func&&, Return (*)(Args ...), const Extra& ...) [with Func = pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute<pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >, {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}>::<lambda(pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool)>; Return = void; Args = {pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling, pybind11::detail::is_new_style_constructor, pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:324:19: required from 'pybind11::cpp_function::cpp_function(Func&&, const Extra& ...) [with Func = pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute<pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >, {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}>::<lambda(pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool)>; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling, pybind11::detail::is_new_style_constructor, pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; <template-parameter-1-3> = void]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:2249:22: required from 'pybind11::class_<type_, options>& pybind11::class_<type_, options>::def(const char*, Func&&, const Extra& ...) [with Func = pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute<pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >, {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}>::<lambda(pybind11::detail::value_and_holder&, const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool)>; Extra = {pybind11::detail::is_new_style_constructor, pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; type_ = gr::digital::ofdm_serializer_vcc; options = {gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc>}]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/detail/init.h:388:15: required from 'void pybind11::detail::initimpl::factory<Func, pybind11::detail::void_type (*)(), Return(Args ...)>::execute(Class&, const Extra& ...) && [with Class = pybind11::class_<gr::digital::ofdm_serializer_vcc, gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc> >; Extra = {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; Func = std::shared_ptr<gr::digital::ofdm_serializer_vcc> (*)(const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char>&, int, const std::__cxx11::basic_string<char>&, bool); Return = std::shared_ptr<gr::digital::ofdm_serializer_vcc>; Args = {const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool}]'
/usr/pkg/lib/python3.13/site-packages/pybind11/include/pybind11/pybind11.h:2300:32: required from 'pybind11::class_<type_, options>& pybind11::class_<type_, options>::def(pybind11::detail::initimpl::factory<Args ...>&&, const Extra& ...) [with Args = {std::shared_ptr<gr::digital::ofdm_serializer_vcc> (*)(const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool), pybind11::detail::void_type (*)(), std::shared_ptr<gr::digital::ofdm_serializer_vcc>(const std::shared_ptr<gr::digital::ofdm_carrier_allocator_cvc>&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool), pybind11::detail::void_type()}; Extra = {pybind11::arg, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, pybind11::arg_v, const char*}; type_ = gr::digital::ofdm_serializer_vcc; options = {gr::tagged_stream_block, std::shared_ptr<gr::digital::ofdm_serializer_vcc>}]'
/tmp/work/ham/gnuradio-digital/work/gnuradio-3.10.12.0/gr-digital/python/digital/bindings/ofdm_serializer_vcc_python.cc:69:45: required from here
/usr/include/g++/bits/shared_ptr.h:584:23: error: cannot convert from pointer to base class 'gr::basic_block' to pointer to derived class 'gr::digital::ofdm_carrier_allocator_cvc' via virtual base 'gr::tagged_stream_block'
584 | return _Sp(__r, static_cast<typename _Sp::element_type*>(__r.get()));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: note: unrecognized command-line option '-Wno-unused-command-line-argument' may have been intended to silence earlier diagnostics
ninja: build stopped: subcommand failed.
*** Error code 1
Stop.
make[1]: stopped in /n0/gdt/pkgsrc-current/pkgsrc/ham/gnuradio-digital
*** Error code 1
Stop.
make: stopped in /usr/pkgsrc/ham/gnuradio-digital
Thursday, March 12, 2026
GSoC 2026 Intro: SDR Developer interested in the 5G Cell Scanner Project
Hi everyone,
I'm Mujtaba Ahmed, a final-year Electrical Engineering student specializing in Embedded Systems. I am planning to apply for GSoC 2026 and am highly interested in contributing to the 5G Cell Scanner project.
I'm actively working in this exact domain right now. I am currently building a distributed system to detect and localize radio transmitters using TDOA algorithms, working directly with HackRF One and ADALM-PLUTO SDRs. Because I spend my time in Ubuntu bridging physical radio hardware with software-level signal processing, I am very comfortable with the exact challenges of passively detecting and capturing RF signals, and I want to bring that hands-on experience to GNU Radio.
I am setting up my development environment this weekend to compile GNU Radio from source. Are there any specific "good first issues," existing flowgraphs, or 5G protocol parsers the mentors recommend I tackle to demonstrate my skills before the formal application period opens?
Looking forward to learning from you all!
Wednesday, March 11, 2026
Re: Releasing the next 3.10.x soon – complain, please
Hi Wael,
because I'd like to be careful about changing buffer infra on the released branch, I can do that, but would only do it if someone definitely benefits from it more than it just being included in a GNU Radio 3.11.0.0 some ~1 month in the future.
Would backporting this specifically help you / cascade? Then, it's totally doable!
Best,
MarcusOn 2026-03-10 11:49 PM, Wael Farah wrote:
Hey Marcus,
That's awesome!
Might there be a chance to include the subclassing buffer_double_mapped and the gr::buffer::on_transfer_type to the release?They're not technically API-breaking, but I understand and respect if you have other criteria you usually follow.
Best,Wael
On Mar 10, 2026, at 2:57 AM, Marcus Müller <mmueller@gnuradio.org> wrote:
Dear Community,
this weekend, I finally have gotten around to backport all (but one) of the changes made to `main` to `maint-3.10`, as far as I've been keeping track of them [1], or decide that they can't and/or shan't be backported.
I might have missed something! If there's some feature that doesn't need an API-breaking change to be backported that I'm missing which you'd really like to see in 3.10.13.0, let me know. I'm aiming for a release candidate coming weekend.
Best regards,
Marcus
[1] https://github.com/orgs/gnuradio/projects/12/views/1
Re: Releasing the next 3.10.x soon – complain, please
Hi Wael,
because I'd like to be careful about changing buffer infra on the released branch, I can do that, but would only do it if someone definitely benefits from it more than it just being included in a GNU Radio 3.11.0.0 some ~1 month in the future.
Would backporting this specifically help you / cascade? Then, it's totally doable!
Best,
Marcus
Hey Marcus,
That's awesome!
Might there be a chance to include the subclassing buffer_double_mapped and the gr::buffer::on_transfer_type to the release?They're not technically API-breaking, but I understand and respect if you have other criteria you usually follow.
Best,Wael
On Mar 10, 2026, at 2:57 AM, Marcus Müller <mmueller@gnuradio.org> wrote:
Dear Community,
this weekend, I finally have gotten around to backport all (but one) of the changes made to `main` to `maint-3.10`, as far as I've been keeping track of them [1], or decide that they can't and/or shan't be backported.
I might have missed something! If there's some feature that doesn't need an API-breaking change to be backported that I'm missing which you'd really like to see in 3.10.13.0, let me know. I'm aiming for a release candidate coming weekend.
Best regards,
Marcus
[1] https://github.com/orgs/gnuradio/projects/12/views/1
interp_resampler_pfb crashes with huge samples
Hi all!
Here you can see that when the polyphase interpolator computes an index out of bounds it throws a runtime error instead of just truncating or wrapping it around.
We've encountered a situation in which a normal stream coming from a SDR has a few huge samples (~ 1e28) and this block crashes the entire flowgraph.
From my understanding of polyphase filters (thanks fharris&trondeau!), wouldn't it be better to just wrap it?
Thanks!
Francisco.
Tuesday, March 10, 2026
Re: Releasing the next 3.10.x soon – complain, please
On Mar 10, 2026, at 2:57 AM, Marcus Müller <mmueller@gnuradio.org> wrote:Dear Community,
this weekend, I finally have gotten around to backport all (but one) of the changes made to `main` to `maint-3.10`, as far as I've been keeping track of them [1], or decide that they can't and/or shan't be backported.
I might have missed something! If there's some feature that doesn't need an API-breaking change to be backported that I'm missing which you'd really like to see in 3.10.13.0, let me know. I'm aiming for a release candidate coming weekend.
Best regards,
Marcus
[1] https://github.com/orgs/gnuradio/projects/12/views/1
Re: GSoC (2026) - Hardware in the loop CI
Hello Naima,
Welcome!
You can find information on the CorteXlab platform in its wiki: https://www.cortexlab.fr, feel free to look into that, or even create an account.
If you haven't already, I would advise that you go through the tutorials on the GNU Radio wiki. Both because they are a good resource to get started with GNU Radio in general, but also because they are, with some of the example flowgraphs in the main repo, examples of true communication chains involving hardware, and they might be an interesting starting point for testing.
Best
Équipe MARACAS
Laboratoire CITI
Campus La Doua - Villeurbanne
6 avenue des Arts
F-69621 Villeurbanne
Subject: Introduction and Interest in GSoC Hardware-in-the-Loop CI Project
Hello GNU Radio community,
My name is Naima Hassan, and I am a Telecommunications Engineer currently doing a PhD in space system engineering. My focus is on digital communications and signal processing. My research interests include wireless communication systems, software-defined radio (SDR), and practical DSP implementations for RF systems.
I recently started exploring the Google Summer of Code projects proposed by the GNU Radio community, and I am particularly interested in the Hardware-in-the-Loop CI project. The idea of introducing automated testing with real radio hardware is very exciting to me, especially since real-world wireless systems often behave quite differently from purely simulated environments.
From my background in DSP and telecommunications, I have experience with communication system designand signal analysis. I am very interested in contributing to the development of hardware-based testing scenarios, defining appropriate performance metrics (such as BER or detection accuracy), and integrating these experiments into a CI workflow.
I would love to learn more about the expectations for this project and how I could best prepare a strong proposal. If there are existing resources, repositories, or prior work related to hardware testing or the CorteXlab platform that I should study, I would greatly appreciate any pointers.
Thank you for maintaining such an impressive open-source project. I look forward to learning from the community and hopefully contributing during GSoC.
Best regards,
Naima Hassan