Daniel Estévez

Everything space & RF. Amateur radio operator (EA4GPZ / M0HXM). PhD in Mathematics from. he/him

Daniel Estévezdestevez
2025-06-13

Finally I spend some time discussing some of the parameters that appear in the SIB1, which can be parsed with Python or in Wireshark.

Read more: destevez.net/2025/06/5g-nr-pds

A screenshot in Wireshark that shows part of the SIB1 message parsed out. The PCAP file also contains the MIB transmission from the PBCH, which happen every 10 ms.
Daniel Estévezdestevez
2025-06-13

I have added support to generate alists for the 5G LDPC codes to my ldpc-toolbox. I use this and a simple sum-product algorithm implementation to decode the PDSCH. I show how the LLRs evolve during the decoding iterations and how all the punctured bits get recovered.

A plot of the LLRs after the first LDPC decoder iteration. Many punctured bits are still not solved and have an LLR of zero.A plot of the LLRs after the second LDPC decoder iteration. Now all the punctured bits are solved and the codeword is correct.
Daniel Estévezdestevez
2025-06-13

New blog post: 5G NR PDSCH. In this post I show how to decode the 5G PDSCH (downlink data) by using the SIB1 from an srsRAN gNB recording as an example. I go into the details of how LDPC and the rest of rate matching and other encoding work.

A waterfall of the IQ recording, which shows annotations marking the PDSCH, and other transmissions such as the PDCCH, the PSS, SSS and PBCH, and the CSI-RS.
Daniel Estévezdestevez
2025-06-05

@windytan when you feed only part of a CW into the FFT you get the Fourier transform of a rectangle, which is a sinc of frequency proportional to the rectangle width. The symmetry that happens in time is best explained by thinking that feeding a CW that fills more than 1/2 of the FFT is equivalent to feeding a CW for the whole FFT duration plus a negative rectangle that occupies the beginning less than 1/2 of the FFT duration.

Daniel Estévez boosted:
SETI Institutesetiinstitute
2025-06-05

Radio interferometry is a technique in radio astronomy where signals from two or more radio telescopes are combined to simulate a much larger telescope, allowing astronomers to achieve higher resolution than a single dish could provide.

Here’s how it works, in simple terms: seti.org/signal-and-image-proc

Daniel Estévezdestevez
2025-05-28

@bert_hubert @m @fragdenstaat it's always SECRET (also to be written in ALL CAPS), or at least some other classification level.

Daniel Estévez boosted:
bert hubert 🇺🇦🇪🇺🇺🇦bert_hubert@eupolicy.social
2025-05-28

#Galileo, the EU's own sovereign GPS, is relied upon by industry, every modern phone and every modern car. Yet earlier this month Galileo gave us an obscurely worded 5 day warning of a *test* that might take down the whole service. They also refused to clarify. Here I write on how during the test the satellites broadcast outdated data, and also urge the EU and EUSPA to take their users seriously. And not do such disruptive tests anymore please: berthub.eu/articles/posts/gali

Daniel Estévez boosted:
Thomas Telkamptelkamp
2025-05-26

Measuring Radio Recombination Lines (RRL) with the Dwingeloo telescope (@radiotelescoop ), in the Omega Nebula (M17/W38).

Daniel Estévezdestevez
2025-05-26

@funkylab without looking, may I guess that the quality of the GNU Radio General matrix chat room is degrading more and more?

Daniel Estévez boosted:
bert hubert 🇺🇦🇪🇺🇺🇦bert_hubert@eupolicy.social
2025-05-15

Yes, hello! If you were following @bert_hubert@fosstodon.org you should have been redirected automatically to following this new account. And if not, if you are still interested in my ramblings, please follow this account manually. Can I ask for retoots so the people that might be interested see this news? Thanks!

Daniel Estévezdestevez
2025-05-14

@Zi7ar21 something else: naif.jpl.nasa.gov/naif/

Regarding RF simulation, there is some open source software (qucs and qucsstudio come to mind), but it doesn't reach the capabilities of commercial software.

Daniel Estévezdestevez
2025-05-10

An advantage of 5G compared to LTE is that the DCI CRC is a CRC-24 instead of a CRC-16, so there are 8 bits which are not scrambled by the RNTI. We can use these 8 bits as a check even if we don't know the RNTI. Finally, I parse the fields of this DCI format 1_0 that contains the SIB1 PDSCH scheduling and show how the values match what we see in the waterfall.

