初试 SDR(软件无线电)

2012-05-17

既然今天是世界电信和信息社会日,那我就来谈一些通信相关的话题。

上周末 @lonepig 同学送我了一个基于 RTL2832U+e4000 解决方案的 DVB-T+DAB+FM 电视棒。这是他最近发现的一件神器,也是近几个月来国内外一些 HAM 热衷研究的小玩意。这个电视棒神在哪里呢?原来是一位 Linux 驱动开发者 Antti Palosaari 在分析 RTL2832U 芯片时,发现这款原本只公开了 DVB-T 等接收功能的芯片其实可以输出原始的 I/Q 采样,且接收频段较宽(64-1700MHz),因而可以用做 SDR(软件无线电)接收机。由于 RTL2832U 相关产品廉价且易购(十多美元或几十人民币,eBay 和淘宝上很多),这引起了一些 SDR 爱好者的关注(如[1][2]),很快有人为之开发了 Linux 或 Windows 下的驱动和接口程序(如[3][4]),以便通过诸如 GNU Radio 之类的 SDR 软件对其进行编程使用。

我在前人研究基础上,照猫画虎地把这套基于 RTL2832U + GNU Radio 的 SDR 搭了起来,成功地接收了 FM 广播和 U/V 手台的信号。另外简单测试了 GNU Radio 中一些名称看得懂的模块——发现本科时学的那些老三论忘得差不多了。在 Windows 下,使用解调功能现成、界面友好的 HDSDR 进行接收相对简单一些,但可定制性也比能够灵活编程的 GNU Radio 差一些。

GNU Radio

这只是最初步的用法。国外一些 SDR 发烧友已经开发了针对这个芯片的扩频模块,使之可以接收短波。时间和精力有限,我就先不实验这些了,静观老外折腾。

看过了新鲜,别忘了这个电视棒的原本功能——看电视。之前我不是测试过 CMMB 和 DAB/DMB 制式的数字无线电视吗?有了这个电视棒,又可以测试欧洲标准 DVB 制式了。北广传媒集团在 794MHz 上发送 4 套 DVB 电视节目,分别是公交、地铁、城市(楼宇)移动电视和转播的 CCTV-1。由于应用场合的差异,其分辨率是 768x576,大于面向掌上终端的 CMMB 和 DAB/DMB;延时在亚秒级到秒级,也优于 CMMB 和 DAB/DMB。电视棒附带的 Windows 客户端 BlazeVideo HDTV 还是比较好用的,只是其 DAB 模块貌似只能解码 DAB 音频,不能解码 DMB 视频。我亦测试了 RTL2832U 的 Linux 驱动,并使用 VLC 实时解码播放,效果也不错。不过我工位附近的 DVB 信号明显比 CMMB 和 DAB/DMB 信号差,只有在室外或窗口附近才能看到稳定的视频。当然,这有可能是因为天线的差异。

VLC DVB

最后说一句实验体会,这也是 @lonepig 同学想说的:要有好天线呀!