Na czym polega odkrycie
SDR (ang. software-defined radio, radio programowalne) to odbiornik, który zamienia sygnał radiowy na ciąg liczb, a całą resztę – demodulację, filtrowanie, dekodowanie – wykonuje program na komputerze. Dzięki temu jedno urządzenie może odbierać bardzo różne rodzaje transmisji.
ESP32 ma w torze odbiorczym przetwornik analogowo-cyfrowy (ADC), który zamienia odebrany sygnał na liczby. Normalnie trafiają one od razu do wbudowanego modemu Wi-Fi i Bluetooth – sprzętowego bloku, który potrafi obsłużyć tylko te standardy. Zespół projektu ESPARGOS znalazł sposób, by firmware (oprogramowanie wgrywane do układu) ominął ten modem i pobrał surowe próbki IQ. To dokładnie ten rodzaj danych, na którym pracują programy SDR. Nie potrzeba żadnego dodatkowego sprzętu: wykorzystywany jest tor odbiorczy, który układ i tak ma w środku.
Próbki IQ to zapis sygnału w postaci dwóch składowych: I (fazowej, ang. in-phase) i Q (kwadraturowej, przesuniętej o ćwierć okresu). Para takich liczb opisuje w danej chwili jednocześnie amplitudę i fazę sygnału, więc da się z niej odtworzyć dowolną modulację.
Tę samą możliwość, dla ESP32-S3, kilka dni wcześniej opisał na Reddicie użytkownik h0m3us3r, razem z kodem źródłowym. Jego rozwiązanie osiąga 80 MSa/s (milionów próbek na sekundę) w trybie ciągłym, ale wymaga dodatkowego układu FPGA – programowalnego układu logicznego, który tu odbiera i przesyła dane. ESPARGOS od kilku miesięcy pracował nad tym niezależnie.
Do odkrycia doprowadziła nieudokumentowana funkcja adctrig z biblioteki librftest firmy Espressif (producenta ESP32). Jej działanie odtworzono metodą inżynierii wstecznej z pomocą dużych modeli językowych (LLM). Twórcy przypuszczają, że inżynierowie Espressif zostawili tę ścieżkę do testowania i debugowania modemu, na przykład podczas testów układów jeszcze w fabryce.
Jak to działa
Specjalne rejestry diagnostyczne każą modemowi zapisywać surowe próbki wprost do wewnętrznej pamięci operacyjnej SRAM. Firmware rezerwuje ten obszar, by nie zajął go stos programu, a szczegóły różnią się między układami. W ESP32-C61 pamięć jest podzielona na banki po 64 KiB, a dwa z nich tworzą bufor pierścieniowy – modem zapisuje dane na zmianę raz do jednego, raz do drugiego banku. Gdy modem wypełnia jeden bank, procesor kopiuje z drugiego gotowe próbki do wysłania na komputer.
Każda próbka zajmuje 32-bitowe słowo. Składowe I i Q to 10-bitowe liczby ze znakiem (od −512 do +511). Pozostałe bity niosą indeks ustawienia wzmocnienia odbiornika i prawdopodobnie stan AGC – automatycznej regulacji wzmocnienia, która ścisza zbyt silne sygnały i wzmacnia słabe.
| Parametr | Wartość |
|---|---|
| Zakres strojenia | 2,2–2,7 GHz oraz 4,8–6,0 GHz (5 GHz tylko ESP32-C5) |
| Częstotliwość próbkowania | do 80 MSa/s |
| Szerokość pasma analogowego | ok. 13–54 MHz, zależnie od układu i ustawień filtrów |
| Wzmocnienie | automatyczne (AGC) lub ustawiane ręcznie |
Szerokość pasma mówi, jak szeroki wycinek widma odbiornik „widzi” naraz wokół częstotliwości, na którą jest nastrojony. ESP32-C61 odbiera nawet poza oficjalnym zakresem pracy Wi-Fi, do 2,7 GHz. To obejmuje m.in. pasmo 7 sieci LTE (4G) i n7 sieci 5G NR, w okolicy 2,6 GHz.
Wypróbowanie w przeglądarce
Obsługiwane są układy ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-S2, ESP32-S3 i ESP32-S31. Wystarczy płytka deweloperska z jednym z nich, przeglądarka na komputerze obsługująca Web Serial (dostęp strony internetowej do portu szeregowego, np. Chrome lub Edge) oraz internetowy flasher – strona, która wgrywa firmware do płytki przez kabel USB. Po wgraniu ESP-SDR i ponownym podłączeniu płytki interfejs ESP-WebSDR pokazuje na żywo widmo i wodospad, czyli wykres, na którym kolejne odczyty widma przesuwają się w dół i widać, kiedy i na jakiej częstotliwości pojawiały się sygnały.
Nie nadają się do tego układy obsługujące tylko Bluetooth Low Energy (BLE, energooszczędna odmiana Bluetooth) ani układy bez radia, takie jak ESP32-P4.
Ograniczenia i przepustowość
Przy 80 MSa/s i 32 bitach na próbkę modem zapisuje do SRAM 2560 Mbit/s. Wyjścia układu są dużo wolniejsze: UART (zwykły port szeregowy) przenosi ok. 3 Mbit/s, a SPI (szybka magistrala do łączenia układów) ok. 13,3 Mbit/s. Profile szeregowe przesyłają więc dane w krótkich porcjach, z niskim współczynnikiem wypełnienia – odbiornik zapisuje próbki tylko przez niewielką część czasu. Wystarcza to do podglądu widma, ale pakiety nadane między kolejnymi oknami zapisu mogą umknąć.
W ESP32-S31 działa tryb ciągły, bo układ ma szybkie USB (480 Mbit/s) i Gigabit Ethernet (1000 Mbit/s). Otwarty sterownik SoapyESPSDR, obsługujący tylko odbiór, łączy płytkę z programami zgodnymi z SoapySDR – wspólnym interfejsem, przez który programy radiowe obsługują różne odbiorniki SDR. Należą do nich np. Gqrx (graficzny odbiornik) i GNU Radio (środowisko do budowania własnych układów przetwarzania sygnału). Przepustowość wynosi do 20 MSa/s przez USB i do 40 MSa/s przez Ethernet. Twórcy zaznaczają, że to wersja eksperymentalna i jakość sygnału wciąż jest dopracowywana. Pokazano m.in. ciągły odbiór sygnału LTE na 2,63 GHz przy 40 MSa/s.
ESPARGOS One i zastosowania
ESPARGOS One to ośmiokanałowe urządzenie odbiorcze z ośmioma antenami. Po aktualizacji firmware do najnowszej wersji z gałęzi rozwojowej (dev) potrafi zbierać surowe próbki IQ fazowo spójnie – wszystkie kanały mierzą sygnał w zsynchronizowany sposób, więc da się porównać, w jakiej fazie fala dociera do każdej anteny. Dzięki temu staje się ośmiokanałowym odbiornikiem SDR dla pasma ISM 2,4 GHz (ogólnodostępnego pasma, w którym pracują m.in. Wi-Fi, Bluetooth i Zigbee), choć także z niskim współczynnikiem wypełnienia.
Dane przesyła po wewnętrznej magistrali SPI, szybszej niż UART w ESP-WebSDR, i może wysyłać próbki tylko wtedy, gdy wykryje sygnał. Pozwala to lokalizować dowolne nadajniki w paśmie 2,4 GHz, a nie tylko sieci Wi-Fi: Bluetooth, BLE, Zigbee, a także odmiany Wi-Fi, których urządzenie wcześniej nie obsługiwało (np. 802.11b i transmisje z kilkoma strumieniami przestrzennymi, czyli MIMO). Wspólne przetwarzanie sygnału z ośmiu anten pozwala lepiej odbierać słabe sygnały, a własne przebiegi umożliwiają np. radar z kompresją impulsu – techniką, w której długi, zmodulowany impuls po obróbce daje rozdzielczość krótkiego.
Firmware ESPARGOS One pozostaje zamknięty, choć twórcy rozważają jego otwarcie.
Nadawanie i bezpieczeństwo
Układy ESP32 mogą też nadawać dowolne sygnały, a na ESPARGOS One możliwa jest nawet fazowo spójna transmisja. Twórcy nie udostępniają jednak implementacji nadajnika z obawy przed nadużyciami, np. zagłuszaniem. Odkrycia nie uznają za tylne drzwi ani podatność, lecz za nieudokumentowaną funkcję modemu. Problemem są raczej dane przesyłane bez szyfrowania w pasmach ISM, które każdy może odebrać.
Z zewnętrznym mikserem – układem przesuwającym sygnał z jednej częstotliwości na inną – można przenieść do zakresu ESP32 sygnały z innych pasm, a prototypy wielokanałowe już istnieją. Obsługa kolejnych układów jest planowana, ale każdy wymaga osobnej implementacji.
Artykuł powstał na podstawie strony projektu ESPARGOS „ESP-SDR: Raw IQ Capture with Espressif's ESP32 Chips”.