Read more: destevez.net/2025/05/5g-nr-pdc

Daniel Estévezdestevez
2025-05-10

I explain some heuristics to find the appropriate DCI size. In particular, Polar decoding will likely fail if we assume a too small DCI size. By using this property and checking the CRC for a few DCI candidate sizes, we can find the correct size.

A plot of the output LLRs of Polar decoding for a DCI candidate size of 34. Some LLRs are very close to zero, which means that decoding has failed.A plot of the output LLRs of Polar decoding for a DCI candidate size of 35. We can see that all the LLRs are well away from zero, meaning that decoding has succeeded, and the correct DCI size is either this one, or slightly larger.
Daniel Estévezdestevez
2025-05-10

The PDCCH is encoded using Polar coding, in the same way as the PBCH. However, one challenge is that the message size (the DCI size) is not fixed and is unknown in general, specially in a sniffing scenario where we only have access to the downlink signal.

Daniel Estévezdestevez
2025-05-10

I explain how all these parameters define which resource elements are occupied by the PDCCH, and why this PDCCH transmission is formed by two disjoint segments in frequency, due to the interleaved mapping of the CCEs to REG bundles.

A table from an online calculator that shows how CCEs are mapped into REGs by forming REG bundles and applying a permutation.
Daniel Estévezdestevez
2025-05-10

I had already shown how to demodulate the PDCCH and process its DM-RS (demodulation reference signal) in previous posts. I had also decoded the PBCH, which contains the MIB, that has some configuration parameters required to process the PDCCH.

A constellation plot of the two symbols of the PDCCH. It shows a QPSK constellation for the data and a wipe-off pilot signal for the DM-RS.
Daniel Estévezdestevez
2025-05-10

New blog post: 5G NR PDCCH. In this post I show how to decode the Physical Downlink Control Channel, by using as example the PDCCH for the SIB1 in a srsRAN gNB recording. The PDCCH is used to transmit control information such as downlink scheduling and uplink grants.

A waterfall of a 5G downlink signal. We can see the PBCH/SS block on the left, then a PDCCH transmission split into two segments in frequency, a PDSCH transmission immediately afterwards (which is the SIB1), and finally a CSI-RS which is sparse in frequency.
Daniel Estévezdestevez
2025-05-03

New blog post: Time-dependent delay in @gnuradio. I have added a new block to gr-satellites that performs a time-varying delay. This block works similarly to the Doppler correction block: the delay versus time is defined by a text file prepared beforehand. In the post I explain some of the implementation details of this Time-dependent Delay block, and how to use it. Read more: destevez.net/2025/05/time-depe

A screenshot of the GUI of a GNU Radio flowgraph. Several plots that show the behaviour of the Time-dependent Delay block can be seen. These include a plot of the phase versus frequency of the correlation of a delayed AGWN with the original AWGN, a plot of time-domain pulses with tags passing through the delay, and plots of the spectrum of a CW carrier passed through the delay, which gets slightly shifted in frequency due to the delay-rate.
Daniel Estévezdestevez
2025-04-30

Is there anyone using gr-satellites in GNU Radio 3.8 or 3.9? What would be the impact of stopping gr-satellites releases for these GNU Radio versions? I'm considering dropping support for the maint-3.9 and maint-3.8 branches, since these cause more trouble each day.

Specially if you are still using GNU Radio 3.8 or 3.9, let me know your thoughts either here or in the Github discussion github.com/daniestevez/gr-sate

Daniel Estévezdestevez
2025-04-25

Now a reader has found a silly mistake in my code. At some point when calculating the lunar Doppler for Dwingeloo, I used a variable that contained data for Bochum, because I was copypasting code and changing the names of the variables for each station.

After fixing this mistake, the frequency difference is on the order of 1 Hz. This is about 0.7 ppb, so it is within the accuracy that we could expect for the GPSDO at Bochum. So mystery solved!

A plot with the same title as before: Frequency difference between Bochum and Dwingeloo (with Doppler for Mare Crisium subtracted). The curve is now different. It is a noisy ramp that increases from -1.75 Hz to 0.75 Hz.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst