文章总结: ESP32芯片中隐藏着一条未公开的IQ采样通路,可将其变为软件定义无线电(SDR)。多个独立项目同时发现此功能,支持多种芯片型号,采样率最高80MSa/s,但受限于输出带宽,目前更适合做频谱分析仪。该发现源于逆向工程,对无线电爱好者和IoT安全领域均有重要意义。
综合评分: 85
文章分类: IoT安全,逆向分析,安全研究
ESP32里居然藏着一条连官方都没写进手册的无线电通路
原创
黑鸟
黑鸟
黑鸟
2026年10月2日 23:21
广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
在物联网和创客圈子里,ESP32几乎是无人不晓的名字。这款来自乐鑫的微控制器凭借WiFi和蓝牙二合一的设计、极低的价格和丰富的外设,成了无数智能设备和DIY项目的心脏。可谁能想到,就在这颗看似普通的芯片里,还藏着一条从未写进公开数据手册的信号通路,能让它摇身一变成为一台软件定义无线电(SDR)。更有意思的是,几乎在同一时间,三个互不相干的项目各自独立地摸到了这扇门。
故事要从2025年说起。德国斯图加特大学电信研究所的研究员Florian Euchner发布了一个叫ESPARGOS的项目,这是一块由多块贴片天线组成的相控阵,每块天线背后都连着一颗ESP32。借助相控阵的原理,它不仅能判断WiFi信号从哪个方向来,还能把信号强度的热力图实时叠加在摄像头画面上,效果就像给WiFi信号拍了张X光片。
这个想法的源头其实是同事Marc Gauger的提议,用超低成本的ESP32代替专业SDR设备来做无线信道测量。Florian一开始深表怀疑,直到看到同事焊出来的极简原型才被说服,随后带着几位学生把这套系统一步步打磨成型。当时的ESPARGOS还不算真正意义上的SDR,它依赖的是WiFi信道状态信息(CSI),只能处理WiFi制式的信号,但团队在逆向工程芯片内部射频链路的过程中,有了一个意料之外的发现。
ESPARGOS One八天线相控阵硬件,每根贴片天线背后都有一颗独立的ESP32芯片
他们找到了芯片里一条未公开的调试通路。正常情况下,ESP32的射频前端把空中的模拟信号收下来,经过ADC采样之后,会直接送进固定功能的WiFi调制解调器做解码,CPU拿到的只是解好的数据包。但通过一组特殊的调试寄存器,可以让调制解调器把最原始的IQ基带采样直接写进芯片内部的SRAM,完全绕过WiFi协议栈。
换句话说,这相当于在芯片内部搭了一条绿色通道,让CPU直接拿到ADC吐出来的原始数据,而不是经过协议处理后的成品。不需要外接任何射频芯片,不需要额外的硬件,一颗普通的ESP32开发板就能干这件事。
这里稍微解释一下IQ采样是什么。无线电信号本质上是一个随时间变化的正弦波,要完整描述它需要同时记录幅度和相位两个维度。IQ采样就是用两路正交的采样值I(同相分量)和Q(正交分量)来同时捕捉这两个信息,有了完整的IQ数据,就能在软件里还原出信号的全部特征,想解调什么制式就解调什么制式,这正是软件定义无线电的核心思想。
具体到实现层面,不同芯片的捕获机制略有差异,但整体思路一致。以ESP32-C61为例,它的内部SRAM被划分成多个存储块(bank),固件拿出其中两个块组成一个环形缓冲区。调制解调器往一个块里写原始IQ数据的时候,CPU就从另一个已经写满的块里把数据搬走,两边交替进行,靠跟踪硬件写指针来判断什么时候该交换角色,每个块能存64KB的数据。
IQ数据的格式也很有讲究。每个复采样点占一个32位字,其中第19到10位存的是I值,第9到0位存的是Q值,都是10位有符号整数,取值范围从负512到正511。第27到20位记录当前接收增益档位,第31到28位大概率是自动增益控制(AGC)状态机的内部状态。把这些字段拼在一起,一次采样就能同时拿到信号本身和接收机当时的工作状态。
那团队是怎么找到这条通路的呢?起点是乐鑫librftest库里一个叫adctrig的函数。借助大语言模型的辅助,他们对这个函数做了逆向工程,逐步搞清楚了它如何配置硬件来捕获原始IQ采样,这些发现成了整个ESP-SDR项目的基石。
这台ESP32牌SDR的实际性能参数如下。频率方面,大多数支持的芯片覆盖2.2到2.7GHz,正好把2.4GHz的ISM频段完整包在里面。ESP32-C5因为本身支持5GHz WiFi,还能额外覆盖4.8到6.0GHz。更有意思的是,实际捕获范围甚至能超出官方标称的上限,比如ESP32-C61能收到2.7GHz,这已经蹭到了LTE band 7和5G NR band n7这些蜂窝频段的边缘。
采样率最高能到80MSa/s,也就是每秒采8000万个复采样点。模拟带宽在13到54MHz之间,具体数值取决于芯片型号和滤波器配置。增益控制既可以交给硬件自动增益(AGC),也可以手动固定一个档位。
目前支持的芯片名单包括初代ESP32、ESP32-C3、ESP32-C5、ESP32-C6、ESP32-C61、ESP32-S2、ESP32-S3以及最新的ESP32-S31,后续还会扩展更多型号,不过每款芯片都需要单独适配。
ESP32以80MHz带宽输出IQ数据,在SDR++软件中显示的实时频谱与瀑布图
听起来很美好,但有个现实的瓶颈必须面对。80MSa/s的采样率配上每个采样点32位,意味着调制解调器往SRAM里写数据的速率高达2560Mbit/s。可把数据搬出芯片的接口就慢得多了,普通UART大约只有3Mbit/s,SPI接口大概13.3Mbit/s,哪怕是ESP32-S31的高速USB也才480Mbit/s,千兆以太网能到1000Mbit/s。
入口和出口之间差了一个数量级还多。所以对大多数ESP32型号来说,只能以很低的占空比间歇性地抓一段数据传出去,够用来在浏览器里实时显示频谱和瀑布图,但两个捕获窗口之间的信号就漏掉了。这意味着它目前更适合当频谱分析仪用,想连续解调或解码持续广播的无线电信号还做不到。
不过新出的ESP32-S31是个例外。它自带千兆以太网接口,能以最高16MSa/s的速率连续不断地把IQ数据流到电脑上。团队正在为它开发SoapySDR驱动,代号SoapyESPSDR,这样GNU Radio和gqrx这些主流SDR软件就能直接把ESP32-S31当成一台标准SDR来用。8MSa/s和16MSa/s下可以连续接收,再高的采样率就还是得降低占空比。
想亲手试试的话门槛也很低。ESP-WebSDR提供了一个浏览器界面,通过Web Serial技术就能直接把固件刷进绝大多数ESP32开发板,刷完重新插拔就能在网页里看到实时的频谱和瀑布图,连命令行都不用碰。
ESP32-S31通过SoapyESPSDR驱动在gqrx中接收2.462GHz信号,频谱与瀑布图实时显示
这条隐藏通路被发现的过程本身也很有戏剧性。几乎在同一时间段,至少三个互不相干的项目各自独立地摸到了同样或类似的功能,但出发点完全不同。
第一个就是ESPARGOS团队。他们的目标是给相控阵升级,让它能处理任意信号而不只是WiFi。现在ESPARGOS One已经能做到相位相干的IQ捕获,八根天线同步采样,这意味着它不再局限于WiFi测向,2.4GHz频段里任何信号都能拿来做到达方向估计。团队还提到相位相干发射在技术上也是可行的,但出于可能被滥用的考虑,暂时不打算实现这部分功能。
相比浏览器版的ESP-WebSDR,ESPARGOS One的能力更强。它用内部SPI接口传输数据,吞吐比UART高得多,还支持信号触发模式,检测到信号才开始传数据,不用把大量静音的采样也浪费带宽传出去。有了原始IQ之后,它能定位的信号从WiFi扩展到了蓝牙、低功耗蓝牙(BLE)、Zigbee,甚至以前CSI捕获不了的802.11b和多空间流WiFi信号。多天线的阵列增益还能提升弱信号的接收性能,一些特殊应用比如脉冲压缩雷达的预处理甚至可以直接在芯片上完成,不受输出带宽的限制。
第二个项目来自Reddit用户h0m3us3r。他在9月26日把自己的发现上传到了GitHub,还录了一段视频展示ESP32-S3配合FPGA当SDR用的效果。和ESPARGOS的快照式传输不同,他的方案用FPGA作为USB3前端,把原始IQ数据持续不断地流到电脑上,这样在PC端做完整的解调和解码就成为可能。不过当前原型用FPGA来给ESP32提供时钟,导致相位噪声比较差。如果能把时钟问题解决,一颗ESP32加一片FPGA就能做出一台类似RTL-SDR的通用SDR,频率覆盖2.2到2.8GHz,带宽最高80MHz。
第三个项目叫C5VRX,8月13日就已经出现在GitHub上,时间甚至比前两个都早。它走的路子又不一样,用ESP32-C5当5.8GHz实时FPV(第一人称视角)视频接收器。虽然具体机制和前两者有所区别,但核心同样是利用了未公开的IQ数据流。它把FPV信号采样下来之后直接在芯片上解调,再通过一个简单的电阻DAC(数模转换器)输出模拟复合视频。这个项目还在开发中,远距离接收还不够稳定。
有人可能会问,这算不算芯片里的后门?ESPARGOS团队给出的答案是否定的。这只是调制解调器里一个没有写进公开数据手册的调试功能,初衷大概率是芯片出厂前做晶圆测试和调制解调器验证用的,本身并不构成安全漏洞。
但事情有两面。很多ESP32设备连接着云服务,厂商可以远程更新固件,如果这些设备在ISM频段传输敏感数据却没有加密,那能收原始IQ的能力就意味着这些数据可能被旁听到。不过问题的根源在于未加密的传输本身,而不是SDR功能。另一方面,任意信号发射的能力如果被滥用,可能用来做干扰或其他恶意用途,这也是团队暂不开放发射功能的原因。
还有一个值得关注的可能性。如果在ESP32的射频输入输出端加一个外部混频器,就能把其他频段的信号搬到ESP32能接收的范围内,从而扩展频率覆盖,团队已经有多通道原型硬件在做这件事。
一颗几块钱的微控制器,藏着连官方都没写进手册的SDR能力,还被三个团队从不同方向同时撬开。这背后是开源社区和学术研究对商用芯片持续不断的探索,也让人好奇那些量产了亿万颗的芯片里,还藏着多少未被发现的秘密。
对无线电爱好者来说,这意味着手里的ESP32开发板突然多了一种全新的玩法,低成本SDR的门槛又一次被拉低。而对整个行业来说,这也是一个提醒,那些看似已经被研究透的芯片,或许还有另一面等着被翻开。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:黑鸟 黑鸟
黑鸟《ESP32里居然藏着一条连官方都没写进手册的无线电通路》