RTL-SDR

出自 ArchWiki

RTL-SDR 是一套工具,它使得基于 Realtek RTL2832U 芯片组的 DVB-T USB 加密狗能够作为廉价的软件无线电使用,因为该芯片允许将原始 I/Q 采样数据从调谐器直接传输到主机设备。

请参阅 RTL-SDR wiki 以获取精确的技术规格。

安装

最新的稳定 RTL-SDR 版本可以从 rtl-sdr 安装。

前沿版本在 rtl-sdr-gitAUR 上。

注意: RTL-SDR 与内核中现有的 DVB-T 驱动程序冲突,并在安装时将相关的驱动程序列入黑名单,这可以在 /usr/lib/modprobe.d/rtlsdr.conf 中看到。要将加密狗与原始 DVB-T 驱动程序一起使用,需要手动加载它们,请参阅 DVB-T#驱动程序

udev 规则安装在 /usr/lib/udev/rules.d/10-rtl-sdr.rules,并设置适当的权限,以便非 root 用户可以访问该设备。

提示: 官方 RTL-SDR 软件不包含红外模块。如果需要,应该使用这个 fork,它包含一个 rtl_ir 模块。

rngd 默认声明 rtlsdr 设备 - 在 /etc/conf.d/rngd 中使用 RNGD_OPTS="--exclude rtlsdr" 排除其使用

使用

执行一个简单的测试,并确保加密狗工作正常且没有丢失样本

$ rtl_test

原始样本可以直接捕获到文件(或 fifo),例如调谐到 123.4MHz 并捕获 1.8M 样本/秒

$ rtl_sdr capture.bin -s 1.8e6 -f 123.4e6

调谐到您最喜欢的广播电台,并通过管道传输到 sox 以获得音频

$ rtl_fm -f 102.7e6 -M wbfm -s 200000 -r 48000 - | aplay -r 48000 -f S16_LE


在无头服务器上使用

要在 ssh 上使用 RTL SDR 设备,请将您登录的用户添加到 rtlsdr 用户组

现在,注销并重新登录到一个新的 ssh 会话。可以使用以下命令列出您的用户所属的组

# groups

如果 rtlsdr 组显示出来,则当前用户现在应该能够使用任何通过 ssh 使用 RTL SDR USB 设备的应用程序。

请注意,如果您通过 TTY 或 GUI 登录管理器登录到您的系统,则不必成为 rtlsdr 组的成员。在这种情况下,/usr/lib/udev/rules.d/10-rtl-sdr.rules 配置文件中的 TAG+="uaccess" 部分负责授予您对 RTL SDR USB 设备的访问权限。有关此的更多详细信息,请参见 archlinux/packaging/packages/rtl-sdr#1

应用

一些使用 RTL-SDR 的流行应用

  • gqrx - 一款流行的 SDR 接收器,带有用于 Linux 的瀑布图 GUI
  • urh - 用于无线协议调查的完整套件,原生支持许多常见的 SDR
  • dump1090-gitAUR - 一款轻量级的 ModeS (1090Mhz) 解码器
  • multimon-ng - 一款用于各种数字模式的解码器
  • rtl_433 - 协议感知接收器,用于多种 设备。支持自动数据包拦截和协议分析器,用于逆向工程。
  • rng-tools - 随机数生成器相关实用程序
  • sdrpp-gitAUR - 具有许多功能的 SDR 接收器应用程序。

故障排除

当使用某些调谐器(如通用/无品牌“DVB”设备)时,即使在低增益水平下,信号也可能很容易过载。这是官方 rtl-sdr 软件包 2.0.1 版本开始出现的问题,该版本从 fork 切换到官方 Osmocom 仓库。要解决此问题,必须将软件包 降级 到 0.8.0-6 版本,或者使用 rtl-sdr-librtlsdr-gitAUR 软件包,该软件包指向没有此问题的 fork 仓库。任何使用 rtl-sdr 软件包中库的应用程序都必须针对备用软件包重新构建。