Daniel Estévez
@destevez
Everything space & RF. Amateur radio operator (EA4GPZ / M0HXM). PhD in Mathematics from Univ. Autónoma de Madrid. he/him
New blog post: Tianwen-1 safe mode telemetry. Peter from @amsat-dl.org noticed that a few days ago Tianwen-1 was transmitting in safe mode. Here I analyze the telemetry signal, which is only 32 baud (16 bits per second). destevez.net/2026/08/tian...
This Sentinel-2 infrared image from yesterday shows the extent of the Madrid wildfires, which are now stable and do not show any smoke in satellite imagery. The false colour map shows two shortwave infrared bands (B12 and B11) in red and blue, and near infrared (B8) in green.
New blog post: Tianwen-2 low data rate telemetry. This is a short post where I analyze a recording of low rate (4 kbaud) telemetry done on June 8 during Tianwen-2's arrival to asteroid Kamo'oalewa. destevez.net/2026/06/tian...
Explicit formulas can be obtained by applying a Padé approximant to this degree 6 equation. This leads to designs that have a very small error in the loop bandwidth and have the correct damping. Read more: destevez.net/2026/06/pll-...
New blog post: An update about Tianwen-2 telemetry. This is a quick update about Tianwen-2 telemetry decoding. First, I've figured out the format of the timestamps included in AOS frames. I explain what was confusing me yesterday.
New blog post: Decoding Tianwen-2. I analyze the telemetry decoded from recent @radiotelescoop.bsky.social recordings of Tianwen-2. Compared to Tianwen-1, there is not much in the telemetry. There are not that many fields and most are mainly static. Read more: destevez.net/2026/05/deco...
More fun with the Ryzen AI NPU. I'm working on a more complex algorithm, and I'm seeing memory stalls that make me lose one cycle in each iteration. It turns out that the data memory of compute tiles is organized as 8x 256-bit wide 8 KiB memory banks.
Finally, I show how to use tracing to measure the performance of the NPU workload execution, and check that it matches the understanding we had obtained by analyzing the assembly code.
I implement a C++ kernel and show how it maps to assembly, and how to read the assembly to detect performance losses.
I start by giving an overview of the NPU hardware, explaining how it is organized as an array of compute, memory, and shimNOC tiles connected together mainly by an AXI-S interconnect for wide bandwidth data movement. I also explain the exposed-pipeline VLIW SIMD architecture.
I relate all these decodes to the uplink decodes from my previous post, explaining the UE and network conversations. Read more: destevez.net/2026/04/deco...
I explain how the Type2 common and UE-specific search spaces for the NPDCCH work, how to do blind decoding, and how to decode the NPDSCH transmissions. The SNR in these transmissions is not great, but I'm impressed of how the repetition and FEC often give good decodes.
I start by showing how to process the NPSS and NSSS synchronization signals and the NRS reference signals. I detect 6 cells with different SNRs. Interestingly, one of them is not synchronized to the rest. I show how the NPSS and NSSS are beamed in patterns of 4 transmissions.
New blog post: NB-IoT downlink. This is another post in my series about V16 car warning beacons. Here I explain mostly everything about the LTE NB-IoT downlink. It's perhaps the longest post I've ever written. If you want to know more about NB-IoT this is the place to go.
Yesterday @amsat-dl.org received and decoded again telemetry from Tianwen-1. I have done an updated plot of the orbital parameters with the new state vector telemetry. This shows that there have been no manoeuvres during the 3 months in which we haven't seen any signals.
Following up on yesterday's announcement by @amsat-dl.org about the lack of signals received from Tianwen-1 since 2025-12-23, I have published a short post that contains the orbital state based on telemetry received up to 2025-12-22.
In this post I go over some details of the flight software, including file downlink, logs, and on board scripting. I also find some quaternion data and gyroscope data that are a good match, plus other quaternions that I don't know how to interpret.
Finally, a Wireshark dissector allows analyzing CSP and RDP packets (RDP is the reliable data protocol used in CSP for sequence-controlled delivery). Read more: destevez.net/2026/01/tool...
New blog post: Tooling for CSP. CSP is the cubesat space protocol. It is a network protocol used in cubesat buses, RF communications, and groundstations. Here I showcase some tooling to perform CSP network performance analysis and debugging that I have open sourced.
New blog post: V16 beacon full uplink conversation. A follow up about my decoding of NB-IoT-connected car beacon warning lights (which is a thing starting this year in Spain). This time I have made a longer recording starting before the beacon is powered on.
In this post I analyze a recording of the B20 band NB-IoT uplink of a V16 beacon, showing how to decode the NPUSCH and obtain MAC PDUs that we can inspect in Wireshark.
New blog post: Decoding a V16 beacon. Starting in 2026, the V16 beacon mandatorily replaces the emergency triangles in road vehicles in Spain. This beacon has a strobe light and an NB-IoT connection to the cell network that it uses to send a message containing its GNSS location.
Most of the recordings have a problem regarding a huge receiver frequency drift, as shown here. This limits the sensitivity of the acquisition algorithm. Read more: destevez.net/2025/12/firs...
New blog post: First analysis of the Lunar GNSS Receiver Experiment data. I have developed a high-sensitivity GPS acquisition algorithm in CUDA and ran it on the experiment datasets. 1 to 3 satellites are detected in 60% of the recordings.
The telemetry packets contain many interesting strings with log messages, which appear to be generated by a Linux system running Rocket Lab's MAX flight software. Read more: destevez.net/2025/11/deco...
New blog post: Decoding ESCAPADE. Here I decode a recording of the ESCAPADE spacecraft that I did with an Allen Telescope Array antenna the day after they were launched. The modulation is PCM/PSK/PM with rate=1/2 Turbo code. The telemetry uses CCSDS TM frames and Space Packets.
I have made a new release of the Maia SDR firmware. This is a maintenance release that updates dependencies and includes some USB Ethernet connectivity improvements to Android devices.
New blog post: sigmf-toolkit. I present a new Python package I've made and showcase one of its tools, which adds to a SigMF file annotations for each packet in a PCAP file. This is a good way of doing protocol analysis and debugging across the physical and upper layers. destevez.net/2025/11/sigm...
New blog post: Non-coherent m-FSK BER. Another short post in which I derive the following formula for the symbol error rate of non-coherent m-FSK and validate it using simulations. destevez.net/2025/10/non-...
When setup timing is violated, typically the output delay becomes much larger than the nominal one, increasingly more as the data transition approaches the clock edge. This goes somewhat against the usual idea that setup violations mainly cause metastability. Read more: destevez.net/2025/09/flip...