7.19. Silicon Labs Si470x FM 收音机接收器驱动程序

版权所有 © 2009 Tobias Lorenz <tobias.lorenz@gmx.net>

7.19.1. 来自 Silicon Labs 的信息

Silicon Laboratories 是无线电 IC 的制造商,这些 IC 现在是手机中最常用的无线电接收器。通常它们通过 I2C 连接。但 SiLabs 还提供了一个参考设计,该设计集成了此 IC 以及一个小型微控制器 C8051F321,以形成 USB 无线电。此参考设计的一部分还包括一个二进制和源代码形式的无线电应用程序。该软件还包含自动固件升级到最新版本的功能。有关这些的信息可以在此处下载:http://www.silabs.com/usbradio

7.19.2. 支持的 IC

以下 IC 具有非常相似的寄存器集,因此它们现在或将来会被驱动程序支持

  • Si4700:FM 收音机接收器

  • Si4701:FM 收音机接收器,支持 RDS

  • Si4702:FM 收音机接收器

  • Si4703:FM 收音机接收器,支持 RDS

  • Si4704:FM 收音机接收器,无需外部天线

  • Si4705:FM 收音机接收器,无需外部天线,支持 RDS,数字 I/O

  • Si4706:增强型 FM RDS/TMC 收音机接收器,无需外部天线,支持 RDS

    支持

  • Si4707:专用天气波段收音机接收器,带 SAME 解码器,支持 RDS

  • Si4708:最小的 FM 接收器

  • Si4709:最小的 FM 接收器,支持 RDS

有关这些的更多信息可以在此处下载:http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx

7.19.3. 支持的 USB 设备

目前已知以下带有 Silicon Labs si470x 芯片的 USB 无线电(供应商:产品)可以正常工作

  • 10c4:818a:Silicon Labs USB FM 收音机参考设计

  • 06e1:a155:ADS/Tech FM 收音机接收器(以前的 Instant FM Music)(RDX-155-EF)

  • 1b80:d700:KWorld USB FM 收音机 SnapMusic Mobile 700 (FM700)

  • 10c5:819a:Sanei Electric, Inc. FM USB 收音机(以 DealExtreme.com PCear 的名义销售)

7.19.4. 软件

测试通常在 Debian/testing 下使用大多数应用程序进行

  • fmtools - 用于管理 FM 调谐器卡的实用程序

  • gnomeradio - 用于 GNOME 桌面的 FM 收音机调谐器

  • gradio - GTK FM 收音机调谐器

  • kradio - KDE 的舒适无线电应用程序

  • radio - 基于 ncurses 的无线电应用程序

  • mplayer - Linux 的终极电影播放器

  • v4l2-ctl - 命令行 video4linux 实用程序集合

例如,您可以使用

v4l2-ctl -d /dev/radio0 --set-ctrl=volume=10,mute=0 --set-freq=95.21 --all

还有一个库 libv4l,可以使用它。它将有一个用于频率搜索的功能,可以通过使用硬件功能(如 radio-si470x)或通过实现一个功能(如我们目前在每个提到的程序中所拥有的功能)来实现。将来,无线电程序应该使用 libv4l。

为了处理 RDS 信息,有一个正在进行的项目:http://rdsd.berlios.de/

目前还没有将 TMC 语句转换为人类可读形式的项目。

7.19.5. 音频列表

USB 音频由 ALSA snd_usb_audio 模块提供。建议同时选择 SND_USB_AUDIO,因为这是从收音机获取声音所必需的。对于列表,您必须重定向声音,例如使用以下命令之一。请根据您的需要调整音频设备(/dev/dsp* 和 hw:x,x)。

如果您只想测试音频(质量很差)

cat /dev/dsp1 > /dev/dsp

如果您使用 sox + OSS,请尝试

sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp

或使用 sox + alsa

sox --endian little -c 2 -S -r 96000 -t alsa hw:1 -t alsa -r 96000 hw:0

如果您使用 arts,请尝试

arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -

如果您使用 mplayer,请尝试

mplayer -radio adevice=hw=1.0:arate=96000 \
        -rawaudio rate=96000 \
        radio://<frequency>/capture

7.19.6. 模块参数

加载模块后,您仍然可以在 /sys/module/radio_si470x/parameters 下的 sysfs 挂载中访问其中的一些参数。即使使用私有视频控件更改了空间、频段和 de,只读文件 (0444) 的内容也不会更新。其他的是运行时可更改的。

7.19.7. 错误

如果您经常收到 -EIO 错误,请增加 tune_timeout。

当超时或达到频段限制时,hw_freq_seek 返回 -EAGAIN。

如果您收到来自 snd_usb_audio 的任何错误,请向 ALSA 人员报告。

7.19.8. 未解决的问题

V4L 次要设备分配和参数设置并不完美。目前正在讨论解决方案。

有一个 USB 接口用于下载/上传新的固件映像。可以使用 request_firmware 接口实现对其的支持。

有一个 RDS 中断模式。驱动程序已经使用相同的接口来轮询 RDS 信息,但目前未使用中断模式。

有一个 LED 接口,可用于覆盖固件中编程的 LED 控制。可以使用内核中的 LED 支持功能来实现此功能。