有 Linux 无线电标准吗?
Posted
技术标签:
【中文标题】有 Linux 无线电标准吗?【英文标题】:Is there a Linux radio standard? 【发布时间】:2013-02-01 01:36:10 【问题描述】:我们即将着手实施一种运行 Linux 的设备,该设备(除其他外)将连接到软件定义的 FM/AM 收音机,该收音机还可以接收描述播放列表和其他此类内容的 RDS 数据。这是一个相对愚蠢的设备,主要包含一个或两个用作调谐器的 DSP,否则对信号的处理很少。
我在想设备的内核驱动程序,然后是用户级硬件抽象层,它提供了一个标准化的接口,并抽象出接收 RDS 数据的确切时间的细节,并处理错误处理和所有其他杂乱的东西。是否已经有这样的用户层?要么完全避免制作它,要么让我们的东西与已经存在的东西兼容,这样我们就可以根据需要将其他项目用于广播 UI。
【问题讨论】:
sdr.osmocom.org/trac/wiki/rtl-sdr @IgnacioVazquez-Abrams - 谢谢,这似乎是另一个 SDR 项目,但他们似乎没有我正在寻找的用户层。嗯……也许还没有? 我将在太平洋标准时间 17:30(又名 UTC -0800)附近的某个时间颁发赏金。 @Omnifarious:添加了最后一个链接:RDS reception using SDR。希望这会有所帮助! 【参考方案1】:Linux 中的无线电支持
听起来您正在创建一个新的硬件无线电设备?您可能需要为此设备构建驱动程序。可以在 here、here 和 here 找到一些入门帮助。如果您的设备不是新设备,它可能已经有driver in the Video4Linux2 project。
目前貌似有一些基于saa6588内核模块的RDS相关项目。
根据this page,这些卡目前有一个SAA6588芯片组:
Terratec Cinergy 600 KNC ONE 电视台 RDS KNC 一台电视台 DVR 台风电视调谐器卡 RDS Sundtek MediaTV Pro(制造商支持) Sundtek USB FM Radio(FM 发射器/接收器,制造商支持)RDS 特定信息
我建议查看一些与 Video4Linux2 (v4l2) 相关的项目,有一个 RDS decoding 库。该库在用户空间中运行,因此可以为您完成 RDS 解码工作:
根据 V4L2 规范,读取来自 RDS 解码器的原始数据 从无线电设备。数据由块组成,每个块为 3 字节长。所有解码都必须在用户空间中完成。
RDS API
这是complete API reference for Video4Linux2。这是article series to get acquainted with it。
RDS API is here 的特定部分。此页面提供有关如何获取有关 RDS 数据是否可用的更新的信息:
可以通过查看 struct v4l2_tuner 的 rxsubchans 字段来检测是否存在 RDS 信号:如果检测到 RDS 数据,将设置 V4L2_TUNER_SUB_RDS。
Gnu Radio Companion 中的 SDR RDS 解码器 DSP
虽然它不是官方 API,但我发现了最后一个可能值得研究的小项目:
RDS reception using SDRHere are some more radio related projects值得研究。
【讨论】:
那么,看起来 V4L2 为用户空间中的 RDS 数据指定了标准接口? RDS 的问题之一当然是部分接收两种不同的标准以及其他各种令人头疼的问题。如果使用无线电的程序根本不必处理这个问题,并且在 RDS 数据可用时获得更新,那就太好了。 V4L2 是否指定了一个标准的用户界面,以便客户可以假装 RDS 简单易用? 是的,看起来我们将编写自己的驱动程序。我们使用的硬件是基于 USB 的,目前似乎根本不受支持。如果我能确切地确定我可以公开多少关于我们的项目,我会更加开放。 :-) @Omnifarious:我认为您可能正在从事一个专有项目 ;-) 遗憾的是,许多硬件仍然存在于专有版权保护之下,我觉得这可能是有时微不足道的支持的原因Linux 中的此类硬件。为了回答您的问题,我添加了另一个指向 RDS API 的链接 好吧,我将尝试让他们使用 GPL。有一些非常好的理由这样做。部分原因是我们的核心业务并不是真正做广播。 很高兴听到这个消息!如果项目成为公共领域,这也有助于降低未来的维护成本,并为全球社区增加价值。双赢方案^_^【参考方案2】:GENIVI 联盟 (http://www.genivi.org/) 是否有这方面的标准应用程序可能值得研究。他们正在开发专门用于汽车“信息娱乐”目的的此类标准,这似乎属于他们的标准化领域。
不幸的是,他们似乎没有公开发布他们的东西,所以您可能需要四处打听或直接向他们发送电子邮件。
【讨论】:
这很有趣,值得研究。谢谢。【参考方案3】:GNU Radio 怎么样?他们为许多软件定义的无线电组件提供硬件支持,并且通过 GUI 与他们的“GNU Radio Companion”(GRC)轻松连接数据流。
他们使用可用于您的 UI 层的 Python 和 C++ API。网上有很多例子。
【讨论】:
以上是关于有 Linux 无线电标准吗?的主要内容,如果未能解决你的问题,请参考以下文章