Tuesday, September 29, 2026

Capture the Flag @ IngenierĂ­a deMuestra

Hi everyone,

Just like every year since 2020, we're organizing a little CTF very much like GRCon's during an exposition event at our University (https://idm.uy/). Since it is completely online, we encourage people from all over to join and play. The only caveat is that it is in Spanish, but many English-speaking people have played it in the past. 

If you're interested, you may read all the details at our webpage https://ctf.idm.uy/ (or directly at https://eva.fing.edu.uy/course/view.php?id=1557&section=1#tabs-tree-start). You may register with a group of up to three people by sending us a mail to ctf@fing.edu.uy.

The deadline to register is Friday of next week, the CTF begins that night and runs for a week.

best
Federico

Monday, September 28, 2026

Re: volunteer opportunity -> IAC2026

Hey GNU-R people,

Following up on this, I'm happy to report that we were able to publish our paper, and will have a team of 3 attending IAC26 in Turkey next week! You can view the Interactive Presentation here.

A massive thank you to my coauthors / contributors from this email list who made it happen. While there's plenty more to do, I'm always truly amazed at what is possible when smart people come together in pursuit of a common goal :).

Ralph

On 5/12/2026 9:10 PM, Ralph Ewig wrote:
Hi Everyone,

I'm heading up OUTLYR Space - a non-profit foundation aiming to be a Global Space Agency. We're working on a space network concept (using GNU Radio), and our 2nd paper was accepted at iac2026.org this year. I'm looking for volunteer help (min 4 hr/week) to complete testing by early October; no pay but you'll be a co-author, and free trip/stay/registration at the conference in Turkey for up to three contributors :). Send me a note if you're interested,  thanks for reading!

Ralph

https://outlyr.space

Tuesday, September 15, 2026

softlora: a pure-Python LoRa PHY decoder + TinyGS SDR ground station

Hi all,

I wanted to share a project I've been working on this summer as part of
Google Summer of Code 2026 with LibreCube: a pure-Python LoRa physical-layer
receiver (softlora) and an SDR-based TinyGS ground station (tinygs).

softlora decodes LoRa packets from IQ recordings or live SDR streams using
only NumPy/SciPy. Synchronization implements the three-stage CFO/STO estimator in [1], and I ported gr-lora_sdr's frame_sync block as an alternative front-end. It's
tested on synthetic AWGN sweeps, over-the-air captures, and real satellite
passes (SF7-12).

Links:
  Project write-up:            https://studhamza.github.io/hamza-folio/projects/LoRa_tinygs/
  softlora (LoRa PHY decoder): https://gitlab.com/librecube/lib/python-softlora
  tinygs (ground station):     https://gitlab.com/librecube/lib/python-tinygs


Happy to answer questions and get feedback. :)

[1] M. Xhonneux, O. Afisiadis, D. Bol, and J. Louveaux, "A Low-Complexity
    LoRa Synchronization Algorithm Robust to Sampling Time Offsets," IEEE
    Internet of Things Journal, 2021. https://arxiv.org/abs/1912.11344

Cheers,
Hamza Sayed

Re: browser use?

Hi Don, sure, since we even embed it on our gnuradio.org website, we're kind of aware :) No, seriously, thanks for bringing it up. Marc, of pysdr.org and iqengine.org fame wrote that *specifically* to make classroom beginner teaching and individual experimentation easier. Best, Marcus On 2026-09-14 6:23 PM, Don Latham wrote: > I assume the group has found https://gnuradioworld.com <https://gnuradioworld.com/> > Any comments? Useful for us beginners?

Monday, September 14, 2026

browser use?

I assume the group has found  https://gnuradioworld.com
Any comments? Useful for us beginners?

Function arg checking

I was checking some code[1], and found some null pointer deref and other precondition issues.
One interesting pattern was when the use happens in a constructor initializer list, but then the actual check is done in the constructor body.

Any opinions on what pattern should be used, here? One way is to simply move the usage below the check. But that prevents the compiler from enforcing e.g. that d_ted is initialized before d_interp, which uses d_ted, is initialized.

Another way is this:
$ git diff
diff --git a/gr-digital/lib/symbol_sync_ff_impl.cc b/gr-digital/lib/symbol_sync_ff_impl.cc
index 82b5a8036..dbc68a4f1 100644
--- a/gr-digital/lib/symbol_sync_ff_impl.cc
+++ b/gr-digital/lib/symbol_sync_ff_impl.cc
@@ -47,6 +47,15 @@ symbol_sync_ff::sptr symbol_sync_ff::make(enum ted_type detector_type,
                                                           taps);
 }
 
+template <typename C, typename F>
+auto check(C c, F f)
+{
+    if (!c()) {
+        throw std::runtime_error("bleh");
+    }
+    return f();
+}
+
 symbol_sync_ff_impl::symbol_sync_ff_impl(enum ted_type detector_type,
                                          const float sps,
                                          const float loop_bw,
@@ -69,7 +78,11 @@ symbol_sync_ff_impl::symbol_sync_ff_impl(enum ted_type detector_type,
               damping_factor,
               ted_gain),
       d_interp(interpolating_resampler_fff::make(
-          interp_type, d_ted->needs_derivative(), n_filters, taps)),
+          interp_type,
+          check([this] { return d_ted != nullptr; },
+                [this] { return d_ted->needs_derivative(); }),
+          n_filters,
+          taps)),
       d_inst_output_period(sps / static_cast<float>(osps)),
       d_inst_clock_period(sps),
       d_avg_clock_period(sps),

But introducing such a pattern is a bigger stylistic change, and seems like it should be "blessed" as a good pattern before spreading.

This also applies to other UB stuff like glfsr_source_b_impl.cc which shift left by a potentially UB-triggering value before it bounds checks it (also it should not allow 64 exactly, and probably instead needs to special case it).

Opinions?

[1] Well, truth be told I'm asking LLM to "find bugs and UB".

--

typedef struct me_s {
 char name[]      = { "Thomas Habets" };
 char email[]     = { "thomas@habets.se" };
 char kernel[]    = { "Linux" };
 char *pgpKey[]   = { "http://www.habets.pp.se/pubkey.txt" };
 char pgp[] = { "9907 8698 8A24 F52F 1C2E  87F6 39A4 9EEA 460A 0169" };
 char coolcmd[]   = { "echo '. ./_&. ./_'>_;. ./_" };
} me_t;

Friday, September 4, 2026

how can I change blocks to run this script for hackrf card

Hello,

I like to change voltage oscillator according to this tread, so that I can run hackrf card, sweep need to be 50-70e6 


Thanks, Robin