ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ADALM-Pluto + SDRSharp 实战:从驱动安装到频谱监测全攻略

ADALM-Pluto + SDRSharp 实战:从驱动安装到频谱监测全攻略 简介面向 PLUTOSDR 用户的 SDR# 社区版免安装压缩包适合业余无线电爱好者、学生及无线通信研究者快速上手软件定义无线电接收与解调。包内为绿色版 SDR#已针对 PlutoSDR 优化解压即可运行支持实时频谱分析、AM/FM/CW/DSB 解调、插件扩展解码、录制回放及多种 SDR 硬件切换。资源共一百九十个文件以动态链接库、主程序、配置文件与批处理脚本为主包含常用启动工具与插件数据压缩包仅约二十兆便于下载与分发。目录中还包括常用频点文件、站点列表与多种入口脚本便于快速切换接收场景和实验环境。已有八百一十四人学习可作为入门 PLUTOSDR 的实用工具包帮助使用者省去编译配置流程直接体验无线电信号接收、频段扫描、解码分析与信号记录是一份轻量且可扩展的软件无线电学习素材。 软件无线电的圈子里一直有个让人纠结的价位真空一百来块的RTL-SDR只能接收频率上限还卡在1.7GHz左右HackRF虽然能收能发但8位的ADC动态范围摆在那里收宽频信号总感觉不够细腻。于是很多人把目光转向ADI的ADALM-Pluto巴掌大的一块板子12位ADC/DAC标称325MHz到3.8GHz的射频范围支持收发价格也不算离谱。硬件是很能打但到手之后碰到的第一个问题往往不是硬件而是软件怎么把它跑起来。我给你的答案很简单Windows平台上直接用SDRSharp社区版也就是网上常见的那个SDRSharp_v1_community_for_Pluto.zip打包解压之后配合Pluto就是一套拿起来就能用的软件无线电工作台。这篇文章我打算把整套链路掰开揉碎讲清楚从为什么偏偏是Pluto配SDRSharp到驱动怎么装、参数怎么调再到几个实测最出效果的应用场景。如果你刚拿到这个zip包或者正在犹豫要不要入Pluto看完应该能少走不少弯路。1. Pluto为什么值得成为SDRSharp的搭档1.1 ADALM-Pluto到底是什么ADALM-Pluto是ADI推出的一块口袋级软件无线电平台核心是AD9363射频收发芯片。这块芯片把射频前端、混频器、滤波器、12位ADC和12位DAC全部集成在一起也就是说它天生就是一块“能收也能发”的完整射频收发机。它标称的工作频率是325MHz到3.8GHz射频带宽200kHz到20MHz还带两个通道。这意味着什么呢你可以在一台电脑上用软件实时看到某个频段内几MHz甚至20MHz宽的频谱而不是像传统收音机那样只能盯住一个点。对搞无线电、搞信号分析的人来说这种“把频段摊开看”的能力价值远超过单纯听个广播。Pluto另外一个很强的点是可编程能力。它内部是Linux系统支持libiio库你不仅可以拿它当SDR前端用还可以直接改固件、写脚本甚至把它变成一个小型软件无线电实验平台。这也是为什么很多高校的通信课程和科研项目都拿它当教学工具。1.2 和RTL-SDR、HackRF放在一起怎么选很多新手会在RTL-SDR、HackRF和Pluto之间纠结。我直接给个对照表看完基本就明白了。项目RTL-SDRHackRFADALM-Pluto价格约100元300美元250美元收发能力仅接收收发收发ADC位数8位8位12位频率范围24MHz-1.7GHz1MHz-6GHz325MHz-3.8GHz标称最大带宽约3.2MHz20MHz20MHzRTL-SDR赢在便宜、低频能力强适合入门听FM广播、看航空波段HackRF赢在频率范围极宽1MHz到6GHz几乎通吃但8位的采样精度让它在接收弱信号时噪声偏大Pluto正好卡在中间频率范围没有HackRF那么夸张但是12位的ADC让它的接收动态范围明显更好同时还能双通道收发这一点是另外两个家伙完全不具备的。所以我的建议很直接如果你只是好奇想听听广播RTL-SDR够了如果你想认真做SDR尤其是想碰发射和信号分析Pluto的性价比和可玩性是最高的。而Windows下给Pluto用的软件SDRSharp社区版几乎是默认选项。2. 解压即用不等于直接能用驱动链路和连机细节2.1 这个zip包里都有什么拿到SDRSharp_v1_community_for_Pluto.zip之后第一件事是把它解压到一个纯英文路径下比如D:\SDR。社区版和AirSpy官方发布的付费版不一样社区版是开放的里面通常包含主程序SDRSharp.exe、一堆DLL插件、配置文件Front Ends.xml、Plugins.xml等等。解压后建议先做两个检查目录里有没有SDRSharp.Pluto.dll这个文件。如果没有说明这个zip包可能只带了通用插件Pluto支持需要额外补齐。用记事本打开Front Ends.xml看里面有没有一行类似add keyPlutoSDR valueSDRSharp.Pluto.PlutoIO, SDRSharp.Pluto /的配置。没有的话就手动加进去否则SDRSharp启动后根本不会出现Pluto这个源选项。这个步骤很多人会漏掉这是连接失败最常见的原因之一。另外提醒一句杀毒软件有时候会把DLL当风险文件隔离解压之后建议把整个目录加入信任区否则用着用着插件突然丢了很闹心。2.2 USB模式与Zadig驱动Pluto连接电脑有两种常用方式先说USB模式。Pluto通过USB线连到电脑后Windows设备管理器里会出现一个名为“ADALM-PLUTO”或“PlutoSDR”的设备。但这时候SDRSharp还不能直接访问它因为SDRSharp的Pluto插件走的是libiio后端Windows下需要USB驱动能被libiio识别。绝大多数情况下你需要用Zadig把Pluto的驱动替换成WinUSB或libusb。Zadig的操作不复杂但有个关键点打开Zadig后先点击菜单栏的Options - List All Devices然后在下拉框里找到“ADALM-PLUTO”或者“PlutoSDR”这个条目目标驱动选WinUSB再点Replace Driver。这里特别要小心Pluto插入后可能会显示多个设备比如串口设备、网络适配器等。你只换名字里带“PlutoSDR”的那一个千万别把串口设备或者RNDIS虚拟网卡给换了否则后面会遇到更奇怪的问题。驱动替换完成后启动SDRSharp在左上角的源下拉框里选择PlutoSDR点击播放按钮如果频谱开始滚动说明链路已经通了。2.3 网络模式用IP地址访问PlutoPC和Pluto之间其实是USB连接但Pluto的USB接口在系统里会虚拟出一个网卡默认IP是192.168.2.1。所以还有另一种连接方式不去换USB驱动而是把Pluto当成一个网络设备来访问。具体做法是保持Pluto的RNDIS网卡驱动不变把电脑端的这个虚拟网卡IP手动设为192.168.2.2子网掩码255.255.255.0。然后在浏览器里输入http://192.168.2.1能看到Pluto的Web配置页面说明网络通路正常。接着在SDRSharp的PlutoSDR源配置里填IP192.168.2.1点播放就能连上。这种方式的好处是不需要动驱动而且理论上你可以通过网口或Wi-Fi桥接访问远程的Pluto做分布式接收。缺点是延迟比USB模式略高但日常用差别不大。两种方式二选一即可不要同时折腾。2.4 最常见的连接失败原因我帮朋友排查过不少次连接失败基本可以归纳成这么几类DLL没注册。这个前面说过Front Ends.xml里少了Pluto条目SDRSharp源下拉框里就找不到PlutoSDR。解决方法是手动补上那行配置。驱动换错了设备。把Pluto的串口设备或者其他USB设备换成了WinUSB导致SDRSharp完全找不到硬件。USB线只能充电。这个特别坑很多便宜的USB线只带电源线不带数据线插上去电脑有反应但设备枚举不过去。换一根能传数据的线试试。固件版本太老。打开Pluto的Web页面看一下固件版本如果太老SDRSharp的libiio后端可能无法正常通信。这种情况需要去ADI官网下载最新的出厂镜像重刷固件。如果你卡在“设备管理器里能看到Pluto但SDRSharp就是连不上”先按上面四条逐一排查90%的问题能解决。3. 界面配置与参数调优手把手避开默认值的坑3.1 采样率别一上来就拉到最高SDRSharp连上Pluto之后第一个要调的参数是采样率。Pluto硬件支持到20MHz听着很爽但你别高兴太早。采样率越高USB传输的数据量越大CPU解码负担也越重。在我的实际使用中2.4MHz是一个很稳的起步值既能覆盖一个完整的常用频段又不会动不动就让电脑风扇狂转。如果你用的是网络模式采样率太高还会引入丢包频谱上会出现一条条断裂的痕迹。我的做法是先2.4MHz跑起来确认链路稳定再根据需求逐步往上加。做宽带频谱监测的时候用5MHz已经比较奢侈了20MHz一般留给特殊场景比如同时看整个Wi-Fi频段。采样率还会影响FFT的分辨率。SDRSharp的FFT显示范围是固定的采样率越高每个像素代表的频段宽度越大你看到的频谱就越“粗”。所以想精细观察一个窄带信号时适当降低采样率反而更有效果。3.2 增益和AGC的配合Pluto的RX增益调整范围大致在-3dB到75dB之间调节步进是0.5dB。SDRSharp界面里可以直接拖动增益滑块也可以开启AGC让软件自动调整。新手最容易犯的错是把增益拉满。增益拉满之后看起来信号变强了但实际上噪声地板也跟着抬起来了弱信号反而被淹没在底噪里。我自己的习惯是先开AGC让SDRSharp自动找一个合适的基线然后再手动微调增益直到频谱上的噪声地板刚好比底噪高一点点。这时候的灵敏度往往是最舒服的。如果你要在SDRSharp里同时看强信号和弱信号AGC能帮忙压住强信号避免前端饱和。但如果是定位很弱的信号还是手动把增益降到合理区间更靠谱。3.3 频率校准PPM与滤波器带宽Pluto的晶振精度不算特别高实测下来频率会有一定偏差用久了或者温度变化大偏差会更明显。SDRSharp里有个校准参数你可以用已知频率的信号来校准。方法很简单找一个频率非常准确的信号源比如当地已知频率的中继台、基站或者标准时间信号把SDRSharp调谐到这个频率看实际显示的频偏是多少然后在SDRSharp的校准设置里把这个偏差值填进去。这样调完之后整个频段的频率准确性都会有明显改善。旁边的滤波器带宽设置也要跟上。SDRSharp里IF filter带宽决定了最终音频输出带宽根据不同信号类型调整信号类型建议滤波带宽说明NFM对讲信号10-15kHz窄带语音带宽太宽会听到邻近频道干扰WFM广播信号150-220kHzFM广播的立体声信号需要较宽带宽AM航空通信8-10kHz常规AM语音带宽太宽噪声大宽带数字信号按需设置看具体协议一般配合解码软件调整3.4 解调模式怎么选SDRSharp左侧面板可以切换解调模式。FM广播用WFM对讲机、遥控器用NFMAM信号用AM数字信号一般用NFM或者直接关掉解调用频谱看。这里提醒一点很多数字信号直接用SDRSharp内置解调是听不出内容的只能听到“嘶嘶”的噪声。这很正常因为数字信号的解调要靠专门的软件。SDRSharp在这个场景下更多是扮演“频谱雷达”的角色先把信号找出来再交给其他工具去解。比如后面要讲的ADS-B用SDRSharp只能看到一条条短促的脉冲但你要真正的航班信息还是得靠专用解码链。4. 实测有感这几个频段最适合这套组合4.1 1090MHz ADS-B飞机追踪把SDRSharp频率调到1090MHz、采样率2.4MHz、增益适中偏大在频谱上你会看到间歇性冒出来的短脉冲信号这就是空中的ADS-B应答机在广播航班信息。每个脉冲持续的时间非常短看起来就像频谱上一闪一闪的小钉子。SDRSharp在这个场景里的角色是确认信号存在、判断环境干扰情况。真正解码航班号、高度、速度、经纬度需要把IQ数据或者音频数据喂给专门的解码工具。网上常见的玩法是把SDRSharp的输出接到Virtual Radar Server这类软件配合解码器就可以在电脑上画出一片空域的实时飞机位置图。Pluto的12位ADC在1090MHz这个频段上表现很稳弱信号也能捞出来这在飞机离得远、信号弱的时候尤其重要。4.2 433MHz、868MHz物联网信号观测城市里最热闹的频段除了手机就是433MHz和868MHz这两个ISM频段。汽车遥控钥匙、无线门铃、智能家居网关、LoRa节点、各种传感器都在这里扎堆。用SDRSharp把中心频率调到433.9MHz左右带宽设成2.4MHz你会发现频谱上到处都是时有时无的短促信号。这些信号的调制方式五花八门但SDRSharp的频谱图能帮你快速判断信号的长相有的是一连串密集脉冲有的是宽带扫频有的是稳定载波。结合SDRSharp的录音回放功能你可以把一段时间的IQ数据存下来反复分析找出规律。这个频段的玩法上限很高很多做物联网协议逆向的人就是拿Pluto加SDRSharp先做信号侦察再上协议分析仪。4.3 2.4GHz WiFi与3.5GHz频段Pluto标称上限是3.8GHz所以2.4GHz WiFi和3.5GHz频段都在它能覆盖的范围内。2.4GHz WiFi信号带宽约20MHz刚好摸到Pluto的最大带宽上限你能在频谱上看到一个完整的Wi-Fi信道占用轮廓甚至能看到信道的繁忙程度。3.5GHz这个频段就更偏专业了通常用于点对点通信、5G试验频段和卫星地球站等。拿SDRSharp配合Pluto做这个频段的现场电磁环境监测是很多工程人员的实际用法。频谱上能看到哪些时段有信号、信号占多宽、大概的功率水平这些信息对排查干扰很有用。这里我要泼一盆冷水FM广播88-108MHz、航空VHF 118-137MHz这些都在Pluto官方标称范围之下。虽然社区里有人通过魔改寄存器让Pluto收到更低频率但官方不保证性能你也别指望拿它当RTL-SDR用。想听广播和航空波段老老实实准备一个RTL-SDR两个互补才是最优解。5. 从接收到发射Pluto的边界与进阶路线5.1 发射能力与合规提醒Pluto能发射而且发射频率范围和接收一样是325MHz到3.8GHz输出功率大约在7dBm左右也就是几毫瓦级别。这个功率直连天线几乎没多少实际作用通常要外接功放才能飞得更远。但这里必须严肃提醒一点在绝大多数国家和地区未经许可在非授权频段发射无线电信号是违法的。如果你没有业余电台操作证书和电台执照不要尝试发射哪怕只有几毫瓦。SDRSharp虽然也带发射功能但它的发射链路并不好用主要还是面向接收场景。真想发射调试建议用GNU Radio或者MATLAB/Simulink那边对发射波形和参数的控制精细得多。合规的玩法也有比如在ISM免执照频段433MHz、868MHz、2.4GHz做小功率实验输出功率控制在规定范围内并且不对其他用户造成干扰。即便如此我也建议你先查清楚当地法规再动手。5.2 进阶方向双Pluto、GNU Radio、远程接收接收玩熟之后Pluto能带你走得更远。如果你有两台Pluto它们之间可以实现时间同步和频率同步组成一个最简单的MIMO系统。这在阵列信号处理、测向、波束成形这些方向上是硬需求。SDRSharp本身不支持MIMO但GNU Radio和MATLAB都支持双Pluto的配置这也是Pluto比普通SDR更有价值的原因之一。网络模式下的Pluto还有另一个妙用分布式接收。我可以通过Pluto的网络接口让一台电脑访问到部署在室外的Pluto设备这样我能把接收天线放到信号更好的地方自己在屋里盯着SDRSharp看频谱。做无线电监测和信号对比的时候这个能力非常实用。另外SDRSharp的插件体系也值得关注。社区里有人写了各种插件有的增强频谱显示效果有的支持录音回放有的能把数据通过网络导出给其他软件处理。多逛逛社区你会发现这套组合的玩法比想象中多得多。我个人的建议一直是如果你只想纯接收先用RTL-SDR把兴趣养起来如果你确定自己还要往前走一步想碰发射和射频信号处理那么Pluto加上SDRSharp真的是一条很稳的路。最后再提醒一个容易被忽略的细节这个zip解压之后各个DLL文件一定不要单独拿出来它们要跟SDRSharp.exe待在同一个目录里而且目录路径尽量不要有中文否则插件加载会莫名失败。这些坑都是我一步一步踩出来的希望你不用再踩一遍。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进