Verschillende projecten ontdekken onafhankelijk van elkaar verborgen SDR-mogelijkheden in ESP32-microcontrollers

Onlangs heeft het ESPARGOS-team een opwindende ontdekking gedaan. Zij ontdekten dat verschillende ESP32-chips een ongedocumenteerde functie hebben waarmee de firmware de vaste WiFi- en Bluetooth-functionaliteit kan omzeilen om in plaats daarvan ruwe IQ-baseband-samples vast te leggen. Hierdoor kunnen verschillende ESP32-modellen nu worden gebruikt als een interne SDR (Software Defined Radio).

Technische specificaties en bereik

De mogelijkheden van deze interne SDR variëren per chip:

  • Frequentiebereik: 2,2–2,7 GHz (en 4,8–6,0 GHz op de ESP32-C5).
  • Sample rate: Tot 80 MS/s.
  • Analoge bandbreedte: Ongeveer 13–54 MHz, afhankelijk van de gebruikte chip.

Beperkingen en uitzonderingen

Voor gebruik als een algemene, aan een pc gekoppelde SDR is de outputbandbreedte onvoldoende, waardoor er slechts snapshots van data naar een pc kunnen worden geëxporteerd. Dit betekent dat de SDR in deze vorm alleen als spectrumanalyzer werkt; het demoduleren of decoderen van continue radiodata is niet mogelijk met enkel een ESP32.

Er is echter een uitzondering: de nieuwe ESP32-S31. Deze kan continu streamen met snelheden tot 16 MS/s via de Gigabit Ethernet-interface. Voor deze chip is er binnenkort een SoapySDR-driver beschikbaar voor GNU Radio en gqrx. Voor wie dit zelf wil testen, is er de ESP-WebSDR-pagina, waar men de firmware direct vanuit de browser op de meeste ESP32-ontwikkelborden kan flashen om een live spectrum en waterfall-diagram te bekijken.

Fase-coherentie en richtingbepaling

Het ESPARGOS-team merkt op dat fase-coherente IQ-sample-vastlegging nu mogelijk is met hun hardware. Dit houdt in dat ESPARGOS niet langer beperkt is tot WiFi- en Bluetooth-signalen, maar nu richtingbepaling kan uitvoeren voor elk willekeurig signaal in de 2,4 GHz-band. Het team geeft aan dat fase-coherente transmissies ook mogelijk zouden zijn, maar zij implementeren dit momenteel niet vanwege het risico op misbruik.

Andere onafhankelijke ontdekkingen

Het lijkt erop dat minstens twee andere projecten rond dezelfde tijd onafhankelijk van elkaar soortgelijke functies hebben ontdekt om verschillende problemen op te lossen.

Het project van /u/h0m3us3r

Op Reddit ontdekte gebruiker /u/h0m3us3r dezelfde functie. Op 26 september uploadde deze gebruiker het project naar GitHub en plaatste een video waarin een ESP32-S3 functioneert als een SDR, waarbij een FPGA wordt gebruikt als USB3-front-end. In tegenstelling tot ESPARGOS streamt dit project de ruwe IQ-data continu naar een pc via de FPGA, waardoor volledige demodulatie en decodering op de pc mogelijk zou moeten zijn.

Er is echter een huidige beperking: het prototype gebruikt de FPGA om de ESP32 te clocken, wat resulteert in een slechte faseruis (phase noise). Indien dit clock-probleem wordt opgelost, zou een combinatie van een ESP32 en een FPGA kunnen resulteren in een standaard algemene SDR, vergelijkbaar met de RTL-SDR, maar met een frequentiebereik van 2,2–2,8 GHz en een bandbreedte tot 80 MHz.

C5VRX

Een ander project dat gebruikmaakt van een soortgelijke ontdekking is C5VRX, dat op 13 augustus voor het eerst op GitHub werd geplaatst. C5VRX gebruikt een ESP32-C5 als een real-time FPV-videontvanger op 5,8 GHz. Hoewel dit project waarschijnlijk een ander mechanisme gebruikt, is het resultaat vergelijkbaar: er wordt gebruikgemaakt van een ongedocumenteerde IQ-datastroom op de ESP32 om FPV-signalen te samplen en onboard te demoduleren. De output is een analoge composietvideo via een eenvoudige resistor-DAC. Dit project is nog in ontwikkeling en werkt momenteel nog niet betrouwbaar over grotere afstanden.