Saturday, March 14, 2026

gnuradio-digital build failure, newly appearing

I help with packaging gnuradio in pkgsrc. We have 3.10.12.0 which
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

I would like it and think I would benefit from it.

John

On Wed, Mar 11, 2026, 6:44 PM Marcus Müller <mmueller@gnuradio.org> wrote:

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

On 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

On 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


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

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: 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 

Cyrille MORIN @Notou
Ingénieur SED
Équipe MARACAS


Centre Inria de Lyon

Laboratoire CITI
Campus La Doua - Villeurbanne
6 avenue des Arts
F-69621 Villeurbanne

Le 09/03/2026 à 09:15, Naima Dimbil a écrit :

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