Cofounder/CTO at UaiLabs // Telecom Engineer Grad. // C++ / Python / FPGA/ GnuRadio // Microwave / SDR / Ham radio 🇧🇷

Brasil
Joined March 2016
13 cm DATV with just an Android phone and two cheap ESP32 boards, no PC 📡📺 ATV RX/TX is an open-source app: 📥 RX: an ESP32-S3 on USB OTG samples the 2.4 GHz band; leandvb on the phone demodulates DVB-S2 (QPSK/8PSK, 40–500 kS/s) and shows the picture, spectrum, constellation and MER 📤 TX: the ESP32-C3's own Wi-Fi radio is the transmitter. The phone encodes the camera or a test card to H.264 and DVB-S2 itself and streams the symbols to the C3 📌 Stand-alone beacon: record a loop with your callsign on the phone and store it in the C3; it then transmits by itself after every power-up 🔧 Firmware for both boards is flashed straight from the app Based on SP8ESA's ESP32-DATV and TA7W's ESP32-DATV-SA. Thanks! APK and guide: github.com/ok1cdj/ESP32-ATV For licensed radio amateurs only. @BATCOnline @hackaday @EspressifSystem #hamradio #DATV #ESP32 #DVBS2 #SDR
5
32
1
159
6,942
Paulo Dutra - PU4THZ retweeted
The answer is an SDR that you already own! Let me introduce you to the BirriaSDR! A dual-band 40 Msps SDR (2.4 GHz/5 GHz) based on a mass-produced USB 3.0 Wi-Fi dongle that can export RAW I/Q for under 30 USD. Apologies, I finished the birria long ago... but only got around to writing this now. The idea was to use a chip as cheap as the RTL-SDR (<50 USD), with transport already built in (USB 3.0). Not something that costs four times as much or needs to be paired with an FPGA to export any real amount of data. Now, think for a bit: what kind of mass-produced device fits the bill? Yes, every single USB Wi-Fi dongle!!! It has been clear for a while that a lot of models have internal firmware that can be modified to export RAW I/Q data via their DMA engines. Most units can even run ASM payloads to modify the data. Historically, it would be a pain in the ass to reverse engineer the internal mechanisms of every single chipset in each Wi-Fi dongle (there are many!). But with AI, I can do that from my phone while eating birria at my local restaurant. Before leaving, I connected my MT7921A Wi-Fi dongle to my Raspberry Pi 5 and gave GPT-6 Astra the goal of getting it to export RAW I/Q over USB. Don’t be fooled: this wasn’t a “turn this into an SDR, make no mistakes” prompt. I had to give it leads on how to do this properly. By the way, this is the same chipset that the notorious ALFA AWUS036AXML has. At first, it created a burst exporter that could only record a short snapshot of RAW I/Q. This is an ancient feature that has been known for a long time and is even present in DD-WRT, but it was useless for our purposes. Then, after a couple of hours, it improved it to use the internal packetizing engine to create a stream of four consecutive complex samples per 16-byte block, with I and Q each occupying a 16-bit slot and retaining 14-bit precision. These blocks can be moved out of the device via the DMA engine. The RF front end can tune to both the 2.4 GHz and 5 GHz bands. The tested 40 MHz, 80 MHz, and 160 MHz sample rates work, but with a very prominent filter shape, as expected. The end result was a very capable SDR with dual-band 2.4 GHz/5 GHz reception, 14-bit I/Q resolution, and a nominal complex sample rate of 40 MSps over USB 3.0. Higher sample rates and wider bandwidths are still experimental. That said, I think this is a good proof of concept that needs to be further refined. Using a Wi-Fi dongle as an SDR solves the data interconnect problem and makes it easy to connect an external antenna with RP-SMA. I expect it won't take long for manufacturers to start mass-producing devices with the architecture I'm proposing, with a proper USB port, a tunable RF front end, and heat dissipation. I also want to make the point that you don't need to write a whole new SDR client every time you reverse engineer a Wi-Fi device to be used as an SDR. All you need is a small library that exports the I/Q. To prove this, the whole driver is a single Python script inside a CyberEther flowgraph file. Want to try it? First, buy an MT7921-based Wi-Fi dongle. They’re widely available and cost less than $30. Then, install CyberEther and download the flowgraph from the repository below. Connect the dongle and open the flowgraph in CyberEther to start streaming I/Q data, as shown in the video below. This will be available as a built-in block in CyberEther after some refinement. Download CyberEther: cyberether.org/ BirriaSDR Repo: github.com/luigifcruz/Birria… P.S. This is the same chipset many laptops come with!
Fellas, the answer to cheap SDRs is not in crippled chips that cannot export any real amount of data, or one that also costs hundreds of dollars.
25
63
4
421
34,592
Paulo Dutra - PU4THZ retweeted
The ESP32 ruining as an 80 Maps IQ radio was great to see, but this is amazing.
Turned a WiFi 7 router into a 320Msps SDR. Custom firmware on its MediaTek MT7996 streams raw 14-bit IQ from 2.4/5/6GHz over 10GbE without dropping samples. It's not a snapshot mode, the waterfall is just one thing reading the stream. github.com/h0m3us3r/w1700k-s…
8
19
290
14,893
Paulo Dutra - PU4THZ retweeted
Guess who got 64-QAM OFDM TX (and with that basically any other arbitrary modulation) working? I'm dying to get my hands on an ESP32-S31 because of the larger DDR PSRAM and the USB high-speed interface... GPU acceleration sure is a beauty...
What If Your ESP32 Could Become an SDR? ESP-SDR turns supported ESP32 boards into a small software-defined radio receiver. It gives you access to raw IQ samples from the Wi-Fi radio, letting you see the 2.4 GHz spectrum and waterfall in a browser. You can explore things like RF signals, spectrum analysis, IQ data and wireless interference without expensive SDR hardware. The ESP32-C5 is even interesting here because it can work in the 5 GHz band. A tiny development board suddenly becomes a great tool for learning RF and signal processing. Would you try SDR on an ESP32?
6
15
2
161
8,277
Paulo Dutra - PU4THZ retweeted
Here we go! 5 hours before the kickstart #Eleições2026 #brazil #elections
2
1
3
287
Paulo Dutra - PU4THZ retweeted
we out here turbopumping
13
22
2
380
15,857
Paulo Dutra - PU4THZ retweeted
Closed “M2SDR”: Name reused, USB design packed to PCIe, FPGA mystery, vendor gone, AI doing driver forensics 🕵️ Open LiteX M2SDR: Gateware, driver, support, contributions welcome 🔧 Same form factor. One of these is a project. The other is a side quest 😅
Part 3C of my Chinese AD9361 SDR testing. This one continues my work on the M.2 form factor “M2SDR” sold by Hamgeek. The vendor was at first helpful in providing drivers for it but once I complained that it was advertised to work at 56MSPS but couldn’t sustain 20MSPS they said “No further development is planned” and stopped responding. I tried everything I could think of and pointed every LLM that I had at it without success. Until Opus 5.5. It setup a comprehensive test regime that eventually led to the closed source transport library. The Chinese cloner took the FPGA code from the USB device and directly copied it for the PCIe device. This led to finding a mistake when the FPGA’s DMA completion FIFO reads the pending count as 0 when it reaches 64 or more. Claude disassembled their kernel driver and patched it without the source code. You read that right. After the fix it losslessly streams at 56MSPS on 1 Channel or 30.72MSPS dual channel. If you need a decent B210 in a M2 form factor, and can find a way to keep it cool. This is now a viable option, no thanks to Hamgeek. GitHub repo in comments.
6
4
1
99
7,460
Paulo Dutra - PU4THZ retweeted
Part 3C of my Chinese AD9361 SDR testing. This one continues my work on the M.2 form factor “M2SDR” sold by Hamgeek. The vendor was at first helpful in providing drivers for it but once I complained that it was advertised to work at 56MSPS but couldn’t sustain 20MSPS they said “No further development is planned” and stopped responding. I tried everything I could think of and pointed every LLM that I had at it without success. Until Opus 5.5. It setup a comprehensive test regime that eventually led to the closed source transport library. The Chinese cloner took the FPGA code from the USB device and directly copied it for the PCIe device. This led to finding a mistake when the FPGA’s DMA completion FIFO reads the pending count as 0 when it reaches 64 or more. Claude disassembled their kernel driver and patched it without the source code. You read that right. After the fix it losslessly streams at 56MSPS on 1 Channel or 30.72MSPS dual channel. If you need a decent B210 in a M2 form factor, and can find a way to keep it cool. This is now a viable option, no thanks to Hamgeek. GitHub repo in comments.
14
18
4
259
16,769
Paulo Dutra - PU4THZ retweeted
Finally, we don't have to get a whole ass AD9361 once TX through this pipeline becomes possible. If this works out i am planning to have a down convert to 1280Mhz and fly a digital live video payload fly on a weather balloon using ESP-NOW.
Testing 15 Euros ESP32 : 80Mhz wide spectrum on 2.4Ghz with recent hack : here is DATV and wifi. Next step : getting I/Q and having TX ! A new horizon for cheap sdr : eSpDR.
1
10
49
1,774
#FPGA People... How "safe" is buying "high end" (Zynq, Ultrascale, etc) fpga Dev boards from EBay ? Found some interesting prices... #ebay #dsp #sdr #devboard #zynq #ultrascale #amd #xilinx
130
Paulo Dutra - PU4THZ retweeted
The Python block of CyberEther Web just got 12% faster thanks to a new runtime. It should update automatically when you load it. Enjoy! cyberether.org/web
1
34
1,309
Paulo Dutra - PU4THZ retweeted
Sunday fun: doing some SIGINT with CyberEther! Using its Python block, my lib identifies the waveform, modulation then tries to decode the signal. Here it successfully identified and decoded both Baudot and HFDL! It detects 82 waveforms so far, adding more! #SIGINT #CyberEther
1
9
1
62
4,154
Paulo Dutra - PU4THZ retweeted
Finding out one of my favorite insane chemistry youtube channels worked on the Delta IV specifically is somehow very on brand.
21
46
2
1,594
23,073
Paulo Dutra - PU4THZ retweeted
S-band phased array project, Phase 1: Some equipment has been received gradually. The power divider specifications are normal, and the surface-mount antenna still requires one or two iterations. Awaiting the phase shifter PCB!
1
17
1
281
9,458
Paulo Dutra - PU4THZ retweeted
I needed QO-100 10 GHz signal in my hamshack but it was raining (in my balcony). I mixed LNB:s IF back to 10.489 GHz. Now I have QO-100 indoor coverage in my lab. LNB is Kuhne. LO is Plutos 4.680 GHz x 2 with AliE HMC204. Mixer is AliE HMC220.🛰
3
47
2,555
This is very nice if it works well... I've been wanting to develop a tool like this for quite some time, never managed to pack it up and release... I'll try this one soon :)
Demod Analyzer: Analyze Digital Modulation (BPSK, QPSK, 16-QAM) in IQ Files rtl-sdr.com/demod-analyzer-a…
4
252
Paulo Dutra - PU4THZ retweeted
nand2mario.github.io/posts/2… This is a fantastic article on building a Voodoo GPU recreation, a lot of the architectural challenges, including having high latency DDR. Excellent read for those interested in GPU architecture :)
11
1
122
8,488
Paulo Dutra - PU4THZ retweeted
GPRS IP стек, та стрімінг працює теж, повна аппаратна емуляція. Той самий ланцюжок ARM->DSP->IQ->osmocom->IQ->DSP->ARM 24кілобіта. Це як діалап модем. Дуже корисно озирнутися та подивитися де ми були. Та шо маємо сьогодні.
Повну емуляцію апаратної платформи Nokia 6600 (NHL-10) у QEMU завершено. GSM-зв’язок працює end-to-end: Відправка та прийом СМС ARM → DSP → IQ → Osmocom → IQ → DSP → ARM
7
10
2
251
30,015
Paulo Dutra - PU4THZ retweeted
I also upgraded the Frame block for the next CyberEther release. It now preserves aspect ratios and includes labeled axes, zoom and pan controls, and multiple color-maps (LUTs). This will be handy when debugging the telescope correlator!
1
4
16
988
Paulo Dutra - PU4THZ retweeted
The PZSDR Team Demonstrates 7-Board Phase Coherence rtl-sdr.com/the-pzsdr-team-d…
1
8
1
82
4,774