TL;DR
- ESP-SDR은 지원되는 ESP32 칩의 내부 신호 경로에서 원시 I/Q 베이스밴드 샘플을 읽어 별도 하드웨어 없이 소프트웨어 정의 라디오(SDR) 수신기로 활용하는 오픈소스 펌웨어임.
- 지원 칩은 ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-S2, ESP32-S3, ESP32-S31 프리뷰이며, 칩에 따라 2.4GHz 및 5GHz 대역을 다룸.
- 샘플링 속도는 최대 80 MSa/s, 대역폭은 칩에 따라 약 13~54MHz이며, 온칩 고속 푸리에 변환(FFT)으로 원시 샘플 대신 간결한 스펙트럼 데이터를 전송할 수 있음.
- ESP-WebSDR은 USB 연결을 통해 실시간 스펙트럼과 워터폴을 표시하지만 USB와 UART의 전송 대역폭 한계로 짧은 I/Q 스냅샷을 수집해 캡처 사이에 도착하는 신호를 놓칠 수 있음.
- ESPARGOS One은 ESP-SDR을 통해 8채널 SDR로도 작동할 수 있으며, ESP-SDR과 ESP-WebSDR은 GPL-3.0 라이선스의 오픈소스 프로젝트임.
ESP-SDR 펌웨어와 지원 하드웨어
- ESP32는 단순한 사물인터넷(IoT) 장치부터 인공지능(AI), 오디오, 비전 프로젝트까지 다양하게 사용되며, ESP-SDR 펌웨어는 추가 하드웨어 없이 ESP32를 네이티브 소프트웨어 정의 라디오(SDR)로 전환함.
- 오픈소스 펌웨어는 ESP32의 고정 기능 와이파이(Wi-Fi) 및 블루투스 모뎀을 우회하고 내부 아날로그-디지털 변환기(ADC) 신호 경로에서 원시 동위상·직교(I/Q) 베이스밴드 샘플을 수집함.
- 샘플은 USB 또는 UART를 통해 컴퓨터로 전송되며, 컴퓨터에서 라디오 스펙트럼이나 워터폴 화면으로 처리·표시됨.
- 지원 하드웨어 및 성능은 다음과 같음.
- 지원 칩: ESP32, ESP32-C3, ESP32-C5(2.4/5GHz 듀얼 밴드), ESP32-C6, ESP32-C61, ESP32-S2, ESP32-S3, 프리뷰 버전 ESP32-S31
- 튜닝 범위: 명목상 2.4GHz 산업·과학·의료(ISM) 대역이며, 일부 칩은 2.2~2.7GHz를 지원함. ESP32-C5의 5GHz 범위는 4.8~6.0GHz임.
- ESP32-C61은 최대 2.7GHz까지 튜닝할 수 있으며 롱텀에볼루션(LTE) 밴드 7과 5G 뉴 라디오(NR) 밴드 n7 신호를 수신할 수 있음.
- 샘플링 속도는 최대 80 MSa/s이며, 대역폭은 칩에 따라 약 13~54MHz임.
- 온칩 고속 푸리에 변환(FFT)을 지원하며, 원시 I/Q 샘플 대신 간결한 스펙트럼 데이터를 전송할 수 있음.
- 개발자들에 따르면 Espressif 엔지니어들이 공장 웨이퍼 테스트를 위해 디버그 I/Q 샘플링 경로를 실리콘에 남겼을 가능성이 있음.
- 팀은 대형 언어 모델(LLM)을 사용해 Espressif의
librftest라이브러리에 있는adctrig함수를 역공학했고, 이를 통해 특수 디버그 레지스터를 설정하는 방법을 알아냄.
ESP-SDR의 데이터 수집과 표시
- 기능을 활성화하면 ESP32가 원시 I/Q 샘플을 내부 정적 램(SRAM)에 직접 기록함.
- 펌웨어는 링 버퍼를 사용해 SRAM에서 샘플을 옮기고 USB 또는 UART를 통해 컴퓨터로 전송함.
- 신호를 표시하려면 브라우저 기반 도구인 ESP-WebSDR이 필요하며, USB로 ESP32에 연결해 라디오 스펙트럼과 워터폴을 실시간으로 보여줌.
- ESP-WebSDR은 Chrome이나 Edge 등 지원되는 웹 브라우저에서 ESP-SDR 펌웨어를 직접 플래시하는 데도 사용할 수 있음.
- ESP32는 최대 80 MSa/s로 데이터를 수집할 수 있고, 이 속도는 약 2.56Gbps의 데이터량을 만듦. 하지만 데이터를 칩 밖으로 옮기는 일이 주요 문제임.
- USB와 UART는 전체 데이터 전송률을 감당할 수 없어 ESP-WebSDR은 스펙트럼과 워터폴을 구성할 때 짧은 I/Q 스냅샷을 수집함. 따라서 캡처 구간 사이에 도착하는 신호를 놓칠 수 있음.
- 연속 스트리밍을 위해 팀은 ESP32-S31용
SoapyESPSDR을 개발 중이며, 이를 통해 기가비트 이더넷으로 8~16 MSa/s의 I/Q 데이터를GNU Radio와Gqrx같은 소프트웨어에 스트리밍할 수 있음.
기존 ESP32 라디오 프로젝트와의 차이
- 이전에 다룬 여러 ESP32 라디오 및 SDR 프로젝트는 외부 수신기나 처리된 와이파이 데이터를 사용했음.
- 며칠 전 소개한 LakeShark 펌웨어는 LilyGO T-Display P4를 휴대용 SDR 스캐너로 전환하지만, ESP32-P4에는 자체 라디오가 없어 RTL-SDR Blog V3 또는 V4 동글을 무선주파수(RF) 프런트엔드로 사용함.
- Chen Liang의 ESP32-C5 와이파이 분석기는 2.4GHz 및 5GHz 와이파이 신호를 모니터링하며, ESP-WIFI-CSI는 채널 상태 정보(CSI)를 활용함.
- nRFBOX V2와 ESP32-DIV는 외부 nRF24를 사용해 2.4GHz 대역을 스캔함.
- 이 프로젝트들과 달리 ESP-SDR은 ESP32 내장 라디오를 사용하므로 별도 SDR 하드웨어가 필요하지 않으며, 5달러 미만의 ESP32 보드에서도 기본적인 스펙트럼 분석이 가능함.
ESPARGOS One과 오픈소스 공개
- ESPARGOS 프로젝트의 Florian Euchner와 Zoltan Doczi는 와이파이 센싱용 8안테나 장치인 ESPARGOS One을 작업하던 중 이 기능을 발견함.
- ESP-SDR을 사용하면 ESPARGOS One은 8채널 SDR로도 작동하며, 2.4GHz 대역의 블루투스 저에너지(Bluetooth LE)와 지그비(Zigbee) 같은 신호를 탐지하고 위치를 파악할 수 있음.
- ESP-SDR과 ESP-WebSDR은 모두 GPL-3.0 라이선스로 공개된 오픈소스 프로젝트이며, 소스 코드는 GitHub에서 확인할 수 있고 호환되는 ESP32 개발 보드로 브라우저 기반 SDR 데모를 시험할 수 있음.
ESP-WebSDR 저장소에는 코드 일부가 AI로 생성됐다는 안내가 있음. ESPARGOS One 어레이용
pyespargos와 펌웨어에는 많은 수작업을 들였지만, ESP-WebSDR의 전체 소스 코드를 모두 수동으로 검토할 시간은 없다는 설명임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요