ESP32をそのまま電波の観測装置にするファームウェア「ESP-SDR」が公開された。ESP32に内蔵されたWi-Fi用の受信回路から、復調する前の生の電波のデータを取り出し、パソコン上で周波数ごとの強さを表示する。開発したのは、ESP32を並べたアンテナアレイ「ESPARGOS One」を手がけるESPARGOSのチームだ。
SDR(ソフトウェア無線)は、受信した電波をデジタルの数値に変え、その後の処理をソフトウェアに任せる仕組みだ。ESP32の無線回路はWi-FiやBluetooth専用に働き、プログラムから扱えるのは受け取ったパケットだけだった。これまでESP32でSDRを作るには、市販のSDR用受信機や音声用のアナログ・デジタル変換器を外付けする必要があった。
チームは、Espressifが試験用に提供しているライブラリの中の関数を手がかりに、チップの内部構造を解析した。解析にはLLM(大規模言語モデル)も使った。その結果、Wi-Fiの処理回路を迂回して、受信回路のアナログ・デジタル変換器の出力をチップ内のメモリーへ直接書き込む、文書化されていない経路が見つかった。チームは、Espressifの技術者が製造時の試験やデバッグのために残した経路だろうとみている。ESP32ファミリーの各チップに対応させるファームウェアの一部は、AIが生成したという。
初代のESP32からESP32-C3、S3などまで8種類のチップに対応し、追加の部品は要らない。2.4GHz帯を受信でき、5GHz帯に対応したESP32-C5ではその帯域も受信できる。1秒あたり最大8000万回の速さで記録し、一度に見られる帯域幅は約13〜54MHzだ。Wi-Fi用に公式にうたわれた範囲の外も受信でき、ESP32-C61では携帯電話の一部の周波数帯を含む2.7GHz付近まで記録できたという。
使い方は、パソコンのChromeなどのブラウザーからファームウェアを書き込み、ブラウザー上のビューアーで周波数ごとの強さと、その時間変化を表示するだけだ。ただし、記録は短い区間ごとに途切れ途切れになる。シリアル通信の速度が記録の速度に追いつかないためだ。受信感度も校正されていない。今のところ受信だけで、送信には対応していない。
ソースコードはGitHubで公開しているが、ライセンスの表示はない。